首页 理论教育 C语言程序设计:一维数组元素初始化

C语言程序设计:一维数组元素初始化

时间:2023-10-29 理论教育 版权反馈
【摘要】:一维数组用一个循环,二维数组用二重循环。省略长度时,认为是对所有元素初始化,数值的个数作为数组的长度。对数组的所有元素赋初值0。例如:int a[5]={0};或int a[5]={0,0,0,0,0};需要注意:与变量一样,如果不进行初始化,那么数组元素的初始值是不确定的。所以,定义一个数组一定要给它赋初值,或者在定义的时候进行初始化,或者在程序中用for循环输入数组的值,然后再使用。

C语言程序设计:一维数组元素初始化

与一般变量一样,数组在定义时也可以初始化,数组初始化就是给数组元素赋初值。也可以先定义一个数组,然后在程序中用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];

这样修改后,并没有累加前两项。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈