求解释
为什么我一步一步运行,b的值都是整型求解释 在注释中解释了。。。。。。希望对你有所帮助,欢迎加Q群:157379587#include <stdio.h>int main()
{
/*
int i,a;
float b,sum=0;
a=1;
a=1;
for(i=2;i<20;i++)//i!=20
{
a=a+a;
b=a/a; //a是int型的,这里a/a结果为int型,(失去了精度)
sum=sum+b; //然后它赋值给b,转换成了float型 (NOTE:没有计算a/a )
}
printf("%f",sum);
return 0;
*/
//-=----修改如下--------
int i;
float b,sum=0.0,a;
a=1.0;
a=1.0;
for(i=2;i<20;i++)
{
a=a+a;
b=a/a;
sum=sum+b;
}
printf("%f",sum);
return 0;
}
#include<stdio.h>
int main( void )
{
int i, pre, rear, temp;
float b, sum = 0;
pre = rear = 1;
for( i = 2; i <= 20; i++ )
{
temp = pre + rear;
b = 1.0 * temp / rear;// 1.0 隐式转换类型
sum += b;
pre = rear;
rear = temp;
}
printf("%f\n", sum );
return 0;
} 应为 int a;
其余的不解释了吧
就是丢失精度的问题 for裡面應該是 i<20 才對, 其他的不解釋 本帖最后由 oggplay 于 2014-5-23 22:09 编辑
自己改改,简单调试:titter:,你应该能看出问题所在!
#include <stdio.h>
int main(void)
{
int i,a;
double b,sum=0;
a=1;
a=3;
for (i=2;i<=20;i++)
{
a=a+a;
b=(a/a);
sum=sum+b;
printf("a[%d]=%d",i,a);
printf(" b=%lf",b);
printf(" sum=%lf\n",sum);
printf("\n");
}
return 0;
}
页:
[1]