#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;
}
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
最佳答案
- 五星知识达人网友:空山清雨
- 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;
}
{
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)吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯