C 将Farenheit转换为摄氏度并打印给用户

C 将Farenheit转换为摄氏度并打印给用户,c,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(

我想将-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);
        }
    }
}
#包括
main()
{
内特法赫;
对于(华氏温度=-50;华氏温度<201;华氏温度=华氏温度+10)
{
双摄氏度=(5.0/9.0)*(华氏32度);
如果(华氏==摄氏度)
{
printf(“%3d=%6.1f\n”,华氏度,摄氏度);
}
如果(华氏>摄氏)
{
printf(“%3d>%6.1f\n”,华氏度,摄氏度);
}
如果(华氏<摄氏度)
{
printf(“%3d<%6.1f\n”,华氏度,摄氏度);
}
}
}
我的基本思想过程是,我需要使用for语句,其中有几个if表示小于、大于和等于。然而,每当我使用if语句时,它只会显示为一个数字,而farenheit在每次转换后不会跳十个=/所以我有点不知所措

编辑:好吧,我用了=而不是==,这是一个愚蠢的错误。我是编程新手,所以我仍在试图让我的头脑明白=实际上并不意味着等于。不管怎么说,这至少弥补了法伦海特没有以正确的时间间隔运行,但摄氏度仍然保持在2.2,而不是每次都改变

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

如果(华氏温度=摄氏度)这行代码不符合您的想法。它将
摄氏度
分配给
华氏度
,并检查结果是否为非零

你的意思是:

if (fahr == celsius)
//      ^^^^
这将比较两个值是否相等


作为一个完全无关的准确度点,您应该这样写转换:

int celsius = (5 * (fahr - 32)) / 9;
这将不需要任何昂贵的浮点转换或转换回整数时的舍入错误,并将尽可能长时间延迟除法。当然,请注意,摄氏度值仅近似于最接近零的整数。

如果(fahr=摄氏度)不符合您的想法,则行
。它将
摄氏度
分配给
华氏度
,并检查结果是否为非零

你的意思是:

if (fahr == celsius)
//      ^^^^
这将比较两个值是否相等


作为一个完全无关的准确度点,您应该这样写转换:

int celsius = (5 * (fahr - 32)) / 9;
这将不需要任何昂贵的浮点转换或转换回整数时的舍入错误,并将尽可能长时间延迟除法。当然,请注意,您的摄氏值将仅近似于最接近零的整数。

这是一个赋值

if(fahr = celsius)
这是比较

if(fahr == celsius)
这是我的任务

if(fahr = celsius)
这是比较

if(fahr == celsius)


如果(华氏=摄氏)
请再次查看。
main
缺少返回类型。你需要说
int main()
。如果以摄氏为单位的温度总是低于以华氏为单位的温度,这看起来毫无意义…@nico,它们在-40时相等,并且对于低于该温度的所有F温度,您的陈述都是错误的。从顶部阅读的人可能会开始尝试回答您的问题,或者在阅读代码事实上已“更正”之前开始毫无意义地尝试查找问题-因此,您将该问题视为错误的示例。我认为您应该保留对您接受的任何答案的“更正”,添加您自己的答案,或者在问题中包含原始代码,然后是固定代码。
if(fahr=摄氏度)
请再次查看。
main
缺少返回类型。你需要说
int main()
。如果以摄氏为单位的温度总是低于以华氏为单位的温度,这看起来毫无意义…@nico,它们在-40时相等,并且对于低于该温度的所有F温度,您的陈述都是错误的。从顶部阅读的人可能会开始尝试回答您的问题,或者在阅读代码事实上已“更正”之前开始毫无意义地尝试查找问题-因此,您将该问题视为错误的示例。我认为你应该把“更正”留给你接受的任何答案,加上你自己的答案,或者在你的问题中包括原始代码和固定代码。谢谢你,先生,完全是新手的错误。我完全忘记了=正在赋值,而不是说它等于某个>。不过,现在的摄氏值并没有从2.2更改。知道为什么吗?@user1645307:因为你用的是整数?如果需要浮点值,则需要使用浮点数据类型(如
double
)。@KerrekSB:为了挑剔,将
摄氏度
四舍五入为零,例如17/9°C被截断为1°C,这不是最接近的整数;-)嗯,这就解释了。再次感谢你。实际上,我刚刚开始学习java,当时我正在帮助一位使用c的朋友,除了循环工作的最基本的基础知识之外,我什么都不知道。所以它有点不稳定xD@Mehrwolf:一点也不挑剔,但非常正确!我只是在偷懒。。。修正!谢谢你,先生,完全是新手的错误。我完全忘记了=正在赋值,而不是说它等于某个>。不过,现在的摄氏值并没有从2.2更改。知道为什么吗?@user1645307:因为你用的是整数?如果需要浮点值,则需要使用浮点数据类型(如
double
)。@KerrekSB:为了挑剔,将
摄氏度
四舍五入为零,例如17/9°C被截断为1°C,这不是最接近的整数;-)嗯,这就解释了。再次感谢你。实际上,我刚刚开始学习java,当时我正在帮助一位使用c的朋友,除了循环工作的最基本的基础知识之外,我什么都不知道。所以它有点不稳定xD@Mehrwolf: