输出的第一个数是 1.000000,只有后面小于1的结果都变为了0.000000,因为1/i为整数结果,所以小数部分省略了;
1/i可以改为1.0f/i,将整数运算变为浮点类型运算,即可保留小数结果。
修改如下:
参考链接:
#include <stdio.h>
const double M_PER_K = 0.62137;
void pound(int n);
int main(void){
int i=1;
float n;
printf("Watch out! Here are come a bunch of fractions.\n");
while(i<30){
// https://az764295.vo.msecnd.net/stable/6c3e3dba23e8fadc360aed75ce363ba185c49794/VSCode-darwin.zip
// 将1/i 改为 1.0f/i 以保留小数结果
n = 1.0f/i;
printf(" %f\n",n);
i++;
}
printf("That's all, folks!\n");
return 0;
}
【以下回答由 GPT 生成】
这个问题是由于C语言中的整数除法得到的结果仍然是整数的特性导致的。在表达式1/i中,i是一个整数,所以计算结果会被截断成整数形式,而不是浮点数形式。
要解决这个问题,你可以将1转换为一个浮点数来进行除法运算。可以通过将常量1改为浮点数形式的1.0来实现。
以下是修改后的代码:
#include <stdio.h>
int main(void) {
int i = 1;
float n;
printf("Watch out! Here come a bunch of fractions.\n");
while (i < 30) {
n = 1.0 / i; // 将1改为1.0,以进行浮点数除法运算
printf("%f\n", n);
i++;
}
printf("That's all, folks!\n");
return 0;
}
通过将1改为1.0,程序将执行浮点数除法,并得到正确的输出结果。
希望对你有所帮助!如果还有其他问题,请随时提问。
【相关推荐】