编写一个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/1 = 1
1/2 = 0
1/3 = 0
...
所以搜滑知颂结果永远是1
把t=1/i改成 t = 1.0/i 就可以了。世猛腊
#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);
}

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


t=1/余前i;

i是整型,1/竖喊清i也会是整型,渗配1/1=1,1/2=0,1/3=0.....所以相加结果为1
改为t=1.0/i;就行了