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

这个程序有什么错误,为什么输出结果永远是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);
}

#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);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-27
整型相除结果还是整型。
1/1 = 1
1/2 = 0
1/3 = 0
...
所以结果永远是1
把t=1/i改成 t = 1.0/i 就可以了。本回答被提问者和网友采纳
第2个回答  2013-04-23
#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);
}

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

第3个回答  2013-04-23
t=1/i;

i是整型,1/i也会是整型,1/1=1,1/2=0,1/3=0.....所以相加结果为1
改为t=1.0/i;就行了
相似回答