内容正文:
第6章 数组
第6章 数组
一维数组的定义
一维数组的应用
二维数组
多维数组和字符数组
字符串
综合实例++
2
一维数组的初始化
这节课我们讨论一维数组的初始化。
3
一维数组的初始化
在申请变量时给变量赋值,称为变量的初始化,如int a = 0; 。
数组初始化就是在定义数组时给其元素赋值。数组初始化的基本形式为:
类型 数组名[整型常量表达式] = {value0,value1,. . . };
从0号数组元素的初值开始,各数组元素对应的初值依次放在一对花括号中,中间用逗号分隔。
double a[5] = {1.1, 2.2, 3.3, 4.4, 5.5};,定义了一个长度为5的一维double型数组a,且a[0],a[1],a[2],a[3],a[4]的值分别为1.1,2.2,3.3,4.4,5.5
在申请变量时给变量赋值,称为变量的初始化,如int a = 0; 。
数组初始化就是在定义数组时给其元素赋值。数组初始化的基本形式为:
类型 数组名[整型常量表达式] = {value0,value1,. . . };
先是定义数组的语法,接着用赋值号初始化。
从0号数组元素的初值开始,各数组元素对应的初值依次放在一对花括号中,中间用逗号分隔。
double a[5] = {1.1, 2.2, 3.3, 4.4, 5.5};,定义了一个长度为5的一维double型数组a,且a[0],a[1],a[2],a[3],a[4]的值分别为1.1,2.2,3.3,4.4,5.5
4
数组的初始化
若初值的个数少于数组元素的个数,则根据数组元素类型,没有初值的数组元素会被赋值为0或0.0或'\0'。
若int a[3] = {1};,则a[0]的值为1,a[1]的值为0,a[2]的值为0。
若char letter[2] = {'A'}; ,则letter[0]的值为'A',letter[1]的值为'\0',0号字符
数组初始化时可省略数组的长度,初值的个数将作为数组的长度。
float f[ ] = {3.3, 2.2, 1.1};,由于初值有3个,一维float型数组f的长度为3,其有3个数组元素,f[0] = 3.3,f[1] = 2.2,f[2] = 1.1。
若初值的个数少于数组元素的个数,则根据数组元素类型,没有初值的数组元素会被赋值为0或0.0或'\0'。
若int a[3] = {1};,则a[0]的值为1,a[1]的值为0,a[2]的值为0。
若char letter[2] = {'A'}; ,则letter[0]的值为'A',letter[1]的值为'\0',0号字符。
数组初始化时可省略数组的长度,初值的个数将作为数组的长度。
float f[ ] = {3.3, 2.2, 1.1};,由于初值有3个,一维float型数组f的长度为3,其有3个数组元素,f[0] = 3.3,f[1] = 2.2,f[2] = 1.1。
5
例6-3 数组a中是20个学生的数学成绩(五分制且没有不及格的),请统计成绩为优(5) 、良(4)、中(3)和差(2)的学生的人数。
循环依次处理从a[0]到a[19]这20个成绩。
for(i=0; i<20; ++i){//处理a[1]}
if(a[i] == 5) {优的人数加1}, if(a[i] == 4) {良的人数加1},……。处理过程显然是“相等关系”的多分支选择结构,可以使用switch结构。
若用整型数组b的数组元素b[5]、b[4]、b[3]和b[2]存储优、良、中和差的人数,则用switch选择结构处理a[i]的过程可改写为?
循环依次处理从a[0]到a[19]这20个成绩。
for(i=0; i<20; ++i){//处理a[1]}
if(a[i] == 5) {优的人数加1}, if(a[i] == 4) {良的人数加1},……。处理过程显然是“相等关系”的多分支选择结构,可以使用switch选择结构。
switch选择结构中根据a[i]的值,匹配对应的常量,计算出人数。
若用整型数组b的数组元素b[5]、b[4]、b[3]和b[2]存储优、良、中和差的人数,则用switch选择结构处理a[i]的过程中可将普通变量加1,
改为对应的数组元素加1。
case 5:++b[5],case 4:++b[4],…..,对应关系非常明显,能否简化呢?
6
例6-3 数组a中是20个学生的数学成绩(五分制且没有不及格的),请统计成绩为优(5) 、良(4)、中(3)和差(2)的学生的人数。
程序中一维整型数组b[6]用0初始化,根据规定,没有初值的数组元素b[1]到b[5]会赋值为0,即int b[6]={0}将数组b的所有元素都初始化为0.
for循环结