004-数组

上传人:油条 文档编号:1783384 上传时间:2017-07-14 格式:PPT 页数:74 大小:1.41MB
返回 下载 相关 举报
004-数组_第1页
第1页 / 共74页
004-数组_第2页
第2页 / 共74页
004-数组_第3页
第3页 / 共74页
004-数组_第4页
第4页 / 共74页
004-数组_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《004-数组》由会员分享,可在线阅读,更多相关《004-数组(74页珍藏版)》请在金锄头文库上搜索。

1、数组,1,输入100个数,输出平均值和所有大于平均值的数,首先,原始数据要保存,问题:,需要可控的变量,循环?,int a,b,c,;,2,第7章 数组,重要思想方法:,连续存放、类型相同、变量可控,m2,各元素变量名相同,用下标控制各元素的访问,内存,3,4,5,6,7,i,3,第7章 数组,数组的概念数组的定义与引用一维字符数组字符串处理函数二维字符数组编程实例,4,7.1 数组的概念,如何处理一个班学生的学习成绩?一行文字怎样存储?一个矩阵怎样存储 ?.,问题:,一组具有相同数据类型的数据的 有序集合,这些数据的特点:1. 具有相同的数据类型 2. 使用过程中需要保留原始数据 C语言为这

2、些数据提供了一种构造数据类型:数组,5,7.1 数组的概念,mark、str、a 是数组名; 下标的个数称为数组的维数; 方括号内是数组某一维的长度; 数组中所包含的元素数量即体积; 数组的成员称为数组元素; 数组元素的类型称为该数组的基类型。,例如:存储学生成绩用实型数组 mark100 存储一行文字用字符数组 str200 存储一个4*6的矩阵用二维整型数组 a46,概念:数组名,维数,长度,体积,元素,基类型,6,第7章 数组,数组的概念数组的定义与引用一维字符数组字符串处理函数二维字符数组编程实例,7,7.2 数组的定义与引用,一、数组定义,例如: float mark100; cha

3、r str200; int a46;,数据类型 数组名常量表达式1常量表达式n,基类型,维数,第1维的大小,8,7.2 数组的定义与引用,常量表达式数组元素的个数,必须是常量。,数据类型(基类型)数组元素的数据类型,下标运算符数组名后面的方括号 是下标运算符,不允许使用括号() 。,数组名:,对数组的标识,遵循C语言标识符规则,9,7.2 数组的定义与引用,二、数组定义中常见的错误, float a0; /* 数组大小为0没有意义 */ int b(2)(3); /* 不能使用圆括号 */ int k, ak; /* 不能用变量说明数组大小 */ int k=3, ak; int n; sca

4、nf (“%d”, &n); int an;,C语言不允许对数组的大小进行动态说明。 数组的定义语句必须在可执行语句之前。,#define N 5 int aNN;,10,7.2 数组的定义与引用,三、数组元素的引用,下标下标表达式的值必须是整型数据定义数组:int a10; 说明数组a一共有10个元素,数组a的10个元素分别是:a0、a1、a9,通过下标引用数组元素,格式: 数组名 下标表达式1下标表达式n,11,7.2 数组的定义与引用,定义数组:int b23; 说明数组b一共有6个元素,分别是:b00、b01、b02、b10、b11、b12。二维数组可以用来表示矩阵,b可以表示一个23

5、的矩阵:,3 2 17 6 5,12,数组中每个元素在功能上等价于一个一般变量。例如:输出100个学生成绩,并求出总成绩。,引用数组元素的注意事项:,85,82,85,63,78,90,63,85,85,148,82,7950,148,226,316,7950,数组优点:数据重用 数据有序,13,7.2 数组的定义与引用,按下标引用二维数组元素举例:,int main( ) int a23,i,j; for(i=0;i2;i+) for(j=0;j3;j+) scanf(“ %d n”, &aij); for(i=0;i2;i+) for(j=0;j3;j+) printf(“ %d n”,

6、aij); ,14,数组mark占400个字节,四、数组在内存中的存放,一维数组存放 float mark100;,每个数据元素占用的字节数,就是基类型的字节数一个元素占4个字节,15,二维数组存放:,例如:整型数组 bb33= 1,2,3, 4,5,6, 7,8,9 ;,地址 值 数组元素,先存放第 1 行的所有元素;再存放第 2 行的所有元素;最后存放第3行中的所有元素。,16,n维数组:int ca1a2.an,一般而言,多维数组的元素按行顺序存放,存储顺序是: 第一维的下标变化最慢,17,五、数组的初始化,根据数据定义数组长度 double c =1.0,2.1,3.2,4.5;,静态

7、存储数组和外部存储数组的初值自动设置为0 (一般变量也是如此),一般方法 int a6=1,2,3,4,5,6;,初始化部分元素 int b10=1,2,3; static int b10=1,2,3;,一维数组初始化,18,7.2 数组的定义与引用,二维数组初始化,int a222 = 1, 2, 3, 4, 5, 6, 7, 8;等价于:int a222 = 1,2,3,4,5,6,7,8; int a222 = 1,2,3,4,5,6,7,8;,int a23 = 1,2,3, 4,5,6 ; 结果为:a00=1, a01=2, a02=3, a10=4, a11=5, a12=6,按数

8、组在内存单元的存贮顺序赋初值,按行排列赋初值,1 2 34 5 6,19,static int a 3 = 1, 2, 3, 4, 5, 6;注意:此时只能省略第 1 维的值。C根据初始化数据的数量,自动确定第1维的大小。,初始化部分元素,static int a23 = 1, 4 ;结果为: a00=1, a10=4, 其余元素均为0。 static int a33 = 1,2, , 4,5,6 ;结果为:a00=1, a01=2, a20=4, a21=5, a22=6, 其余元素均为0。,对多维数组全部元素进行初始化时,可省略数组说明中第1维的大小。,20,7.2 数组的定义与引用,六、

9、一维数组的引用,(1) 下标与地址的关系,数组名、数组元素是两种不同性质的数据。,数组名是数组的首地址,是一个地址常量!,数组元素则是变量。,int a3;a0=1; a1=2; a2=3;,7.2 数组的定义与引用,* 和 & 运算符* :取地址所指向的内容&:取变量的地址 scanf(“%f”,&a);,21,把第一个字节的地址称为变量的地址,22,7.2 数组的定义与引用,引用数组元素的另一种方式:给出该元素的地址,取出该地址的内容,即:mark0等价于*mark,mark2等价于*(mark+ ),间接引用,2,地址的计算:2000+2*4=2008,float mark100,23,

10、int main() int a3=1,2,3; printf(%dn,a0); printf(%dn,*a); printf(%dn,a); printf(%dn,&a0); printf(%dn,a2); printf(%dn,*(a+2); printf(%dn,a+2); printf(%dn,&a0+2);,1,1,2293600,地址常量,3,3,2293608,地址常量,2293600,2293608,地址常量,地址常量,24,int main() int a3; scanf(%d,&a0); scanf(%d,a); printf(%dn,a0); printf(%dn,*a)

11、;,25,char str10;scanf (“%s”, str); printf (“%s”, str);,输入/输出数组:int x6; 正确:for (k=0; k6; k+)scanf (“%d”, &xk); for (k=0; k=5; +k)printf (“%dn”, xk); 错误:scanf (“%d%d%d%d%d%d”, x); scanf (“%d”, x); printf (“%d”, x); printf (“%d%d%d%d%d%d”, x);,(3) 对于存储于数组中的字符串可进行整体访问,(2) 对于非字符数组,要按元素访问,必须一个一个访问,26,七、二维

12、数组的引用,(1) 二维数组的地址,二维数组名 b 表示二维数组的首地址 bi 表示i行一维数组的首地址且有: bi+j &bij b+i表示i行首地址bi的地址,二维数组是数组的数组,27,元素在内存中的存储顺序,数组名称含义,一维下标的含义,二维下标的含义,b0,b1,b2,b3,b,b+1,*b *b0 *b *(b+1) b12 *(*(b+1)+2),b0+1, ,b1+2,int b43;,b0,b00,b00,b10,*(b1+2),28,(2) 按数组名引用二维数组的元素,printf(“ %d n”, bij);,printf(“ %d n”, *(bi+j);,7.2 数组的定义与引用,&b12=b1+2地址的计算:首地址+(行号*列数+列号)*类型所占字节数3000+(1*3+2)*2=300A,29,int main() int b23=1,2,3,4,5,6; printf(%dn,b00); printf(%dn,*b0); printf(%dn,*b); printf(%dn,b12); printf(%dn,*(b1+2); printf(%dn,*(*(b+1)+2);,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号