请教关于循环问题
请问要求sum=1+1/2+1/3+1/4+1/5+......+1/n如下代码
#include<stdio.h>
main()
{
int a;
float sum=0;
for (a=1;a<=100;a++)
sum=sum+1/a;
printf("%f\n",sum);
}
是哪里有问题?不可以这样吗 sum=sum+1/a;
改下面这样试试
sum=sum+1.0/a; jackz007 发表于 2020-11-19 17:33
改下面这样试试
真的是这样啊!请问是为什么? 905853663 发表于 2020-11-19 17:35
真的是这样啊!请问是为什么?
如果不这样写,那就是整数除法,只要除数大于被除数结果就是 0 因为1/a得到的结果为整形,即整数,而1.0/a的到的是双精度型,即小数 a327190489 发表于 2020-11-19 18:34
因为1/a得到的结果为整形,即整数,而1.0/a的到的是双精度型,即小数
大概懂了,谢谢!! 905853663 发表于 2020-11-19 18:49
大概懂了,谢谢!!
嗯嗯,没事的,懂了就好哈哈 最好再把最后的printf里面的%d改成%lf吧,对应双精度 a327190489 发表于 2020-11-19 18:55
最好再把最后的printf里面的%d改成%lf吧,对应双精度
好的
页:
[1]