C语言关于简单的数组中元素的运算,本人菜鸟新手,求高手指点。

#include<stdio.h>
void main()
{
int a[8]={1,0,1,0,1,0,1,0},i;
for(i=2;i<8;i++)
a[i]+=a[i-1]+a[i-2];
for(i=0;i<8;i++)
printf("%d",a[i]);
printf("\n");
}

请问整个程序是什么意思啊?如何进行运算的,头大了,求高手指点,谢谢

这个就是叠加,先把1,0,1,0,1,0,1,0付给a的数组中,然后进行加法就是由第3项开始等于前两项之和; a[i]+=a[i-1]+a[i-2];就等同于{ a[i]=a[i]+(a[i-1]+a[i-2]); }
如第一次运算a[2]=a[2]+(a[1]+a[0])=1+(1+0)=2,再运算a[3]=a[3]+(a[2]+a[1])=0+(2+0)=2 a[4]=a[4]+(a[3]+a[2])=1+(2+2)=5 a[5]=a[5]+(a[4]+a[3])=0+5+2=7 a[6]=a[6]+(a[5]+a[4])=1+7+5=13 a[7]=a[7]+a[6]+a[5]=13+7+0=20,剩下的就是挨个输出了

虽然说有点乱,但是运行过程就是这样,努力加油阿!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-04
这个没有什么意思
就是改变数组a中元素的值
a[2]=a[1]+a[0]; = 0+1=1
a[3]=a[2]+a[1]; = 1+0=1
a[4]=a[3]+a[2]; = 1+1=2
a[5]=a[4]+a[3]; = 2+1=3
a[6]=a[5]+a[4]; =3+2=5
a[7]=a[6]+a[5]; = 5+3=8
第2个回答  2011-12-04
#include<stdio.h>
void main()
{
int a[8]={1,0,1,0,1,0,1,0},i;
for(i=2;i<8;i++)
a[i]+=a[i-1]+a[i-2];//从第三个元素开始 它的值等于前两个元素的和
for(i=0;i<8;i++)
printf("%d",a[i]);//输出新数组
printf("\n");
}
第3个回答  2011-12-04
#include<stdio.h>
void main()
{
int a[8]={1,0,1,0,1,0,1,0},i; //共有一个含有8个元素的数组.名字是a,
for(i=2;i<8;i++)
a[i]+=a[i-1]+a[i-2]; //从第三个元素到第8个元素,把起前面两个元素的和赋值给这个元素,
for(i=0;i<8;i++)
printf("%d",a[i]);//然后输出这八个元素
printf("\n");
}
第4个回答  2011-12-04
#include<stdio.h>
void main()
{
int a[8]={1,0,1,0,1,0,1,0},i; //共有一个含有8个元素的数组.名字是a,
for(i=2;i<8;i++)
a[i]+=a[i-1]+a[i-2]; //从第三个元素到第8个元素,把起前面两个元素的和赋值给这个元素,
for(i=0;i<8;i++)
printf("%d",a[i]);//然后输出这八个元素
printf("\n");
}
就是改变数组a中元素的值
a[2]=a[1]+a[0]; = 0+1=1
a[3]=a[2]+a[1]; = 1+0=1
a[4]=a[3]+a[2]; = 1+1=2
a[5]=a[4]+a[3]; = 2+1=3
a[6]=a[5]+a[4]; =3+2=5
a[7]=a[6]+a[5]; = 5+3=8
很明显的fibonacci数列
第5个回答  2011-12-04
//用到函数printf(),要包含下面的头文件
#include<stdio.h>
void main()
{
//数组中8个元素分别初始化为 1 0 1 0 1 0 1 0
int a[8]={1,0,1,0,1,0,1,0},i;
//从数组第三项(a[2])开始,每项是其相邻的前两项的和加自身,知道第八项(a[7])
for(i=2;i<8;i++)
a[i]+=a[i-1]+a[i-2];//相当于a[i]=a[i]+a[i-1]+a[i-2]
//输出这八个数字
for(i=0;i<8;i++)
printf("%d",a[i]);
//换行
printf("\n");
}
相似回答