2013-08-20 139 views
-3

每天,气象站会以华氏度表示5个温度。编写一个程序以华氏温度接受温度,将其转换为摄氏温度并在屏幕上显示转换后的温度。 5个温度之后,消息“处理所有温度”应显示在屏幕将5华氏温度从华氏温度转换为摄氏温度

我的回答是低于

#include <stdio.h> 
main() 
{ 
    int fah, cel; 
    printf("\nEnter 5 temperatures in Fahrenheit: "); 
    scanf("%d %d %d %d %d", &fah); 
    do 
    { 
    cel=(fah-32)*(5/9); 
    printf("\n These temperatures converted to Celsius are: %d \n", cel); 
    } 
    while(fah); 
} 
+0

我去哪里错了?你没有准确地发布你的问题是什么? –

+0

你的问题到底是什么? (除了无限循环) –

+0

那么,该程序,除了越野车,并没有做什么要求。要求您在5个温度后终止,而不是在零输入之后终止,并且您被要求打印状态消息。 –

回答

1

你在整数工作 - > 5/9被转化从而为整数0结果也将等于0.您需要使用float/double类型或更改计算以最小化此类舍入误差,例如像这样:cel=(5*(fah-32))/9; - 这里的乘法先完成,然后再进行除法。

2
scanf("%d %d %d %d %d", &fah); 

您在转换说明符中使用了5 %d,但只使用了一个变量。

cel=(fah-32)*(5/9); 

在这里,你使用整数除法,改变变量的类型double5/95.0/9

+0

我可以得到直接的解决方案吗?我完全搞砸了我知道,但我很困惑,我试过,也许如果你告诉我生病能够理解 – gadoora

+0

@gadoora - 阅读好的答案,并在其中工作。这是学习这些东西的唯一方法,诚实!提示 - 分解你的问题 - 先让它处理一个值,然后考虑把它扩展到五个。 –

+0

@gadoora Martin的权利,你最好一步一步地尝试。 –

2

让一个采取这一个 -

  • scanf("%d %d %d %d %d", &fah);:要扫描5值,而您只使用一个%d。其他四个值呢?您应该使用5个值的数组。
  • cel=(fah-32)*(5/9);:你除以9,两者都是整数。将整数除以另一个整数a/b的结果,其中a < b为0.因此cel将始终为0.您必须将其中一个整数转换为float/double。
  • 如果您使用数组,则需要遍历数组的所有元素来处理它们。

我故意不提供所有这些的直接解决方案。我建议你看看这些东西并理解它们,因为它们是用C语言编程的基础。

相关问题