C++ 第3章 数组与指针

合集下载

指针和数组的关系

指针和数组的关系

指针和数组的关系
指针和数组是C语言中非常重要的概念,理解它们对于编写高效程序和避免常见错误
至关重要。

指针和数组的关系可以说是紧密相连的,因为数组名本质上就是一个指针。

在C语言中,数组名表示一个指向该数组第一个元素的指针,也就是数组的起始地址。

因此,如果我们定义一个数组a,那么&a和a是等价的,都表示数组第一个元素的地址。

例如,定义一个整型数组a:
int a[5] = {1, 2, 3, 4, 5};
我们可以通过数组名a访问数组中的元素。

例如,a[0]表示数组中的第一个元素,即1。

在C语言中,数组名本身是一个常量,即不能对其进行修改。

但是,我们可以使用指
针来访问数组中的元素,这就需要对指针进行加减运算来实现。

我们可以定义一个指向数组a的指针p,然后通过指针访问数组中的元素。

例如,*p
表示指针p所指向的数组的第一个元素,即1。

我们可以通过p++将指针p指向数组中的下一个元素,例如*p++表示指向数组中的第二个元素,即2。

因此,数组名和指针在C语言中是紧密相关的,数组名本质上就是一个指向数组第一
个元素的指针。

我们可以通过指针访问数组中的元素,并通过加减运算实现对数组的遍
历。

在实际编程中,使用指针可以提高程序的效率和灵活性。

使用指针可以避免对数组名
的重复引用,从而减少程序的存储空间和运行时间开销。

但是,指针操作也比较容易出现指针越界、空指针等错误,因此在使用指针时需特别
注意,避免出现不必要的错误。

第3章 C51的指针

第3章 C51的指针

C51的指针指针是C语言的一个特殊的变量,它存储的数值被解释成为内存的一个地址。

指针定义的一般形式如下。

数据类型*指针变量名;例如:int i,j,k,*i_ptr; //定义整型变量i,j,k和整型指针变量i_ptr。

指针运算包括以下两种:(1)取地址运算符。

取地址运算符&是单目运算符,其功能是取变量的地址,例如:i_ptr=&i; //变量i的地址送给指针变量i_ptr(2)取内容运算符。

取内容运算符“*”是单目运算符,用来表示指针变量所指单元的内容,在星号“*”运算符之后跟的必须是指针变量。

例如:j=*i_ptr; //将i_ptr所指的单元的内容赋给变量j可以把数组的首地址赋予指向数组的指针变量。

例如:int a[5],*ap;ap=a; //数组名表示数组的首地址,故可赋予指向数组的指针变量也可以写成:ap=&a[0]; //数组第一个元素的地址也是整个数组的首地址,也可赋予指针变量ap 还可以采用初始化赋值的方法:int a[5],*ap=a;也可以把字符串的首地址赋予指向字符类型的指针变量。

例如:unsigned char *cp;cp="Hello World!";这里应该说明的是,并不是把整个字符串装入指针变量,而是把存放该字符串的字符数组的首地址装入指针变量。

对于指向数组的指针变量,可以进行加减运算,例如:cp--; //cp指向上一个数组元素ap++; //ap指向下一个数组元素例如:定义了指针类型的形式参数如下:uchar *str;该形式参数表示一个无符号字符型变量的地址。

可以采用以下赋值语句:SBUF=*(str+k); //将单元地址为str+k的内容赋给专用寄存器SBUF,启动发送在调用该函数时,直接把数组trdata[]的数组名作为实际参数代入即可,因为数组名表示数组的首地址,故可直接赋予指向数组的指针变量。

数组和指针的区别

数组和指针的区别

数组和指针的区别数组和指针是C语言中非常重要的两个概念,它们在编写程序时起着极其重要的作用。

虽然它们在某种程度上非常相似,但它们之间也存在着很多的差异,下面我们就来分析一下它们的区别。

1. 定义方式数组是由一组具有相同类型的数据元素所组成的有序集合,每个元素具有相同的数据类型,可以通过下标在数组中访问对应的元素。

在C中,定义一个数组可以使用以下语句:```int arr[10];```这个语句定义了一个名为arr的整型数组,这个数组有10个元素。

而指针是一个变量,它存放了一个内存地址,这个地址与它存储的数据类型有关。

在C中,定义一个指针可以使用以下语句:```int *p;```这个语句定义了一个名为p的指针,这个指针指向一个整型变量。

2. 内存分配数组在定义时要求需要一定的内存空间来存储数组元素,因此在定义时就已经确定了内存空间的大小,且数组的大小不可改变。

例如,如果定义一个大小为10的数组,则它的大小就是10,无论实际使用时需要存储的元素个数是多少,数组的大小都不会改变。

而指针在定义时只需要分配一个指针变量所需的内存空间,该指针可以在程序运行时动态地分配内存,因此指针所指向的内存空间大小不确定,需要在运行时根据需要动态地分配或释放空间。

3. 访问方式在数组中,可以通过数组的下标来访问数组中具体的元素,下标从0开始,最大下标为数组大小减1。

例如,访问arr数组中的第三个元素可以写成:arr[2]。

而对于指针,可以通过指针变量所指向的地址来访问该地址所对应的值。

例如,访问p指针所指向地址上的整型变量可以写成:*p。

4. 传递方式在函数调用时,数组可以通过值传递或指针传递来传递数组的值。

如果数组作为参数传递给函数时,实际上传递的是该数组的地址,即使数组非常大,也不会导致栈溢出。

而对于指针,只能通过指针传递方式来传递指针变量的值,在函数内部可以通过指针来修改该指针所指向的地址所存储的值,因此指针可以用来传递地址或修改变量的值。

C语言指针数组介绍定义指针数组输入输出指针数组

C语言指针数组介绍定义指针数组输入输出指针数组

C语言指针数组介绍定义指针数组输入输出指针数组C语言中,指针数组是一种特殊的数组类型,其中数组的每个元素都是一个指针。

指针数组允许我们存储和操作一组指针,以及通过指针访问和操作内存中的数据。

本文将介绍指针数组的定义、输入输出和常见用途。

1.定义指针数组定义指针数组的语法如下:```数据类型*数组名[大小];```其中,`数据类型`是指针指向的数据类型,`数组名`是指针数组的名称,`大小`是指针数组的大小(即元素个数)。

举个例子,如果想定义一个包含5个整型指针的指针数组,可以这样做:```int *ptrArray[5];```这个定义表示`ptrArray`是一个包含5个整型指针的数组。

输入指针数组的常见方式是使用循环结构逐个为数组元素赋值,可以使用`scanf`函数进行输入。

```for (int i = 0; i < size; i++)scanf("%d", &ptrArray[i]);```输出指针数组的常见方式是使用循环结构逐个打印数组元素的值,可以使用`printf`函数进行输出。

```for (int i = 0; i < size; i++)printf("%d\n", *ptrArray[i]);```注意这里要使用`*`操作符来访问指针指向的值。

3.指针数组的常见用途指针数组在程序设计中具有广泛的应用。

下面是一些常见的用途:-字符串数组:可以通过定义一个指针数组来存储一组字符串,每个元素都是一个指向字符串的指针。

```char *stringArray[5] = {"Hello", "World", "C", "Language", "Pointer"};```-函数指针数组:可以使用指针数组来存储不同函数的指针,以便在运行时根据需要调用特定的函数。

全的C语言指针详解PPT课件

全的C语言指针详解PPT课件

在函数中使用指针参数
03
使用指针参数来访问和修改指针所指向的内容,需要使用“-
>”或“*”运算符。
05
指针的高级应用
指向指针的指针(二级指针)
定义与声明
二级指针是用来存储另一个指 针的地址的指针。在声明时, 需要使用`*`操作符来声明二级
指针。
初始化与使用
通过使用`&`操作符获取一个指 针的地址,并将该地址存储在 二级指针中。然后,可以通过 二级指针来访问和操作原始指
当使用malloc或calloc等函 数动态分配内存后,如果 不再需要该内存,必须使 用free函数释放它。否则, 指针将指向一个无效的内 存地址。
当一个指针在函数中定义 ,但该函数返回后仍然存 在并继续指向无效的内存 地址时,就会产生野指针 。
避免指针越界访问
总结词:指针越界访问是指试图访问数 组之外的内存,这是不安全的,可能会 导致程序崩溃或产生不可预测的结果。
指针与内存分配
通过指针来访问和操作动态分配的内存空间。指针可以 存储动态分配的内存地址,并用于读取和写入该地址中 的数据。
指向结构体的指针
01
定义与声明
指向结构体的指针是指向结构体类型的指针。在声明时,需要使用结
构体类型的名称来声明指向结构体的指针。
02 03
初始化与使用
通过使用`&`操作符获取结构体的地址,并将该地址存储在指向结构 体的指针中。然后,可以通过该指针来访问和操作结构体中的成员变 量。
```
பைடு நூலகம்
指向数组元素的指针
• 指向数组元素的指针是指向数组中某个具体元素的指针。通过将指针指向数组中的某个元素,可以访问该 元素的值。
• 指向数组元素的指针可以通过定义一个指向具体元素的指针来实现。例如,定义一个指向数组中第三个元 素的指针,可以使用以下代码

C语言各章节知识点总结

C语言各章节知识点总结

C语言各章节知识点总结C语言是一种常用的编程语言,广泛应用于操作系统、嵌入式系统、网络设备等领域。

下面是C语言各章节的知识点总结。

第一章:C语言概述1.C语言的起源和发展历史。

2.C语言的特点和优势。

3.C语言的应用领域和重要性。

4.C语言的编译过程和基本语法规则。

第二章:基本数据类型和运算符1.C语言的基本数据类型,如整型、浮点型、字符型等。

2.基本数据类型的存储范围和格式化输出。

3.C语言的运算符和运算符优先级。

4.表达式和赋值语句。

第三章:控制语句1. 条件语句,如if语句、switch语句。

2. 循环语句,如for循环、while循环、do-while循环。

3. 循环控制语句,如break语句、continue语句。

第四章:数组和指针1.数组的定义和初始化。

2.一维数组和二维数组的使用。

3.字符数组和字符串的处理。

4.指针的定义和操作。

5.数组和指针的关系。

第五章:函数1.函数的定义和调用。

2.函数的参数传递和返回值。

3.局部变量和全局变量。

4.递归函数和函数指针。

5.函数库的使用。

第六章:结构体和共用体1.结构体的定义和初始化。

2.结构体的访问和操作。

3.结构体数组和结构体指针。

4.共用体的定义和使用。

第七章:文件操作1.文件的打开和关闭。

2.文件的读写操作。

3.文件指针和文件的定位。

4.随机访问文件。

5.文件的错误处理和异常处理。

第八章:预处理和编译1.C语言的预处理指令和宏定义。

2.头文件的引用和包含。

3.条件编译和预处理器的工作过程。

4.编译和链接的过程。

第九章:动态内存管理1.动态内存分配和释放。

2. malloc函数和free函数的使用。

3.内存泄漏和内存溢出的问题。

4.堆和栈的区别和管理。

第十章:指针的高级应用1.指针数组和指向指针的指针。

2.函数指针和回调函数。

3.结构体指针和链表的操作。

4.动态内存分配和指针的应用。

第十一章:位运算和位域1.位运算的基本操作,如与、或、非、移位等。

理解C语言(一)数组、函数与指针

理解C语⾔(⼀)数组、函数与指针1 指针⼀般地,计算机内存的每个位置都由⼀个地址标识,在C语⾔中我们⽤指针表⽰内存地址。

指针变量的值实际上就是内存地址,⽽指针变量所指向的内容则是该内存地址存储的内容,这是通过解引⽤指针获得。

声明⼀个指针变量并不会⾃动分配任何内存。

在对指针进⾏间接访问前,指针必须初始化: 要么指向它现有的内存,要么给它分配动态内存。

对未初始化的指针变量执⾏解引⽤操作是⾮法的,⽽且这种错误常常难以检测,其结果往往是⼀个不相关的值被修改,并且这种错误很难调试,因⽽我们需要明确强调: 未初始化的指针是⽆效的,直到该指针赋值后,才可使⽤它。

 int *a;*a=12; //只是声明了变量a,但从未对它初始化,因⽽我们没办法预测值12将存储在什么地⽅int *d=0; //这是可以的,0可以视作为零值int b=12;int *c=&b;另外C标准定义了NULL指针,它作为⼀个特殊的指针常量,表⽰不指向任何位置,因⽽对⼀个NULL指针进⾏解引⽤操作同样也是⾮法的。

因⽽在对指针进⾏解引⽤操作的所有情形前,如常规赋值、指针作为函数的参数,⾸先必须检查指针的合法性- ⾮NULL指针。

解引⽤NULL指针操作的后果因编译器⽽异,两个常见的后果分别是返回置0的值及终⽌程序。

总结下来,不论你的机器对解引⽤NULL指针这种⾏为作何反应,对所有的指针变量进⾏显式的初始化是种好做法。

如果知道指针被初始化为什么地址,就该把它初始化为该地址,否则初始化为NULL在所有指针解引⽤操作前都要对其进⾏合法性检查,判断是否为NULL指针,这是⼀种良好安全的编程风格1.1 指针运算基础在指针值上可以进⾏有限的算术运算和关系运算。

合法的运算具体包括以下⼏种: 指针与整数的加减(包括指针的⾃增和⾃减)、同类型指针间的⽐较、同类型的指针相减。

例如⼀个指针加上或减去⼀个整型值,⽐较两指针是否相等或不相等,但是这两种运算只有作⽤于同⼀个数组中才可以预测。

指针与数组


3.通过一个行指针变量引用二维数组的元素
定义一个由m个元素组成的一维数组的指 针变量的一般形式:
类型标识符 (*指针变量名)[m];
注意:*p两侧的圆括号不可缺少。 例如:假若有语句 int a[2][3], (*p)[3]; p=a;
则:⑴ p是一个指向由3个整型元素组成的一 维数 组的指针变量。
方法ain() { int a[10]={54,65,8,2,3,56,8,21,57,98},i;
for(printf("\n"),i=0;i<10;i++) printf("%4d",*(a+i)); }
方法三:用指针变量指向数组元素
main() { int a[10]={54,65,8,2,3,56,8,21,57,98},*p,i;
⑵ p指向a数组,p+1指向数组a的下一行首地 址,a和p的基类型相同,则a数组中任意元 素a[i][j]还可以如下表示: *(p[i]+j) 、*(*(p+i)+j) 、(*(p+i))[j] 、p[i][j]
例:使用行指针变量访问数组元素。
main() {
float fa[5][10], (*pf)[10]=fa; int i,j; for(i=0; i<5; i++)
C语言程序设计
指针与数组
1.1 一维数组的指针
数组的指针 :是数组的起始地址。
数组元素的指针 :是数组元素的地址。 当指针变量指向数组或数组元素时,它就是指 向数组的指针变量。
C规定: ⑴数组名代表数组的首地址(起始地址),
也就是第一个元素的地址。
⑵当指针变量p指向数组时,p+1指向数组 的下一个元素。假设一个整型元素占两 个字节,p+1是使p的地址加2个字节。

数组和指针

● 数组:数组是具有一定顺序关系的若干对象的集合体,组成数组的对象称为该数组的元素。

▲ 每个元素有n个下标的数组称为n维数组。

▲ a[100]:下标从0开始,到99止,不能为100。

▲ a[i][j]:i为行标,j为下标。

● 数组的声明:数组类型数组名[表达式1][表达式2]……● 数组的使用:数组类型数组名[表达式1][表达式2]……● 数组的存储:数组元素在内存中是顺序、连续存储的。

● 数组的初始化:就是在声明数组时给部分或全部元素赋初值。

▲ int a[3]={1,2,3}; 等价于 int[]{1,2,3};▲ int a[5]={1,2,3}; //部分初始化,必须连续,不能间隔赋初值▲ int a[2][3]={1,2,3,4,5,6}; 等价于 int a[][3]={1,2,3,4,5,6} //给出全部的初值时,行标可省▲ int a[2][3]={{1,2},{3,4},{5,6}};● 数组作为函数参数▲ 使用数组名传递数据时,传递的是地址▲ 使用数组名做函数的参数,则实参和形参都应该是数组名,且类型要相同▲ 对形参数组的修改,也就是对实参数组的修改▲ int ss(int a[][4],int bb) 调用:ss(b,x); //b是数组,x传递的是第一维的维数● 对象数组▲ 声明:类名数组名[下标表达式]▲ 引用:数组名[下标].成员名▲ 当一个数组中的元素对象被删除时,系统会调用析构函数来完成扫尾工作。

● 指针:是对地址直接操作的手段。

动态内存分配和管理也离不开指针● 指针类型:用来存放内存单元地址的变量类型,就是指针类型。

● 指针变量的声明:数据类型 *标识符;● 与地址相关的运算——"*"和"&"▲ "*"称为指针运算符(也称解析(dereference)),表示获取指针所指向的变量的值,是一元操作符。

C语言指针用法详解

C语言指针用法详解C语言指针用法详解指针可以说是集C语言精华之所在,一个C语言达人怎么可以不会指针呢。

下面店铺给大家介绍C语言指针用法,欢迎阅读!C语言指针用法详解(1)关于指针与数组的存储a、指针和数组在内存中的存储形式数组p[N]创建时,对应着内存中一个数组空间的分配,其地址和容量在数组生命周期内一般不可改变。

数组名p本身是一个常量,即分配数组空间的地址值,这个值在编译时会替换成一个常数,在运行时没有任何内存空间来存储这个值,它和数组长度一起存在于代码中(应该是符号表中),在链接时已经制定好了;而指针*p创建时,对应内存中这个指针变量的空间分配,至于这个空间内填什么值即这个指针变量的值是多少,要看它在程序中被如何初始化,这也决定了指针指向哪一块内存地址。

b、指针和数组的赋值与初始化根据上文,一般情况下,数组的地址不能修改,内容可以修改;而指针的内容可以修改,指针指向的内容也可以修改,但这之前要为指针初始化。

如:int p[5];p=p+1; 是不允许的而p[0]=1; 是可以的;//int *p;p=p+1; 是允许的p[0]=1; 是不允许的,因为指针没有初始化;//int i;int *p=&i;p[0]=1; 是允许的;对于字符指针还有比较特殊的情况。

如:char * p="abc";p[0]='d'; 是不允许的为什么初始化了的字符指针不能改变其指向的内容呢?这是因为p 指向的是“常量”字符串,字符串"abc"实际是存储在程序的静态存储区的,因此内容不能改变。

这里常量字符串的地址确定在先,将指针指向其在后。

而char p[]="abc";p[0]='d'; 是允许的这是因为,这个初始化实际上是把常量直接赋值给数组,即写到为数组分配的内存空间。

这里数组内存分配在先,赋值在后。

(2)关于一些表达式的含义char *p, **p, ***p;char p[],p[][],p[][][];char *p[],*p[][],**p[],**p[][],*(*p)[],(**p)[],(**p)[][];能清晰地知道以上表达式的含义吗?(知道的去死!)第一组:char *p, **p, ***p;分别为char指针;char*指针,即指向char*类型数据地址的指针;char**指针,即指向char**类型数据的指针;他们都是占4字节空间的指针。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

执行程序: 按行输入5行5列数组: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 按行输出数组 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 和=125
不 用 数 组
如果这个班有50名学生?
3.1 数组
• 问题:已知一个班5名学生某门课的成绩,请统计成绩高 于平均分的学生数。
#include <iostream.h> void main(){ const int N=5; double s[N],ave=0; int count=0; for(int i=0;i<N;i++){ cin>>s[i]; ave+=s[i]; } ave/=N; for(i=0;i<N;i++) if(s[i]>ave)count++; cout<<"高于平均分的人数是:"<<count<<endl; }
}
例3.5 向二维数组array中输入数据,输出该二维数 组,并求数组中所有元素和。
#include <iostream.h> void main(){ int array[5][5]; cout<<"按行输入5行5列数组\n"; for( int i=0; i<5; i++) for (int j=0; j<5; j++) cin>>array[i][j]; //按行输入二维数组 cout<<"按行输出数组\n"; for(i=0; i<5; i++) { for( int j=0; j<5; j++) cout<<array[i][j]<<" "; cout<<endl; //输出每行后换行 } int sum(0); for(i=0; i<5; i++) for( int j=0; j<5; j++) sum+=array[i][j]; cout<<"和="<<sum<<endl; }
例3.4:输入10个整数,输出其中的最大值和最小值。
输入数据:4 6 8 23 53 51 60 46 78 12 输出:
最大值=78
最小值=4
#include <iostream.h> void main( ){ int a[10],amax,amin; cout<<“输入10个数:” for (int i=0; i<10; i++) cin>> a[i]; amax=amin= a[0]; i=1; while(i<10){ if(a[i]>amax) amax=a[i]; if(a[i]<amin) amin= a[i]; i++;} cout<<“最大值=”<<amax<<endl; cout<<“最小值=”<<amin<<endl;

元素个数、第1维大小、第2维大小均为常量表达式。 二维数组中,元素的个数=第1维大小*第2维大小

例: char s[10]; int a[5][5];
//一维字符型数组 //二维整型数组
2.数组元素的引 用 形式
一维数组:数组名[下标]
二维数组:数组名[行下标][列下标]

注意
下标必须是整型常数、整型变量或整型表达式。
使 用 数 组
3.1 数组

数组

一组具有相同名字、不同下标、个数固 定的同类型变量的集合 数组中的一个变量
数组元素的类型 确定数组中各元素之间相对位置的下标 个数

数组元素


数组的类型


数组的维数

1.数组的定义



一维数组 <类型名> 数组名[元素个数]; 二维数组 <类型名> 数组名[第1维个数减1。
下标不要越界
例1:一维数组举例。 int a[5]; ✿ 分配给数组 a 空间如下所示。 数组元素名 数组 a 数组元素下标 0 1 2 3 4
a[0] a[1] a[2] a[3] a[4]
例2:二维数组举例。
int x[3][3];
✿ 可以把 x 数组的 9个元素看作是3行、3列的矩阵,元素行
一片连续的存储空间内。 x 数组存储情况示意图如下:
x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] x[2][0] x[2][1] x[2][2]
例3:将斐波那契数的前20项存入一个一维数组然后输出。 #include <iostream.h>
void main( ){
字符数组的初始化
以下几种初始化形式是等效的:
char char char char ch[6]={„t‟,’o‟,’t‟,’a‟,’l‟,’\0‟};
ch[6]=“total”;//保证元素个数〉=字符串长度+1 ch[ ]=“total”; //最常用的形式 ch[ ]= {“total”};
int int int int

二维数组的初始化
int int int int int
例3.1 求10个数的总和及平均值
#include <iostream.h> void main( ){ int array[10]={65,87,90,80,84,85,53,46,95,70}; int sum(0), average; for (int i=0; i<10; i++) //变量i控制数组下标的变化 sum+=array[i]; average=sum/10; cout<<” 总和=”<<sum<<endl; cout<<”平均值=”<<average<<endl; }

基本形式 基本规则

类型名 数组名[常量表达式1][常量表达式2][…] ={初值列表}




按元素的存储顺序对应赋值 初值的个数不能多于数组定义的元素个数 初值的个数少于数组定义的元素个数时,未赋值的元素自 动赋0 可以省略数组说明中第一维的元素个数,元素个数由初值 个数确定
数值数组的初始化形式举例
int a[20]; a[0]=0; a[1]=1;
for(int i=2;i<20;i++)//计算各项的值
a[i]=a[i-1]+a[i-2]; for(i=0;i<20;i++) //输出各项的值
cout<<a[i]<<“ ”;
cout<<endl; }
3.数组的初始化

作用

声明数组时给数组元素赋值,程序执行过程中可以更改。
、列下标的值也是由 0 开始,x 数组元素形成的矩阵为:
x[0][0] x[0][1] x[0][2] —— 0行 x[1][0] x[1][1] x[1][2] —— 1行 x[2][0] x[2][1] x[2][2] —— 2行

0列
1列
2列
C++中,二维数组中的元素按行优先顺序被依次地存放在
#include <iostream.h> void main(){ int array[5][5]; int i,j; cout<<"按行输入5行5列数组\n"; for( i=0; i<5; i++) for (j=0; j<5; j++) cin>>array[i][j]; //按行输入二维数组 cout<<"按行输出数组\n"; for(i=0; i<5; i++) { for(j=0; j<5; j++) cout<<array[i][j]<<" "; cout<<endl; //输出每行后换行 } int sum(0); for(i=0; i<5; i++) for(j=0; j<5; j++) sum+=array[i][j]; cout<<"和="<<sum<<endl; }
例3.2 求二维数组中每行元素的和并输出
数据: 1.2 1.5 1.7 1.9 2.0 2.4 2.6 2.8 3.2 3.6 3.7 3.8 输出结果: 第1行和: 6.3 第2行和: 9.8 第3行和: 14.3 #include <iostream.h> void main( ){ double data[3][4]={{1.2, 1.5, 1.7, 1.9}, {2.0, 2.4, 2.6, 2.8}, {3.2, 3.6, 3.7, 3.8}}; double sum; for (int i=0; i<3; i++) { sum=0.0; for (int j=0; j<4; j++) sum+=data[i][j]; cout<<”第”<<i+1<<”行和: ”<<sum<<endl; } }
相关文档
最新文档