第七章数组 第七章数组 7.1一维数组潼 7.2二维数组潼 7.3字符数组潼 7.4程序举例 BACK
第七章 数 组 第七章 数 组 7.1 一维数组 7.2 二维数组 7.3 字符数组 7.4 程序举例
第七章数组 71一维数组 711一维数组的定义和引用 维数组的定义方式为蕌 类型标识符数组名[常量表达式]; 例如:inta0
第七章 数 组 7.1 一 维 数 组 7.1.1 一维数组的定义和引用 一维数组的定义方式为 类型标识符 数组名[常量表达式]; 例如: int a[10];
第七章数组 在定义数组时,需要注意的是: 同变量一样,数组也必须先定义,后使用。 定义内容:·数组名(同变量名:字母、下划线、数字; 字母或下划线开头;长度≤32) 数组名后用方括号括起常量表达式,不能用圆括号,所以 写成inta(10);是错误的,应该写成inta[10] 常量表达式表示元素的个数,即数组长度.例如在a[5] 中,5表示该数组有5个元素,下标从0开始,这5个元素是 a[0],a[1],a[2],a[3],a[4].注意不能使用数组元素a[5] 相同类型的数组或变量可以在一个类型说明符下一起说 明,互相之间用逗号隔开例如:inta[5],b[10],i; 数组元素只能逐个引用而不能一次引用整个数组
第七章 数 组 在定义数组时, 需要注意的是: l 同变量一样,数组也必须先定义,后使用。 l 定义内容: ·数组名(同变量名:字母、下划线、数字; 字母或下划线开头;长度≤32) l 数组名后用方括号括起常量表达式,不能用圆括号,所以 写成int a(10);是错误的,应该写成 int a[10]; l 常量表达式表示元素的个数,即数组长度.例如在a[5] 中,5表示该数组有5个元素,下标从0开始,这5个元素是 a[0],a[1],a[2],a[3],a[4].注意不能使用数组元素a[5]. l 相同类型的数组或变量可以在一个类型说明符下一起说 明,互相之间用逗号隔开.例如:int a[5],b[10],i; l 数组元素只能逐个引用而不能一次引用整个数组
第七章数组 蕌常量表达式:常量或符号常量,其值必须为正,不能为变 量.例如: a)常量表达式为常量:inta10 b)常量表达式为符号常量: #definen 1o int aN; 1)表示数组长度的常量表达式,必须是正的整型常量表达式 2)C语言不允许定义动态数组,即数组的长度不能依赖于程 序运行过程中变化着的量,下面这种数组定义方式是不允许的。 scan("%od",&i);蕌 int a lil
第七章 数 组 •常量表达式:常量或符号常量,其值必须为正,不能为变 量. 例如: 1) 表示数组长度的常量表达式,必须是正的整型常量表达式 2) C语言不允许定义动态数组, 即数组的长度不能依赖于程 序运行过程中变化着的量,下面这种数组定义方式是不允许的。 int i; scanf("%d" , &i); int a[i]; a) 常量表达式为常量: int a[10]; b) 常量表达式为符号常量: #define N 10 int a[N];
第七章数组 例7.1输入5个学生某门课的成绩,要求按与输入次序相 反的顺序输出。 O蕌 float sl, S2, S3, s4, S5; H printf("Enter five scores: ");H scanf"%f,%f,%f,%%F",&s1,&s2,&s3,&s4,&s5);蕌 printf("\n The score in reverse order are: );T printi("%fn",s5);蕌 printi(%fn",s4);蕌 printi("%fn'",s3);蕌 printf("%fn",s2);蕌 printi("9ofn",s1);蕌
第七章 数 组 例7.1 输入5个学生某门课的成绩,要求按与输入次序相 反的顺序输出。 main() {float s1, s2, s3, s4, s5; printf("Enter five scores: "); scanf("%f , %f , %f, %f, %f" , &s1, &s2, &s3, &s4, &s5); printf("\nThe score in reverse order are: "); printf("%f\n" , s5); printf("%f\n" , s4); printf("%f\n" , s3); printf("%f\n" , s2); printf("%f\n" , s1); }
第七章数组 例7.2用数组实现例71。 maIn 0蕌 inti;蕌 float score[5];蕌 printf("Enter five scores: ) ;T for(i=0;i=0;i-)蕌 printf("%4.2f\n", score Li]);tE
第七章 数 组 例 7.2 用数组实现例7.1。 main() { int i; float score[5]; printf("Enter five scores: "); for (i=0; i=0; i--) printf("%4.2f\n" , score[i]); }
第七章数组 712一维数组的初始化蕌 可以在程序运行后用赋值语句或输入语句使数组中的元素 得到值,也可以使数组在程序运行之前(即编译阶段)就得到 初值,后者称为数组的初始化。蕌 对数组元素的初始化可以用以下方法实现:蕌 1.在定义数组时对数组元素赋以初值,如:蕌 ints[5]={78,87,7,91,60}; 2.也可以只给一部分元素赋值。例如:蕌 ints[5]={78,87,77};潼 其结果是:s[0]=78,s[1]=87,s[2]=77,s[3]=0, s[4]=0,即花括号内的值只赋给了数组的前几个元素,后 几个元素的值为0
第七章 数 组 7.1.2 一维数组的初始化 可以在程序运行后用赋值语句或输入语句使数组中的元素 得到值,也可以使数组在程序运行之前(即编译阶段)就得到 初值, 后者称为数组的初始化。 对数组元素的初始化可以用以下方法实现: 1. 在定义数组时对数组元素赋以初值,如: int s[5]={78, 87, 77, 91, 60}; 2. 也可以只给一部分元素赋值。例如: int s[5]={78, 87, 77}; 其结果是:s[0]=78, s[1]=87, s[2]=77, s[3]=0, s[4]=0,即花括号内的值只赋给了数组的前几个元素, 后 几个元素的值为0
第七章数组 一3, 3.如果想使一个数组中全部元素值为0,可写成: ints5]={0,0,0,0.,0};或ints5}={0} 不能写成:ints5}={0*10};(不能给数组整体赋初值) 4.若对全部数组元素赋初值时,可以不指定数组长度。例 如:ints[5]={1,2,3,4,5};潼可以写成: ints[]={1,2,3,4,5};(系统自动定义数组长度为5)蕌 但若被定义的数组长度与提供的初值的个数不等则数组 长度不能省略.如想定义数组长度为10,而初值只有5个, 则数组长度不能省略,必须写成nta10={1,2,34,5};
第七章 数 组 3. 如果想使一个数组中全部元素值为0,可写成: int s[5]={0,0,0,0,0}; 或 int s[5]={0}; 不能写成: int s[5]={0*10}; (不能给数组整体赋初值) 4. 若对全部数组元素赋初值时,可以不指定数组长度。例 如: int s[5]={1, 2, 3, 4, 5}; 可以写成 : int s[ ]={1, 2, 3, 4, 5}; (系统自动定义数组长度为5) 但若被定义的数组长度与提供的初值的个数不等,则数组 长度不能省略. 如想定义数组长度为10,而初值只有5个, 则数组长度不能省略 ,必须写成:int a[10]={1,2,3,4,5};
第七章数组 5.一维数组元素是按下标递增的顺序连续存放的,即数 组占有连续的存贮空间。如s数组在内存中的存贮示意 如图61所示。 S[OI S[1] S[2] S[3] S[4] 图71s数组存贮示意图
第七章 数 组 5. 一维数组元素是按下标递增的顺序连续存放的, 即数 组占有连续的存贮空间。如s数组在内存中的存贮示意 如图6.1所示。 S[0] S[1] S[2] S[3] S[4] 图 7.1 s数组存贮示意图
第七章数组 例73用数组来处理求 Fibonacci数列问题P124 3 5main0渲 13 21 34 55 inti,f[20}={1,1};渲 89 144 233 377 610 for(i=2;i<20;i++) 9871597258441816765 f[i=fi-2]+f[i-1]; for(i=0;i<20;i++) 规律:下一项是前两项之和 if(i%5==0) printf(“in") printf(“%12d”,f); 潼
第七章 数 组 例 7.3 用数组来处理求Fibonacci数列问题 P124 main() { int i, f [20]={1,1}; for (i=2; i<20; i++) f [i]=f [i –2] + f [i – 1]; for (i=0; i<20; i++) { if ( i %5 = =0 ) printf(“\n"); printf(“%12d” ,f [i] ); } } 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 规律:下一项是前两项之和