我正在通过一本指南学习 C,而且我很享受它。 然而,有一个问题让我困惑不已。
问题是:
“编写一个程序,当写入数字“x”和数字“y”时,程序显示 x 占 y 的百分比。”
“当 x = 54 且 y = 84 时,答案应为 64 %”
显然,54/84 = 0.64... * 100,大约是 64%。 但是,当我运行程序时,它显示 84.689699。 我在没有“*100”的情况下进行了测试,但什么也没有。它显示 0.84689699...
是我的程序有问题还是编译器的问题还是什么? 我是初学者,如果有人告诉我哪里出了问题,那将会非常有帮助。
PS:我使用atom.io和gcc-compiler
#include <stdio.h>
int main(void)
{
double vx;
double vy;
printf("Enter the 1st number : "); scanf("%f" , &vx);
printf("Enter the 2nd number : "); scanf("%f" , &vy);
printf("\a\n\nx is %f of y" , vx / vy * 100);
return 0;
}
最佳答案
虽然 scanf
是一个可变参数函数,但输入无法提升。scanf
将指针作为输入,因此您需要指定它%lf
。如果输入是变量而不是指针,C 会将 float 提升为 double。在您的程序中,scanf
函数具有 %f
而不是 %lf
。下面的代码工作正常,在 MinGW 上输出为 64.285714
。
另外,请参阅链接 Correct format specifier for double in printf
int main(void)
{
double vx;
double vy;
printf("Enter the 1st number : "); scanf("%lf" , &vx);
printf("Enter the 2nd number : "); scanf("%lf" , &vy);
printf("\a\n\nx is %f of y" , vx / vy * 100);
return 0;
}
关于c - 计算错误? C编程初学者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968041/