C语言while用法

这是我写的代码,算的是1-1/2+1/3-1/4+1/5……+1/99-1/100
#include<stdio.h>
main()
{
int a,b,c,d;
double e;
a=1,b=2,c=1;
while(b<=100)
{
e=a+c/b;
b=b+1;
c=-c;
}
printf("答案是%lf",e);
}
可是答案和我理想中的不对,不知错在哪里。

需要稍作修改
#include<stdio.h>
main()
{
int a,b,c,d;
double e=0.0; //这里e要初始化
a=1,b=1,c=1; //b要从1开始,要不然第一个算不上
while(b<=100)
{
e=c*1.0/b;//要不然是整数除以整数,值是整数,也就是0
b=b+1;
c=-c;
}
printf("答案是%lf",e);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-29
这个应该是你计算e = a + c/b的时候出错了。因为c b 是整数,所以c/b是正处运算,可以改成c/(b*1.0).
第2个回答  2012-02-29
因为c和b都是整型,俩整型相除,会舍去小数部分。
e=1.0;
c=-1;
while(b<=100)
{
e=e+ (double)c/b;
b=b+1;
c=-c;
}
这样就可以了
第3个回答  2012-03-01
程序修改如下:
#include<stdio.h>
main()
{
int b,c;
double e=1.0;
b=2,c=1;
while(b<=100)
{c=-c;
e=e+c*0.1/b;
b=b+1;

}
printf("答案是%lf",e);
}
运行结果为:0.968817
是你想要的结果吗?
第4个回答  2019-05-05
第二个
看见后面的
;
了吗?
其实完整格式是
while(P3_7==0)
{
;
}
就是一直循环到不等于0
什么都不干
实际上正规的写法应该是
NULL;
而不是只有一个;
只有一个;
在代码优化时会被优化掉
相似回答