905853663 发表于 2020-11-19 17:24:11

请教关于循环问题

请问要求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);
       
}
是哪里有问题?不可以这样吗

jackz007 发表于 2020-11-19 17:33:08

         sum=sum+1/a;
       改下面这样试试
          sum=sum+1.0/a;

905853663 发表于 2020-11-19 17:35:05

jackz007 发表于 2020-11-19 17:33
改下面这样试试

真的是这样啊!请问是为什么?

jackz007 发表于 2020-11-19 17:50:02

905853663 发表于 2020-11-19 17:35
真的是这样啊!请问是为什么?

      如果不这样写,那就是整数除法,只要除数大于被除数结果就是 0

a327190489 发表于 2020-11-19 18:34:49

因为1/a得到的结果为整形,即整数,而1.0/a的到的是双精度型,即小数

905853663 发表于 2020-11-19 18:49:22

a327190489 发表于 2020-11-19 18:34
因为1/a得到的结果为整形,即整数,而1.0/a的到的是双精度型,即小数

大概懂了,谢谢!!

a327190489 发表于 2020-11-19 18:51:02

905853663 发表于 2020-11-19 18:49
大概懂了,谢谢!!

嗯嗯,没事的,懂了就好哈哈

a327190489 发表于 2020-11-19 18:55:50

最好再把最后的printf里面的%d改成%lf吧,对应双精度

905853663 发表于 2020-11-19 19:03:10

a327190489 发表于 2020-11-19 18:55
最好再把最后的printf里面的%d改成%lf吧,对应双精度

好的
页: [1]
查看完整版本: 请教关于循环问题