计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和
# include<stdio.h>
int main()
{
int i,j,N;
j=-1;
double sum=1.0;
scanf("%d",&N);
for(i=2;i<=N;i++){
sum+=j*i/(2i-1);
j*=-1;
}
printf("%.3f\n",sum);
return 0;
}
sum+=j*i/(2*i-1); 这句,首先等号右边的计算都是整数,所以是会整除。
可以这样修改sum+=j*i/(2.0*i-1)
代码逻辑看着没什么问题
第9行 应该写成2*i 代码中不能像数学那样直接省略符号写的 改一下应该就正确了
这样改就好了!
# include<stdio.h>
int main()
{
int i,N;
double j=-1.0;
double sum=1.0;
scanf("%d",&N);
for(i=2;i<=N;i++){
sum+=j*i/(2*i-1);
j*=-1;
}
printf("%.3f\n",sum);
return 0;
}
有用请采纳!谢谢!
你打印下每次循环里面的每个值,不就一眼看出来吗
没有问题,是大于零,sum初值为1.0,-2/3没有比-1小。
数据类型问题,sum+=ji/(2i-1), j和i都是int行,第一次循环,j = -1, i = 2 , j * i / (2i - 1) = -2 / 3 =0.改一下就行了:
sum+=double(j)*i/(2*i-1);