C编程从入门到实践
上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循环依次输出排列后的数组元素。