(1) 在定义数组时分别对数组元素赋予初值。例如
int a[10]={0,1,2,3,4,5,6,7,8,9};
(2) 可以只给一部分元素赋值。例如
int a[10]={0,1,2,3,4};
(3) 如果想使一个数组中全部元素值为1,可以写成
int a[10]={1,1,1,1,1,1,1,1,1,1};
不能写成 int a[10]={1*10};
不能给数组整体赋初值。
(4) 在对全部数组元素赋初值时,可以不指定数组长度。例如
int a[5]={1,2,3,4,5};
可以写成 int a[]={1,2,3,4,5};
5.2.4 一维数组程序举例
例5.2 用数组来处理求Fibonacci数列问题。
可以用20个元素代表数列中的20个数,从第3个数开始,可以直接用表达式f[i]=f[i-2]+f[i-1]求出各数。
程序如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{ int i;
int f[20]={1,1}; //f[0]=1,f[1]=1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //在i的值为2时,f[2]=f[0]+f[1],依此类推
for(i=0;i<20;i++) //此循环的作用是输出20个数
{if(i%5==0) cout<<endl; //控制换行,每行输出5个数据
cout<<setw(8)<<f[i]; //每个数据输出时占8列宽度
}
cout<<endl; //最后执行一次换行
return 0;
}
运行结果如下:
(空一行)
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
例5.3 编写程序,用起泡法对10个数排序(按由小到大顺序)。
起泡法的思路是:将相邻两个数比较,将小的调到前头。见图5.2。
然后进行第2趟比较,对余下的前面5个数按上法进行比较,见图5.3。

图5.2 图5.3
可以推知,如果有n个数,则要进行n-1趟比较(和交换)。在第1趟中要进行n-1次两两比较,在第j趟中要进行n-j次两两比较。
根据以上思路写出程序,今设n=10,本例定义数组长度为11,a[0]不用,只用a[1]~a[10],以符合人们的习惯。从前面的叙述可知,应该进行9趟比较和交换。
#include <iostream>
using namespace std;
int main( )
{
int a[11];
int i,j,t;
cout<<″input 10 numbers :″<<endl;
for (i=1;i<11;i++) //输入a[1]~a[10]
cin>>a[i];
cout<<endl;
for (j=1;j<=9;j++) //共进行9趟比较
for(i=1;i<=10-j;i++) //在每趟中要进行(10-j)次两两比较
if (a[i]>a[i+1]) //如果前面的数大于后面的数
{t=a[i];a[i]=a[i+1];a[i+1]=t;} //交换两个数的位置,使小数上浮
cout<<″the sorted numbers :″<<endl;
for(i=1;i<11;i++) //输出10个数
cout<<a[i]<<″ ″;
cout<<endl;
return 0;
}
运行情况如下:
input 10 numbers:
3 5 9 11 33 6 -9 -76 100 123↙
the sorted numbers:
-76 -9 3 5 6 9 11 33 100 123
评论