数组的基本概念汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型说明符 数组名[常量表达式] int a[10];
标识符只能由字母、数字、 下划线组成。且第一个字符 必须为字母或下划线。(第 三章P40)
从a[0]开始, 没有a[10].
1. 数组名的命名规则应遵循标识符的命名规则。 2. 数组名后是方括号,而非圆括号。 3. 常量表达式表示元素的个数,即数组长度。
1
第七章 数组
一、数组的基本概念
二、一维数组
三、二维数组 四、字符数组
2
第七章 数组
• 数组是一种构造数据类型。
• 数组是有序数据的集合。 • 数组中的每一个元素都属于同一数据类型。
• 用一个统一的数组名和下标唯一地确定数组中的元素。
3
第七章 数组
一维数组的定义 格式 举例 说明
整型表达式,表达式中可以 使用符号常量。
a[1]
a[2] a[3] a[4]
3
2
1
6
第七章 数组
一维数组的初始化 说明
1. 定义数组时,对数组元素赋初值。
int a[10]={0,1,2,3,4,5,6,7,8,9};
2. 可以只给一部分数组元素赋初值。
int a[10]={0,1,2,3,4};
上机时可以使 用: 3. 要想使数组中全部元素数据为0,则采用如下形式。 int a[10]={0};
数组名[下标] 1. 数组必须先定义,后使用。
数组作为函数的参 数时传递的是首地址。
2. 数组元素只能逐个引用,而不能一次引用整个数组。 数组元素的引用与同类型的一般变量使用方式一样。
…… int a[10]; a[0]=10; a[2]=a[0]*5; scanf(“%d”,&a[5]); printf(“%d”,a[5]); ……
a[0]
5
4
数组的名字代表的是数组的首地址 a[0]的首地址是a+0, a[0]~~*(a+0) a[1]的首地址是a+1 a[1]~~*(a+1) a[2]的首地址是a+2 a[2]~~*(a+2) a[3]的首地址是a+3 a[3]~~*(a+3) a[4]的首地址是a+4 a[4]~~*(a+4) 可以定义一个整型的指针变量,存储数组首地址 int *p=a;
9
一维数组程序举例 例7-3
对冒泡法排序程序的改进。程序演示
int i,j, a[5],temp; int flag=0; …… for(i=0;i<=3;i++) { flag=0; for(j=0;j>=4-i;j++) if(a[j]<a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1;} if(flag) bleak; } for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n");
int a[10]={0,0,0,0,0,0,0,0,0,0};
4. 在对全部数组元素赋初值时,可以不指定数组长度。
int a[ ]={0,1,2,3,4};
7
第七章 数组
一维数组程序举例
例7-1 例7-2
求Fibonacci数列的前20个数。 程序演示
给10个数组元素赋随机数并打印,rand() 函数的作用是产生 程序演示 -90到32767之间的随机 整数,见教材P382。
设flag=0
• •
11
由大到小排序
int i,j, a[5],temp; int flag=0; …… for(i=0;i<=3;i++) { flag=0; for(j=4;j>=i+1;j--) if(a[j-1]<a[j]) { temp=a[j]; a[j-1]=a[j]; a[j]=temp; flag=1;} if(flag) bleak; } for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n");
10
• • • • • • • • •
Байду номын сангаас
第0轮
第1轮 第2轮 第3轮
a[0] a[1] a[2] a[3] a[4] 9 8 1 2 3 8 9 1 2 3 8 1 9 2 3 8 1 2 9 3 8 1 2 3 9 1 2 3 8 9 1 2 3 8 9 1 2 3 8 9
设flag=0,一旦发生交换,flag=1
a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]
4. 常量表达式中可以包含常量和符号常量,不能包含变量。
#define n 10 main() {int a[n], b[n+10],C[2+3]; …… } 4
第七章 数组
一维数组元素的引用 格式 说明
3. 当逐个使用数组中的每一个元素时,通常借助for循环语句。
…… int i,a[10]; for (i=0; i<=9; i++) a[i]=i; for (i=9; i>=0; i--) printf(“%2d”,a[i]); ……
9876543210
5
int a[5]={5,4,3,2,1} 的内存空间
8
对5个数组元素排序.
输出排序后的5个数组 元素.
• • • • • • • • • • • • •
第0轮
第1轮 第2轮 第3轮
第i 轮
a[0] a[1] a[2] a[3] a[4] 9 8 5 4 2 8 9 5 4 2 8 5 9 4 2 8 5 4 9 2 8 5 4 2 9 5 4 2 8 9 4 2 5 8 9 2 4 5 8 9 a[0] ~a[4-i] 之间两两比较 即 if (a[j]>a[j+1] ) j的取值0~3-i a[j]交换a[j+1]
用冒泡法对5个数排序(由小到大) 。
main( ) { int i,j,a[5],temp; for (i=0; i<=4;i++) {a[i]=int(rand()/100);printf("%d",a[i]);} printf("\n"); for(i=0;i<=3;i++) for(j=0;j>=3-i;j++) if(a[j]>a[j+1]) {temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;} for (i=0;i<=4;i++) printf(" %d ",a[i]); printf("\n"); }