C语言这个题目哪里错了,计算 1⼀1+1⼀2-1⼀3+...-1⼀n,但是输出的结果为0。

2024-12-01 01:46:18
推荐回答(4个)
回答1:

输出结果为0是因为t的初值为0,当执行while语句时,fabs(0)>=1E-5为假,所以while循环根本就没有执行,就直接输出sum的初值0;根据你的程序要求,应改为:
#include
#include
void main()
{
int i,flag;
i=2; flag=1;
float sum=0 ,t=1;
while (fabs(t)>=1E-5)
{
sum = sum + t;
t= 1.0/i*flag;
flag=-flag;
i+=1;
}
printf("%f\n",sum);
}

回答2:

#include
int main()
{
float sum=1;
int i,n;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(i%2==0)
sum=(float)1/i+sum;
else sum=sum-(float)1/i;
}printf("%f",sum);
return 0;}
所以你试试我这个,看看是不是你想要的

回答3:

t=0.0
改成t=1.0试试,否则while一次都不循环,当然是0

回答4:

你t都等于0了 进不了循环结果当然为0。 把t改成1就行了