将华氏温度转换为摄氏温度并打印给用户

时间:2012-09-04 06:54:50

标签: c

我希望将-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语句,其中有一些ifs小于,大于等于。但是,每当我使用if语句时,celsius只会出现一个数字,并且每次转换后farenheit都不会跳过十次= /所以我有点不知道该做什么。

编辑:好吧,有点像我用过的idiodic = =而不是==。我是编程的新手,所以我仍然试图通过我的脑袋来实现这并不意味着平等。无论如何,至少可以确定farenheit没有以正确的间隔进行,但摄氏仍然保持在2.2而不是每次都改变。

EDITEDIT:嗯,谢谢你的帮助,结果我只需要知道何时使用正确的数据类型!我将代码更改为最终形式,以防任何人需要它!

2 个答案:

答案 0 :(得分:3)

if(fahr = celsius)没有按照您的想法行事。它 celsius分配给fahr并检查结果是否为非零。

你的意思是:

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

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


作为一个完全不相关的准确性,你应该写下这样的转换:

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

这不需要任何昂贵的转换到浮点或舍入错误转换回整数,它将尽可能延迟除法。请注意,您的摄氏温度值只会接近最接近零的整数。

答案 1 :(得分:0)

这是作业

if(fahr = celsius)

这是比较

if(fahr == celsius)