我希望将-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:嗯,谢谢你的帮助,结果我只需要知道何时使用正确的数据类型!我将代码更改为最终形式,以防任何人需要它!
答案 0 :(得分:3)
行if(fahr = celsius)
没有按照您的想法行事。它将 celsius
分配给fahr
并检查结果是否为非零。
你的意思是:
if (fahr == celsius)
// ^^^^
这将比较两个值是否相等。
作为一个完全不相关的准确性,你应该写下这样的转换:
int celsius = (5 * (fahr - 32)) / 9;
这不需要任何昂贵的转换到浮点或舍入错误转换回整数,它将尽可能延迟除法。请注意,您的摄氏温度值只会接近最接近零的整数。
答案 1 :(得分:0)
这是作业
if(fahr = celsius)
这是比较
if(fahr == celsius)