内容正文:
第八章
数
组
问题的提出
假设班上有4个学生,如果使用基本数据类型int,使
用“inta1,a2,a3,a4;"这4个整型变量来表示这4个学生的
年龄。这4个学生的年龄可以用下面的语句输出。
printf("%d%d%d%din",a1,a2,a3,a4);
当班上的学生数为40个时或者更多时,怎样输出这些
学生的年龄呢?
数组
数组是同类型数据的有序集合。
1、数据类型相同
2、有序
3、构造数据类型
主要内容:
1、一维数组
2、二维数组
3、字符数组
4、数组的应用
8.1一维数组
定义数组名
数组中元素的个数
定义:
类型说明
数组名[正整型常量装达式]:
基本的数据类型
[:下标的界定符,不能用()
例inta6];
a◆
a0]
a[1]
a[2]
a3]
a4]
a[5]
【例8.1】现举例说明一维数组的定义方法。
10个元素都可作
int a[10];
从0开始
n-1结束
为整型变量使用
a[0ja[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。
float b[5];
b[o],b[1],b[2],b[3],b[4]
说明:floa
n为符号常
m为变量
量
b[1步
int m;
(1)数组名命名规则避识符命名
scanf("%d",&m);
原则
int a[m];
非法!
(2)数组名后为方括号[](取下标运异),不能用圆牯号。如:
inta(10)是非法的。
define N10
合法!
(3)
定义格式中的“常量表达式”表示inta[N];
组长度。数
组元素的下标(有的地方也称索引)始终从0开始,到-1结束
(4)数组定义格式中的“常量表达式”可以包含正整型常量和符号
常量(仅限正整型),但不能包含变量。
(5)数组中每个元素的数据类型相同,这些元素在内存里面是连
续存放的。
一维数组的初始化
(1)定义数组时对所有元素逐一赋初值
inta[5]={1,2,3,4,5};
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
(2)可以只给一部分元素赋初值
inta[5]={1,3,5};
a[0]=1;a[1]=3;a[2]=5;a[3]=0;a[4]=0;
(3)对数组元素全部赋初值时,可以不指定长度。
inta[]={1,2,3,4,5;
a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
(4)指定初始化式的情况(C99标准
经常会有这样的情况:数组中只有相对较少的元素需要进行显示
的初始化,而其他元素可以默认赋值。
考虑下面的情况:
inta[10]={0,0,29,0,0,13,0,0,35,0;
我们希望索引为2的元素为29,索引为5的元素为13,索引为8的元素
为35,其它的元素为0。
C99标准中的指定初始化式可以将上面问题指定初始化式为:
inta[10]={[2]=29,[5]=13,[8]=35;
也可以指定初始化式为:
inta[10]={[5]=13,[2]=29,[8]=35};
还可以指定初始化式为:
inta[10]={[8]=35,[2]=29,[5]=13};
维数组元素的引用
【例8.3】体会下面给数组元素赋
值和数组元素的引用的过程。
0
a[o]
4
main()
1
a[1]
int i,a[5];
a[0]=0
2
fori=0;i<=4;i++)
a[1]=1
a2]
ali]=i;
for(i=4;i>=0;i-)
a[2]=2
3
a[3]
printf("%5d",ali]);
4
3
a[4]
4
32
1
0
include"stdio.
【例8.4】一
维数组的输入
main()
&第i个元
与输出。
int i;
素的地址
int a[4];
printf("n输入组a(共4个整数)
for(i=0;i<4;+)
{
scanf("%d",&a[i]);
}
printf("n输出数组a:");
for(i=0;i<4;i++)
{
printf("a[%d]=%d",i,a[i])
}
}