永发信息网

C语言 求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。 为什么输出不了结果

答案:3  悬赏:50  手机版
解决时间 2021-12-31 03:03
  • 提问者网友:斑駁影
  • 2021-12-30 21:03
#include<stdio.h>
int main()
{
int i=1,n;
double sum=0,k=1;
scanf("%d%d",&i,&n);
scanf("%lf",&k);
do
{
sum=sum+k;
i=i+1;
if(n%2==0)
{
k=(double)(-1*i)/(2*i-1);
printf("%lf",k);
}
else
{
k=(double)i/(2*i-1);
printf("%lf",k);
}
}while(i<=n);
printf("%.3lf",sum);
return 0;
}
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-12-30 21:23
do
{
sum=sum+k;
i=i+1;
if(n%2==0)
{
k=(double)(-1*i)/(2*i-1);
printf("%lf",k);
}
else
{
k=(double)i/(2*i-1);
printf("%lf",k);
}
}while(i<=n);

定义一个flag标记正负号得变量,赋值为1

改为
double flag=1;

while(i<=n)
{
sum+=flag*i/(2*i-1);
flag*=-1;

}
全部回答
  • 1楼网友:woshuo
  • 2021-12-30 23:58
i/deno只有当i = 1 deno = 1,i/deno = 1, 其他情况得0,因为"/"对于int型数据来说,除后取整操作,即10/9=1.printf("%.3lf",sum); lf有问题?
  • 2楼网友:洎扰庸人
  • 2021-12-30 22:37
if(n%2==0) 不对吧,应该是if((i+1)%2==0)吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯