This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
7年前关闭。
我想把-50摄氏度到200摄氏度之间的所有东西,以10摄氏度为单位转换成华氏度,并打印给用户,不仅是这两个值,还有哪个值更大/更小,或者它们是否相等。我现在的代码是:
#include <stdio.h>

main()
{
    int fahr;

    for(fahr = -50; fahr < 201; fahr = fahr + 10)
    {
        double celsius = (5.0/9.0) * (fahr-32);

        if(fahr == celsius)
        {
           printf("%3d = %6.1f\n", fahr, celsius);
        }

        if(fahr > celsius)
        {
            printf("%3d > %6.1f\n", fahr, celsius);
        }

        if(fahr < celsius)
        {
            printf("%3d < %6.1f\n", fahr, celsius);
        }
    }
}

我的基本思想过程是,我需要使用for语句,其中有几个if表示小于、大于和等于。然而,每当我使用if语句时,摄氏度只作为一个数字出现,而farenheit在每次转换后不会跳十个/所以我有点不知所措。
编辑:好吧,我用了一个愚蠢的错误=而不是=。我对编程还不太熟悉,所以我还是想让自己明白=实际上并不意味着等于。无论如何,这至少修复了法伦海特不在正确的时间间隔,但摄氏度仍然保持在2.2而不是每次变化。
好吧,谢谢你的帮助,我只需要知道什么时候使用正确的数据类型!我把代码改成了它的最终形式,以防有人需要它!

最佳答案

这条线并不像你想的那样。它将if(fahr = celsius)分配给celsius并检查结果是否为非零。
你的意思是:

if (fahr == celsius)
//      ^^^^

这将比较两个值是否相等。
作为一个完全不相关的精度点,您应该这样编写转换:
int celsius = (5 * (fahr - 32)) / 9;

这将不需要任何昂贵的浮点转换或在转换回整数时舍入错误,并将尽可能长的延迟除法。当然,你的摄氏值只有近似于零的最接近的整数。

关于c - 将华氏温度转换为摄氏并打印给用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12258215/

10-11 16:48