与一般变量一样,数组在定义时也可以初始化,数组初始化就是给数组元素赋初值。也可以先定义一个数组,然后在程序中用for循环为数组输入初值。一维数组用一个循环,二维数组用二重循环。
1.一维数组的初始化方法
一维数组在定义时初始化常见的几种形式:
(1)对数组所有元素赋初值,此时数组定义中数组长度可以省略。
例如:
int a[5]={1,2,3,4,5};
或
int a[]={1,2,3,4,5};
它是在定义数组后分别将“1,2,3,4,5”赋给数组元素“a[0],a[1],a[2],a[3],a[4]”。
省略长度时,认为是对所有元素初始化,数值的个数作为数组的长度。
(2)对数组部分元素赋初值,其余为0,此时数组长度不能省略。
例如:
int a[5]={1,2};
则a[0]=1,a[1]=2,其余元素为编译系统指定的默认值0。
(3)对数组的所有元素赋初值0。
例如:
int a[5]={0};
或
int a[5]={0,0,0,0,0};
需要注意:与变量一样,如果不进行初始化,那么数组元素的初始值是不确定的。如定义“int a[5];”,只表示a代表了这个数组所占空间的初始地址,从该地址开始的5个存储单元里面所存储的数据是不确定的,不要指望编译系统为你设置默认值为0,二维数组也是如此。所以,定义一个数组一定要给它赋初值,或者在定义的时候进行初始化,或者在程序中用for循环输入数组的值,然后再使用。
例如:
int a[6],i;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
【例5.3】某数列前两项是0和1,从第三项开始,每一项是前两项之和,求该数列前20项及其和。
程序内容如下:
1 #include<stdio.h>
2 int main()(www.xing528.com)
3 {
4 int i;
5 float sum=0,f[20]={0,1};
6 for(i=2;i<20;i++)
7 f[i]=f[i-2]+f[i-1];
8 for(i=0;i<20;i++)
9 {
10 printf("%10.2f",f[i]);
11 sum=sum+f[i];
12 }
13 printf("\nsum=%10.2f\n",sum);
14 return 0;
15 }
程序结果如图5.3所示:
图5.3 例5.3程序结果图
【例题中关键问题说明】
(1)该数列前20项用数组f[20]表示,f[0]=0,f[1]=1,f[i]=f[i-2]+f[i-1](i=2,3,…,19),若用变量sum表示其和,则sum=sum+f[i]。
(2)也可以将程序中的两个循环语句合并成如下的一个循环语句:
for(i=2;i<20;i++)
{
f[i]=f[i-2]+f[i-1];
printf("%10.2f",f[i]);
sum=sum+f[i];
}
这样修改后,并没有累加前两项。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。