【项目任务】
学习如何对一维数组进行定义、初始化和引用。
【设计思路】
定义一个一维整数数组,对它进行初始化,然后逐个输出。
【程序代码】
#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.一维数组除了可以存储的整型数字,还可以存储别的数据类型,如浮点型、字符型等。
【项目任务】
学习如何灵活运用一维数组,完成一个简单的算法。
【设计思路】
根据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
【知识拓展】
通过对数组下标的灵活运用,可以求出已知规律的数列。
【项目任务】
学习起泡排序的方法。
【设计思路】
通过两两比较,大数后移、小数前移的方法,实现将最大的数字调整到数组最后,完成一次起泡。依此类推,求出倒数第二大的数字,直到整个数组元素已经按照从小到大的顺序排列。
【程序代码】
#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.除了起泡排序法,常见的排序算法还有插入排序、选择排序、快速排序,它们各有自己适用的场合。如起泡排序适合对部分数字已经排好序的序列进行排序,而选择排序则适用范围比较广泛。