急,c语言
输入一个整数n,输出数列1+1/3+1/5+……前n项的和。输入只有一个正整数n。结果保留2为小数,单独占一行,请问我的代码哪里错了?谢谢#include<stdio.h...
输入一个整数n,输出数列1+1/3+1/5+……前n项的和。 输入只有一个正整数n。结果保留2为小数,单独占一行,请问我的代码哪里错了?谢谢
#include<stdio.h>
int main()
{
int n,i;
float sum=0.0,s;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=sum+1/(2*i-1);
}
printf("%0.2f\n",s);
} 展开
#include<stdio.h>
int main()
{
int n,i;
float sum=0.0,s;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=sum+1/(2*i-1);
}
printf("%0.2f\n",s);
} 展开
4个回答
2015-12-08 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
向TA提问 私信TA
知道合伙人教育行家
采纳数:17564
获赞数:65142
爱电脑、爱数学、爱音乐; 熟悉VB、C/C++、JAVA; EXCEL与VBA有所研究…… 数学,一些会,一些被忘却……
向TA提问 私信TA
关注
展开全部
s=sum+1/(2*i-1);应该是sum=sum+1/(2*i-1);
追问
可是这样编译下来,结果不对
追答
你采纳的答案是错的,不会累加,你项越多,结果越小。不过他的思路是对的,刚刚下班了,没细看,应该取消变量s,且把分子1换成1.0。程序如下:
#include
int main()
{
int n,i;
float sum=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+1.0/(2*i-1);
}
printf("%0.2f\n",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成这个 s=sum+1.0/(2*i-1);
追问
恩恩,这样对了,不过这可以解释原因吗
追答
因为你的1/(2*i-1)这几个数都是int型的,编译器会认为算出来是 (int)(1/2*i-1)
变为1.0之后,编译器会认为这个式子是浮点型的,出来的就是小数了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询