输入一个正整数n,计算1 - 1/4 +1/7 -1/10 +1/13 -1/16+............的前n项之和,输出时保留3位小数

#include <stdio.h>
#include <math.h>
int main(void)
{
int i,n,b,c,d;
double sum,a;
scanf("%d",&n);
sum=0;
b=1;
c=0;
d=1;
for(i=1;i<=n;i++)
{
a=1/b;
b++;
d=d+3;
c=pow(-1,b);
sum=sum+a*c;
}
printf("sum=%.3lf",sum);
return 0;

}
我错哪了

第1个回答  推荐于2016-12-01
程序中的a b 不知道做什么用的。。。
pow(x,y)中 x, y值反了,
跟踪发现c=pow(x,-1)值为0
这里因为c是整型,自动忽略小数位,值为0
所以sum=sum+a*c;得到sum=0恒成立

#include <stdio.h>
#include <math.h>

int main ()
{
int i=0,n=0,d=0; //int b=0;
double c=0;
double sum=0; //int a=0;
while(1)
{
scanf("%d",&n);
b=1;
c=0;
d=-2;
sum =0;
for(i=0;i<n;i++)
{
// a=1/b; 不知道你的a 和b是干什么用的?
// b++;
d=d+3;
c=pow(d,-1.);
sum=sum+pow(-1,i)*c;
}
printf("sum=%.3lf\n",sum);
}
return 0;
}
以验证本回答被提问者采纳
相似回答