急,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);
}
展开
 我来答
White_MouseYBZ
2015-12-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6355万
展开全部

这样改就可以了。有注释,自己对照看。

int main(int argc,char *argv[]){
    int n,i;
    float sum=0.0;//有改动
    scanf("%d",&n);
    for(i=1;i<=n;i++){
         sum=sum+1.0f/(2*i-1);//有改动
    }
    printf("%.2f\n",sum);//有改动
    return 0;
}
天雨下凡
2015-12-08 · 知道合伙人教育行家
天雨下凡
知道合伙人教育行家
采纳数: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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
447587096
2015-12-08 · TA获得超过5043个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1138万
展开全部
改成这个 s=sum+1.0/(2*i-1);
追问
恩恩,这样对了,不过这可以解释原因吗
追答
因为你的1/(2*i-1)这几个数都是int型的,编译器会认为算出来是 (int)(1/2*i-1)
变为1.0之后,编译器会认为这个式子是浮点型的,出来的就是小数了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-11-05 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5508万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式