C语言计算数列1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + …的前n项之和
答案:4 悬赏:0 手机版
解决时间 2021-02-26 02:01
- 提问者网友:轻浮
- 2021-02-25 18:42
C语言计算数列1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + …的前n项之和
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-02-25 19:27
#include
#include
int main(){
double result=0;
double s=1;
int count=1;
do{
if(count%2==1)
{
result+=1/s;
s+=2;
count++;
}
else
{
result-=1/s;
s+=2;
count++;
}
}while(s <= 101);
printf("1-1/3+1/5-1/7+1/9-1/11+·····+1/101=%f\n", result);
system("pause");
return 1;
}
#include
int main(){
double result=0;
double s=1;
int count=1;
do{
if(count%2==1)
{
result+=1/s;
s+=2;
count++;
}
else
{
result-=1/s;
s+=2;
count++;
}
}while(s <= 101);
printf("1-1/3+1/5-1/7+1/9-1/11+·····+1/101=%f\n", result);
system("pause");
return 1;
}
全部回答
- 1楼网友:琴狂剑也妄
- 2021-02-25 21:06
结果好像没错啊。
- 2楼网友:枭雄戏美人
- 2021-02-25 20:59
程序没什么问题。1、退出程序的条件设置有误。2、正负号改得太麻烦。#include
int main()
{
long n;
scanf("%ld",&n);
while(n>1)
{
double i=1,s=0,d=1;
for(i=1;i<=2*n-1;i+=2)
{s+=d/i;d=-d;}
printf("%.5f ", s);
scanf("%ld",&n);
}
return 0;
}追问条件设置错在哪里?我试了下你的代码会超过输出限制
- 3楼网友:蕴藏春秋
- 2021-02-25 20:36
手边没有电脑,没法调试。代码逻辑看起来没什么问题,应该是对的。就是你这样用scanf不太好。标准输入始终都会有一个换行符,可能会导致输入的问题。
建议你加个getchar可以解决这个问题。
另外就是你的逻辑,感觉有点难理解,建议改为for(i=1;i<=n;i++)
if就可以写成i%2
你觉得呢?追问但是提交OJ就是显示wrong answer ,不知道错在哪里追答你截图给我看看吧追问
提交就是result显示wrong answer追答我猜测有可能是你运算符优先级问题。你在for和if条件判断里左右两边加上括号试一试追问我这样写还是错了
for (i = 1; i <= (2 * n - 1); i += 2)
if ((((i + 1) / 2) % 2) == 1)追答你的标准答案是什么啊?我刚才在机器上跑了一下你的代码,然后用计算器验算了一下,没什么问题啊。会不会是答案四舍五入的问题呢?
建议你加个getchar可以解决这个问题。
另外就是你的逻辑,感觉有点难理解,建议改为for(i=1;i<=n;i++)
if就可以写成i%2
你觉得呢?追问但是提交OJ就是显示wrong answer ,不知道错在哪里追答你截图给我看看吧追问
提交就是result显示wrong answer追答我猜测有可能是你运算符优先级问题。你在for和if条件判断里左右两边加上括号试一试追问我这样写还是错了
for (i = 1; i <= (2 * n - 1); i += 2)
if ((((i + 1) / 2) % 2) == 1)追答你的标准答案是什么啊?我刚才在机器上跑了一下你的代码,然后用计算器验算了一下,没什么问题啊。会不会是答案四舍五入的问题呢?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯