题目是:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
我的程序是
#include<stdio.h>
int main()
{
int i=1,b=1,a=2,t;
float sum=0;
for(;i<=20;i++)
{
sum=sum+a/b;
t=a;
a=a+b;
b=t;
}
printf("sum=%f\n",sum);
return 0;
}
我这个应该没错啊,但是得出来的答案是21,我把第五行和第六行改为int i=1;float b=1,a=2,t,sum=0;这样又能得出正确答案32.660261,我知道int型和float型的精准度是不同的,变量类型不同会影响到答案,但是a,b,t本来就是整型变量啊,改为float型也只是在小数点后面多加几个零而已,怎么会对结果的影响这么大呢?