您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第六章 数组程序设计 > 【6.1 一维数组案例】

6.1 一维数组案例

 

6.1  一维数组案例

案例6.1  输出一维数组

【项目任务】

学习如何对一维数组进行定义、初始化和引用。

【设计思路】

定义一个一维整数数组,对它进行初始化,然后逐个输出。

【程序代码】

#include <stdio.h>

main()

{

    int a[5]={1,3,0,8,9};

    int i;

 

    for(i=0;i<5;i++)

    printf("%d ",a[i]);

}

【运行结果】

1 3 0 8 9

【知识拓展】

1.一维数组可以在定义的同时,对它进行初始化;也可以先定义,再对它进行初始化。

2.在数组a[6]中,6表示a数组有6个元素,下标从0开始,分别是a[0]a[1],…a[5]

3.定义一维数组时,[ ]内只能是常量,不能出现a[n]n为变量)。

4.一维数组除了可以存储的整型数字,还可以存储别的数据类型,如浮点型、字符型等。

案例6.2  Fibonacci数列

【项目任务】

学习如何灵活运用一维数组,完成一个简单的算法。

【设计思路】

根据Fibonacci数列的递推算法,运用一维数组作为数据结构,求出Fibonacci数列。

【程序代码】

#include <stdio.h>

main()

{

    int a[10]={1,1};

    int i=2;

 

    for(;i<10;i++)

    a[i]=a[i-2]+a[i-1];

    for(i=0;i<10;i++)

    {

        printf("%d\t",a[i]);

        if((i+1)%5==0)

        printf("\n");

    }

}

【运行结果】

1               1               2               3               5

8               13              21              34              55

【知识拓展】

通过对数组下标的灵活运用,可以求出已知规律的数列。

案例6.3  起泡法排序

【项目任务】

学习起泡排序的方法。

【设计思路】

通过两两比较,大数后移、小数前移的方法,实现将最大的数字调整到数组最后,完成一次起泡。依此类推,求出倒数第二大的数字,直到整个数组元素已经按照从小到大的顺序排列。

【程序代码】

#include <stdio.h>

#define N 10

main()

 

{

    float numbers[N];

    int i,j;

    float temp;

 

    for(i=0;i<N;i++)

    {

        scanf("%f",numbers+i);

    }

    for(i=0;i<N-1;i++)

        for(j=0;j<N-1-i;j++)

        {

            if(numbers[j]>numbers[j+1])

            {

                temp=numbers[j+1];

                numbers[j+1]=numbers[j];

                numbers[j]=temp;

            }

        }

    for(i=0;i<N;i++)

        printf("%5.1f  ",numbers[i]);

    printf("\n");

}

【运行结果】

输入:

4        -9      9.8    124    56      23     0       2       0       –8

输出:

-9.0    –8.0    0.0    0.0    2.0    4.0    9.8    23.0    56.0    124.0

【知识拓展】

1.起泡排序法和其他复杂度相同的排序算法相比,特点是交换次数比较多。

2.除了起泡排序法,常见的排序算法还有插入排序、选择排序、快速排序,它们各有自己适用的场合。如起泡排序适合对部分数字已经排好序的序列进行排序,而选择排序则适用范围比较广泛。