void harmsec(){
int n = 1;
float y = 1;
printf("Harmonic sequence: ");
while (y >= 0.11){
printf("%.2f", y);
printf(", ");
n = n + 1;
y = 1*(1/n);
} /*while*/
if (y < 0.11){
printf("%.2f", y);
printf("\n");
}/*if*/
}/*harmonic sequence*/
我想知道我的代码在哪里出错,试图输出谐波序列。输出仅为1.00,后跟0.0。
答案 0 :(得分:4)
1 / n以整数除法完成,n为2第一次,因此1/2 = 0且y变为零。
将1 / n更改为1./n,然后以浮点精度计算除法。
答案 1 :(得分:3)
y = 1*(1./n); //make the result as float
答案 2 :(得分:1)
void harmsec(){
int n = 1;
float y = 1;
printf("Harmonic sequence: ");
while (y >= 0.11){
printf("%.2f", y);
printf(", ");
n = n + 1;
y = 1*(((double)1)/n);
} /*while*/
if (y < 0.11){
printf("%.2f", y);
printf("\n");
}/*if*/
}/*harmonic sequence*/