请问这个代码哪里错了?(标签-c语言|关键词-for)

c语言求Π/4约等于1-1/3+1/5-1/7+直到某一项小于10的-6次方为止,
#include <stdio.h>
int main()
{
int i,sign=-1,sum=0;
double fen,t;
for(i=1;fen>=1.0e-06;i++,i++)
{
sign=-sign,fen=1/i;
sum=sign/i+sum;

}
t=sum*4;
printf("t=%f",t);

return 0;
}

(1)sum是int类型,在for中计算的时候会丢失小数
(2)fen没有初始化就在for中使用了。

img

代码修改如下:

#include <stdio.h>
int main()
{
    int i,sign=-1;
    double sum=0; //修改1 sum改成double类型
    double fen,t;
    for(i=1;1.0/i>=1.0e-06;i+=2)// 第二个条件改成1.0/i>1.0e-06
    {
        sign=-sign;
        fen=1.0/i;
        sum=sign*fen+sum; //修改

    }
    t=sum*4;
    printf("t=%f",t);
    return 0;
}

你之前定义的int类型sign,在sign/i时会发生小数位丢失


#include <stdio.h>
int main()
{
float i,sign=-1,sum=0;
double t;
for(i=1;1.0/i>=1e-06;i+=2)
{
sum-=1/i*sign;
     sign=-sign;
}
t=sum*4;
printf("t=%f",t);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632