第5章c语言数组及其应用 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章数组及其应用
本章重点
●数组元素的查找
●数组元素的插入
●数组元素的删除
5.1一维数组
数组特点:
(1)每个数组中的元素类型必须一致。int a[10] a[0]~a[9] a[i] i=0~9
(2)用不同的下标来区分数组的元素。
(3)数组在内存中占有连续的存储单元,数组名表示数组在内存中的首地址。
5.1.1.一维数组的定义
类型说明符数组名[整型常量表达式];
例如:int a[5];
它表示定义5个元素的整型数组,数据名为a,a也是这5个元素存储区的首地址,因而a的地址值不能改变。
例5.1数组及数组元素的表示方法
#include
int main()
{
int i,a[10]={1,2,3,4,5,6}; /*定义一个整型数组,数组名为a,并给数组初始化*/
for(i=0;i<10;i++)
printf("a[%d]=%-4d",i,a[i]); /*a[i]为数组的第i个元素*/
printf("\n");
return 0;
}
5.1.2.一维数组的引用方法
C语言规定不能一次引用整个数组,引用时只能对逐个元素进行引用,数组元素及数组地址的表示形式如表5.1,表5.2所示。
如有定义:int a[5];
其元素可表示为:a[i],其中0<=i<5。
5.1.3.一维数组的初始化与赋值
如何给一维数组赋值呢?可以有三种方法:(1)数组的初始化;(2)程序中赋值;(3)键盘中读入。
例5.2 程序中给数组的元素赋值,并输出数组元素的值。
分析:数组s在定义时赋值;数组a在程序中赋值。s[2]的3赋给a[0],s[4]的5赋给a[1],s[7]的8赋给a[2],程序运行的结果为:a[0]=3 a[1]=5 a[2]=8。
#include
int main()
{
int s[10]={1,2,3,4,5,6,7,8,9,10};
int i=2,a[3];
a[0]=s[i];
a[1]=s[2+i];
a[2]=s[2*i+3];
printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
return 0;
}
给数组的例5.3 程序运行时从键盘输入,
元素赋值,最后输出数组元素的值。
分析:初始化数组a[4],程序等待键盘输入4个数,把键盘输入的数赋值给数组a中的4个元素,输出数组a[4]的4个元素的值。
#include
int main()
{
int i,a[10];
printf("请输入10个整型数,以空格隔开\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输入的数组为:");
for(i=0;i<10;i++)
printf("a[%d]=%-4d",i,a[i]);
printf("\n");
return 0;
}
5.1.4 字符数组
在C语言中,字符串是借助于字符型一维数组来存放的,以字符‘\0’作为字符串结束标志,它的ASCII代码值为0,‘\0’占用存储空间、不输出,但不计入串的实际长度。
如:
char str1[10]="computer" ,
str2[20] ;
但是下列方式的赋值:
char str1[10],str2[20] ;
str1="computer",5=10,str2=str1;是错误的。
例5.4 利用字符数组,在终端中输出字符串“I Love C!”。
分析:初始化数组string[],在初始化时直接用字符串常量,给字符数组string[]赋初值“I Love C!”,用printf直接输出字符串。
#include
int main()
{
char string[ ]="I Love C!";
printf("%s\n",string);
return 0;
}
5.2 二维数组
5.2.1.二维数组的定义
类型说明符数组名
[常量表达式1][常量表达式2] int a[3][4]; 常量表达式1表示二维数组的行数,常量表达式2表示二维数组的列数。
例,float a[3][4];
它表示定义了数组名为a 的3行4列的实型数组。
5.2.2.二维数组的表示、初始化与赋值
二维数组的赋值也可以分为3种情况:(1)二维数组的初始化
;(2)在程序中赋值;(3)
从键盘读入int
a[4][4] a[0][0]~a[3][3]。
例5.5 二维数组输入、输出的例子。 #include
int main()
{
int i,j,a[4][4];
printf("请输入16个整型数,以空格隔开\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("输入的数组为:\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("a[%d][%d]=%-4d",i,j,a[i][j]);
printf("\n");
}
return 0;
}