我正在编写一个C程序,将Celsius转换为Fahrenheit,反之亦然。当我从F转换为C时,它运行得很好。但是当我尝试从C转换为F时,我总是得到0.00作为我的返回值。 这是我的代码。
int main (void)
{
int fahrenheit;
double celsius;
int convert;
while (celsius != 0 || fahrenheit != 32) {
printf("Type 1 if you would like to convert to celsius.\n");
printf("Type 2 if you would like to convert to fahrenheit.\n");
scanf("%d", &convert);
printf("\n");
if(convert == 1){
printf("Enter the temperature in degrees fahrenheit:\n");
scanf("%d", &fahrenheit);
celsius = (5.0/9.0) * (fahrenheit-32);
printf ("The converted temperature is %.2f\n", celsius);
printf ("\n");
}
else{
printf("Enter the temperature in degrees celsius:\n");
scanf("%d", &celsius);
fahrenheit = (1.8*celsius) + 32;
printf ("The converted temperature is %.2f\n", fahrenheit);
printf ("\n");
}
}
return 0;
}
答案 0 :(得分:7)
scanf("%d", &celsius);
...
printf ("The converted temperature is %.2f\n", fahrenheit);
您将fahrenheit
声明为int
,将celsius
声明为double
,因此应切换%f
和%d
格式说明符。
scanf("%lf", &celsius);
...
printf ("The converted temperature is %d\n", fahrenheit);
答案 1 :(得分:1)
在你的代码中,
printf ("The converted temperature is %.2f\n", fahrenheit);
您尝试使用格式说明符int
打印一个%f
。不是定义的行为。
然后再次
scanf("%d", &celsius);
应该是
scanf("%f", &celsius); //c89 and above
或
scanf("%lf", &celsius); //c99 and above
另外,自己初始化本地变量。它们不是 auto 初始化的。否则,如果有时[不太可能但不是不可能],不要感到惊讶
while (celsius != 0 || fahrenheit != 32)
在第一次迭代中失败。