上QQ阅读APP看书,第一时间看更新
8.1.3 初始化一维数组
数组元素和变量一样,可以在定义时进行初始赋值,即初始化处理。数组初始化是在编译阶段进行的,这样可以减少运行时间,提高效率。数组初始化赋值的一般格式如下所示。
类型说明符 数组名[常量表达式]={值,值……值};
其中,在{ }中的各个值即为各元素的初值,各值之间用逗号分隔。例如下面的两种格式是相同的。
int a[10]={ 0,1,2,3,4,5,9,7,8,9 }; a[0]=0; a[1]=1...a[9]=9;
在C语言中数组最常见的应用是数字处理。经典的数组应用实例都和数字有关,例如冒泡程序和选择排序等。所谓的冒泡程序,就是指按要求将一组数据从大到小或从小到大进行排序。其基本思路是:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否为逆序(与欲排顺序相反),若为逆序就交换这两个元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素进行比较,最终就得到了你所要的顺序。
实例8-2
实现一个按从小到大排列的冒泡程序
源码路径daima\8\8-2
本实例的实现文件为“maopao.c”,具体实现代码如下。
#include"stdio.h" int main(void){ int n, i, j, x, a[60]; //声明变量和数组 printf("n(<60)="); scanf("%d", &n); //输入要排序的整数个数 printf("Please input %d integers:\n", n); for(i=0; i<n; i++) //接收这些数并存储在数组中 scanf("%d", &a[i]); //用冒泡排序法将数组中的各元素按从小到大的顺序排列 for(i=1; i<n; i++) for(j=n-1; j>=i; j--) if(a[j]<a[j-1]) {x=a[j]; a[j]=a[j-1]; a[j-1]=x; } printf("The result is:\n"); for(i=0; i<n; i++) //输出排列好的数组元素 printf("%d ", a[i]); printf("\n"); }
拓展范例及视频二维码
范例8-2-01:统计各个分数段的人数
源码路径:演练范例\8-2-01\
范例8-2-02:实现选择排序
源码路径:演练范例\8-2-02\
上述代码的具体实现流程如下所示,执行效果如图8-2所示。
图8-2 执行效果
(1)分别声明4个整型变量n、i、j、x和数组a[]。
(2)通过printf输出提示,确定排序数字的个数。
(3)通过printf提示用户输入数字,并使用for语句接收每个数字存储在数组中的位置。
(4)两个for循环嵌套语句实现冒泡程序。
(5)通过printf和for循环依次输出排列后的数组元素。