C语言1-1/2+1/3...-1/100

#include<stdio.h>
main()
{
float sum=0,a=1;
while(a<=100)
{
if(a%2==0)
sum=sum-1/a;
if(a%2==1)
{sum=sum+1/a;}
a++;
}
printf("%f",sum);
}
哪里错了?

#include<stdio.h>
int main()
{
        float sum=0;
        int a=1; //只有整数才能做模运算!
        while(a<=100)
        {
                if(a%2==0)
                        sum=sum-1.0/a; //用1.0参与运算,保证可以得到小数
                else  //模2结果只有0或1
                        sum=sum+1.0/a; //同上
                a++;
        }
        printf("%f\n",sum);
        return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-11
a是float型,不能使用%操作。%两边必须都是整型。另:最后一个}前请加一个return 0;。
第2个回答  推荐于2017-07-23
没错吧,但是float是有误差的3+3可能不是6等等,
另外float是不能求于的本回答被网友采纳
第3个回答  2015-11-11
其实这个程序不用这样写也可以的:
#include<stdio.h>
int main()
{
int i=1;
float j,sum=0;
for(j=1;j<101;j++)
{
sum+=i*1/j;
i=i*(-1);
}
printf("%f",sum);
return 0;
}

(应该是可以运行的,VC运行环境出问题,所以没能进行测试)
相似回答