0

我想将 -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 语句时,摄氏度只会以一个数字的形式出现,并且每次转换后华氏温度都不会跳跃 10 =/ 所以我有点不知所措。

编辑:好吧,我用=而不是==有点愚蠢的错误。我是编程新手,所以我仍在努力理解 = 实际上并不意味着等于。无论如何,这至少修复了华氏温度不正确的间隔,但摄氏度仍然保持在 2.2,而不是每次都改变。

编辑:嗯,谢谢你的帮助,原来我只需要学习什么时候使用正确的数据类型!我将代码更改为最终形式,以防万一有人需要它!

4

2 回答 2

3

这条线if(fahr = celsius)不符合你的想法。它分配 celsiusfahr检查结果是否非零。

你的意思是:

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

这将比较两个值是否相等。


作为一个完全不相关的准确性点,您应该像这样编写转换:

int celsius = (5 * (fahr - 32)) / 9;

这将不需要任何昂贵的浮点转换或转换回整数时的舍入误差,并且它将尽可能长时间地延迟除法。当然请注意,您的摄氏温度值只会近似于最接近零的整数。

于 2012-09-04T06:58:29.070 回答
0

这是任务

if(fahr = celsius)

这是比较

if(fahr == celsius)
于 2012-09-04T06:59:07.030 回答