安图恩奶爸加点:c语言问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 20:59:16
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
}
printf("sum is %9.6f\n",s);
}
上面的程序跟下面的值为什么不一样
main()
{
int n,t,number=20,a=2,b=1;
float s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
}
printf("sum is %9.6f\n",s);
}
why?

因为第一个ab为实数,所以a/b也为实数,所以答案正确
而第二个ab为整数,所以a/b将是div性质的整数除,如3/2=1,所以有偏差,将其改为s=s+a*1.0/b则和第一段程序相同

传值,和传址,自己看指针那一章

你定义的变量类型都不一样结果怎么一样啊!