int 和 float
求数列 2/1 3/2 5/3 8/5......的前20项。 #include<stdio.h>
main()
{
int i=2,j=1,c,t;
float a,sum=0;
for(c=1;c<=20;c++)
{
a=i/j;
sum=sum+a;
t=i;
i=i+j;
j=t;
}
printf("%f\n",sum);
}
算出来是21,但是吧int换成 float就得出正确答案了:
#include<stdio.h>
main()
{
float i=2,j=1,c,t;
float a,sum=0;
for(c=1;c<=20;c++)
{
a=i/j;
sum=sum+a;
t=i;
i=i+j;
j=t;
}
printf("%f\n",sum);
}
什么道理啊?i和j这些本来就是整数,只有a啊,sum这些才是实型的撒,不明白,请高手指教啊