我通过指南学习c,我很享受。 但是,有一个问题我被困住了。
问题是:
"编写一个程序,在编写数字" x"和数字" y",程序显示x中x的百分比。"
"当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;
}
答案 0 :(得分:1)
虽然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;
}
答案 1 :(得分:0)
你在scanf函数中犯了一个错误。
scanf函数中的%f表示您的输入将被放入浮点变量。
使用%lf代替。
{{1}}