我正在编写一个简单的C程序,打印出谐波序列之和,如:
this.player.setupPlayer()
我的程序是:
1 + 1/2 + 1/3 + ...... + 1/n
据我了解,如果为#include<stdio.h>
void main(){
int n,i;
float num=0, tmp=0;
scanf("%d", &n);
for(i=1;i<=n;i++){
tmp = 1/i;
num = num + tmp;
}
printf("%f", num);
}
,则输出必须为:n=4
但是输出为2.03333
答案 0 :(得分:4)
1/i
不是浮点值,由于整数除法规则,它是值0或1的整数。
该值是1/1的1,否则为0。将所有这些结果相加得到1。
这是一个浮点值:
1.0/i
将它们加起来应该可以得到想要的结果。
确切地说,我应该说1.0
是double
。
为了实际使用float
值来匹配float
变量,请使用1.0f
。与整数值相比,它们都是浮点值。
答案 1 :(得分:3)
由于i
和0
是整数,因此将这两个数除以整数将得到i > 1
的{{1}}。您可以使用i
来投射(float)i
,而您将拥有1/(float)i
。