为什么我的方程式无法将华氏温度转换为摄氏温度?

时间:2019-04-06 19:10:07

标签: c

我正在尝试编写一个程序,使用户可以将华氏温度转换为摄氏温度,或将摄氏温度转换为华氏温度。当我运行程序时,我输入68并返回-17.78而不是应该的20。

我浏览了许多不同的论坛,唯一能找到的解决方案是将数据类型从整数更改为双精度,但我已经做到了。

double temp;

printf("Input temperature in degrees Fahrenheit:");
scanf("%.2f", &temp);
temp = (5.0f/9.0f)*(temp-32.0f);
printf("The temperature in Celsius is %.2f.", temp);
return 0;

在纸上,我似乎一切都正确,我缺少什么吗?

2 个答案:

答案 0 :(得分:5)

  

为什么我的方程式无法将华氏温度转换为摄氏温度?

未完全启用编译器警告。


array([4., 5., 4., ..., 4., 4., 5.])需要scanf("%f", ...);,而不是提供的float *

double *-> "%.2f"中的精度是未定义的行为。简单地删除那个。 scanf()不提供对精度的限制输入。

scanf()

我建议在您的double temp; printf("Input temperature in degrees Fahrenheit:"); // scanf("%.2f", &temp); scanf("%lf", &temp); 后面加上'\n'

printf()

答案 1 :(得分:1)

我这样更改了您的程序,一切看起来都很好:

int main()
{
    float temp;

    printf("Input temperature in degrees Fahrenheit:");
    scanf("%f", &temp);
    temp = (5.0f/9.0f)*(temp-32.0f);
    printf("The temperature in Celsius is %.2f.", temp);
    return 0;
}

也请注意编译器警告。例如,您的代码编译器说warning: C4476: 'scanf' : unknown type field character '.' in format specifier,所以我从.参数中删除了scanf