C语言程序设计第七章 数 组.docx
- 文档编号:22861773
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:28
- 大小:38.06KB
C语言程序设计第七章 数 组.docx
《C语言程序设计第七章 数 组.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第七章 数 组.docx(28页珍藏版)》请在冰豆网上搜索。
C语言程序设计第七章数组
7数组1
7.1一维数组的定义和引用1
7.1.1一维数组的定义方式1
7.1.2一维数组元素的引用2
7.1.3一维数组的初始化4
7.1.4一维数组程序举例4
7.2二维数组的定义和引用6
7.2.1二维数组的定义6
7.2.2二维数组元素的引用6
7.2.3二维数组的初始化7
7.2.4二维数组程序举例9
7.3字符数组9
7.3.1字符数组的定义9
7.3.2字符数组的初始化9
7.3.3字符数组的引用10
7.3.4字符串和字符串结束标志10
7.3.5字符数组的输入输出10
7.3.6字符串处理函数12
7.4程序举例14
7.5本章小结17
7数组
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。
7.1一维数组的定义和引用
7.1.1一维数组的定义方式
在C语言中使用数组必须先进行定义。
一维数组的定义方式为:
类型说明符数组名[常量表达式];
其中:
类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:
inta[10];说明整型数组a,有10个元素。
floatb[10],c[20];说明实型数组b,有10个元素,实型数组c,有20个元素。
charch[20];说明字符数组ch,有20个元素。
对于数组类型说明应注意以下几点:
1)数组的类型实际上是指数组元素的取值类型。
对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应符合标识符的书写规定。
3)数组名不能与其它变量名相同。
例如:
main()
{
inta;
floata[10];
……
}
是错误的。
4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。
但是其下标从0开始计算。
因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
5)不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。
例如:
#defineFD5
main()
{
inta[3+2],b[7+FD];
……
}
是合法的。
但是下述说明方式是错误的。
main()
{
intn=5;
inta[n];
……
}
6)允许在同一个类型说明中,说明多个数组和多个变量。
例如:
inta,b,c,d,k1[10],k2[20];
7.1.2一维数组元素的引用
数组元素是组成数组的基本单元。
数组元素也是一种变量,其标识方法为数组名后跟一个下标。
下标表示了元素在数组中的顺序号。
数组元素的一般形式为:
数组名[下标]
其中下标只能为整型常量或整型表达式。
如为小数时,C编译将自动取整。
例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
数组元素通常也称为下标变量。
必须先定义数组,才能使用下标变量。
在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。
例如,输出有10个元素的数组必须使用循环语句逐个输出各下标变量:
for(i=0;i<10;i++)
printf("%d",a[i]);
而不能用一个语句输出整个数组。
下面的写法是错误的:
printf("%d",a);
【例7.1】
main()
{
inti,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
}
【例7.2】
main()
{
inti,a[10];
for(i=0;i<10;)
a[i++]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
}
【例7.3】
main()
{
inti,a[10];
for(i=0;i<10;)
a[i++]=2*i+1;
for(i=0;i<=9;i++)
printf("%d",a[i]);
printf("\n%d%d\n",a[5.2],a[5.8]);
}
本例中用一个循环语句给a数组各元素送入奇数值,然后用第二个循环语句输出各个奇数。
在第一个for语句中,表达式3省略了。
在下标变量中使用了表达式i++,用以修改循环变量。
当然第二个for语句也可以这样作,C语言允许用表达式表示下标。
程序中最后一个printf语句输出了两次a[5]的值,可以看出当下标不为整数时将自动取整。
7.1.3一维数组的初始化
给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。
数组初始化赋值是指在数组定义时给数组元素赋予初值。
数组初始化是在编译阶段进行的。
这样将减少运行时间,提高效率。
初始化赋值的一般形式为:
类型说明符数组名[常量表达式]={值,值……值};
其中在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。
例如:
inta[10]={0,1,2,3,4,5,6,7,8,9};
相当于a[0]=0;a[1]=1...a[9]=9;
C语言对数组的初始化赋值还有以下几点规定:
1)可以只给部分元素赋初值。
当{}中值的个数少于元素个数时,只给前面部分元素赋值。
例如:
inta[10]={0,1,2,3,4};
表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2)只能给元素逐个赋值,不能给数组整体赋值。
例如给十个元素全部赋1值,只能写为:
inta[10]={1,1,1,1,1,1,1,1,1,1};
而不能写为:
inta[10]=1;
3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。
例如:
inta[5]={1,2,3,4,5};
可写为:
inta[]={1,2,3,4,5};
7.1.4一维数组程序举例
可以在程序执行过程中,对数组作动态赋值。
这时可用循环语句配合scanf函数逐个对数组元素赋值。
【例7.4】
main()
{
inti,max,a[10];
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max)max=a[i];
printf("maxmum=%d\n",max);
}
本例程序中第一个for语句逐个输入10个数到数组a中。
然后把a[0]送入max中。
在第二个for语句中,从a[1]到a[9]逐个与max中的内容比较,若比max的值大,则把该下标变量送入max中,因此max总是在已比较过的下标变量中为最大者。
比较结束,输出max的值。
【例7.5】
main()
{
inti,j,p,q,s,a[10];
printf("\ninput10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计第七章 语言程序设计 第七