-3

每天,气象站接收 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);
}
4

3 回答 3

3

让我们一一来看——

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

我故意不提供所有这些的直接解决方案。我建议你查看这些东西并理解它们,因为它们对于 C 编程来说是非常基础的。

于 2013-08-20T08:58:57.943 回答
3
scanf("%d %d %d %d %d", &fah);

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

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

在这里,您使用了整数除法,将变量的类型更改为double5/95.0/9

于 2013-08-20T08:54:09.330 回答
1

您正在使用整数-> 5/9 转换为整数 0,因此结果也将等于 0。您需要使用float/double类型或更改计算以最小化此类舍入错误,例如:cel=(5*(fah-32))/9;- 这里先做乘法,再做除法。

于 2013-08-20T08:53:32.323 回答