gpt4 book ai didi

c - 计算错误? C编程初学者

转载 作者:行者123 更新时间:2023-11-30 14:55:19 24 4
gpt4 key购买 nike

我正在通过一本指南学习 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com