编写一个C语言程序:求S=1/1+1/2+1/3+…+1/n

这个程序有什么错误,为什么输出结果永远是1.0000000#include<stdio.h>voidmain(){inti,n;doublet,s=0;scanf("%d... 这个程序有什么错误,为什么输出结果永远是1.0000000
#include<stdio.h>
void main()
{
int i,n;
double t,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{t=1/i;
s=s+t;}
printf("s=%lf\n",s);
}
展开
 我来答
百度网友6fe74e2
2013-04-23 · TA获得超过6592个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:250万
展开全部
#include<stdio.h>
void main()
{
int i,n;
double t,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1.0/i;//原因在这1和i都是int类型,1/i就是整除了,只要i>1这个式子就是0,改1.0下就行了。
s=s+t;
}
printf("s=%lf\n",s);
}
T寒冬飞雪T
推荐于2018-02-27 · TA获得超过225个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:160万
展开全部
整型相除结果还是整型。
1/1 = 1
1/2 = 0
1/3 = 0
...
所以结果永远是1
把t=1/i改成 t = 1.0/i 就可以了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
燕赵一剑
2013-04-23 · TA获得超过164个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:175万
展开全部
#include<stdio.h>
void main()
{
int i,sum = 0,n;
float t,s = 0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=(float)1/i;
s=s+t;
}
printf("s=%f\n",s);
}

同学,给你改了一下,数据类型之间转换的问题。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
koa875
2013-04-23 · TA获得超过183个赞
知道答主
回答量:39
采纳率:0%
帮助的人:50.8万
展开全部
t=1/i;

i是整型,1/i也会是整型,1/1=1,1/2=0,1/3=0.....所以相加结果为1
改为t=1.0/i;就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式