内容正文:
第7章 数 组
7.1 一维数组
7.2 二维数组
7.3 字符数组与字符串
7.4 数组作为函数参数
7.1 一维数组
7.1.1一维数组的定义
1.数组的定义
数组是一组有序数据的集合,数组中每一个元素的类型相同。用数组名和下标来唯一确定数组中的元素。
一维数组的定义格式为:
类型说明符 数组名[常量表达式],… ;
下一页
返回
7.1 一维数组
2.说明
(1)C语言中,数组下标从0开始。
(2)常量表达式中可以包含数值常量和符号常量,不允许包含变量。既C语言不允许对数组的大小做动态定义,如:下面程序段中的数组常量n的使用方法是不允许的。
int n;
scanf(“%d”,&n);
int a[n];
(3)C编译系统为数组在内存中按照元素的排列顺序开辟一片连续的存储单元,如引例中定义的数组a[10],其存储形式如图7-1所示。
上一页
下一页
返回
7.1 一维数组
7.1.2一维数组元素的引用
C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用形式为:
数组名[下标表达式]
7.1.3一维数组的初始化
(1)对全部数组元素赋初值
如:int a[6]={1,2,3,4,5,6};
数组元素的个数和花括号中初值的个数是相同的。并且从左到右花括号中初值依次赋给每个数组元素。即a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6。
上一页
下一页
返回
7.1 一维数组
(2)可以只给一部分元素赋初值
如: int a[10]={0,1,2,3,4};
2.在运行阶段赋初值
int a[10],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
3.注意事项
当程序不给数组指定初始值时,编译器作如下处理:
(1)编译器自动把静态数组的各元素初始化为0。
(2)编译器不为动态数组自动指定初始值。
(3)如果全部元素均指定初值,定义中可以省略元素的个数
上一页
下一页
返回
7.1 一维数组
7.1.4一维数组应用举例
例7.4 用数组来处理Fibonicci数列的前20项。
F[1] = F[2] = 1
F[n] = F[n-1] + F[n-2] (n≥3)
程序如下:
上一页
返回
7.1 一维数组
例7.5 输入10个数,用“起泡法”对10个数由小到大排序
“起泡法”算法分析:以六个数9、8、5、4、2、0为例。
第1趟比较
上一页
下一页
返回
7.1 一维数组
第2趟比较
上一页
下一页
返回
7.1 一维数组
第1趟比较后,剩5个数未排好序;两两比较5次
第2趟比较后,剩4个数未排好序;两两比较4次
第3趟比较后,剩3个数未排好序;两两比较3次
第4趟比较后,剩2个数未排好序;两两比较2次
第5趟比较后,全部排好序;
对于n个数的排序需进行n-1趟比较,第j趟比较需进行n-j次两两比较。
上一页
下一页
返回
7.1 一维数组
设需排序的数有10个,定义数组大小为a[11],使用a[1]~a[10]存放10个数,a[0]不用。程序如下:
上一页
返回
图7-1 一维数组元素的存储
返回
$