城市猎人粤语百度影音:c++中的一个小问题

来源:百度文库 编辑:高校问答 时间:2024/04/20 10:13:51
# include <iostream.h>
# define N 15
void main()
{
double a [15],i;
a [0]=1,a[1]=2;
for(i=0;i<=N-2;i++)
a[i+2]=a[i+1]+a[i];
double b[15];
double sum;
for(i=0;i<=N-1;i++)
b[i]=a[i+1]/a[i];
for(i=0,sum=0;i<=N-1;i++)
sum+=b[i];
cout<<"下列分数序列的前15项之和为:"<<sum<<endl<<"2/1 3/2 5/3 8/5 13/8......"<<endl;
} 此程序用语输出上述15项数列之和,若将i定义为int型的则正确,为什么定义为double型就会出现编译错误?请高手指教.

数组下标,只能用int型

i就应该定义为int
i是数组的下标,不用定义double型

数组下标必须是整数
如byte、short、int、_int8、_int16……

你的for语句中是依靠判断大小(比如i<=N-2)来决定循环次数的。
如果i定义为double,由于计算机的关系可能会稍有小数点后的误差导致多循环一次或少循环一次。
总之,for中的i要用整型。(否则可能出现错误)