用c语言求1-1/2+1/3+....+1/99-1/100

#include<stdio.h>
int main()
{
int i,k,z,sum;
sum=1;
i=1; //当前项的符号
i=-i;
for(k=1;k<=100;k++) //分母
z=j*(1/k); //各项
sum=sum+z;
printf("答案=%d\n",sum);
return 0;
}
这个程序这样写对吗,有什么不对的请大神帮我在我写的程序上改。谢谢啦。

<1> 像1/2这样算出来的肯定是小数,不能是int类型,所以 sum z这个应该为float或double类型。
<2> for 循环如果不加{} 只能起作用到下面第一个分号处,所以for下面要加上大括号.
<3> j根本没有定义,从那里来的

#include<stdio.h>
int main()
{
int i,k;
double z,sum;
sum=0.0;
i=1; //当前项的符号
for(k=1;k<=100;k++) //分母
{
z=i*(1.0/k); //各项
sum=sum+z;
i = -1*i; //交叉进行修改符号
}
printf("答案=%lf\n",sum);
return 0;
}追问

交叉进行修改符号那里 可以直接表示为i=-i吗?

追答

在gcc中测试是可以的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-10
1.你的程序在计算浮点数据时,用整型数据来存放和运算是得不到预期的结果的;
2.程序中没有考虑符号的周期性编号
修改程序:
将int i,k,z,sum;改成int i,k; float z,sum;
将for(k=1;k<=100;k++)改成for(k=1;k<=100;k++,i=-i)
将z=j*(1/k); sum=sum+z;改成sum+=i*(float)1/k;或者:
{ z=i*(1.0/k);
sum=sum+z;
}
第2个回答  2014-03-09
#include<stdio.h>
int main()
{
int i,k,z;double sum;
sum=1.0;
i=1; //当前项的符号
i=-i;
for(k=1;k<=100;k++) //分母
z=i*(1/k); //各项
sum=sum+z;
printf("答案=%lf\n",sum);
return 0;
}
第3个回答  2014-03-09
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
void main(void){
int i;
double sum;
for(sum=0,i=2;i<101;i+=2)
sum+=(1.0/(i*i-i));
printf("The result is: %f.\n",sum);
}
相似回答