【发布时间】:2017-05-10 00:24:51
【问题描述】:
这是我尝试在 C 中使用函数将华氏温度转换为摄氏温度。令我感到困惑的是,它适用于除第一个输入之外的所有输入,我不知道为什么。如果我删除了 while 循环,只是让程序中的内容按预期工作,但是我只能在必须再次运行程序之前转换一个值。输入的第一个值通常是 -16。给我的东西。
作为旁注,任何人都可以推荐一种在特定程序类型时搜索这些类型问题的方法吗?
#include <stdio.h>
float fToC(float far);
int main()
{
int c;
float far;
while((c = getchar()) != EOF)
{
scanf("%f", &far);
printf("%.2f\n", fToC(far));
}
return 0;
}
float fToC(float far)
{
float C;
C = (5.0 / 9.0) * (far - 32.0);
return C;
}
【问题讨论】:
-
你认为
getchar是做什么的?你如何处理它返回给你的价值? -
getchar从输入中读取一个字符。在第一个条目中,getchar“吞噬”了您输入的第一个数字,因此它读取的第一个数字是错误的。例如,如果您首先输入“54”,它将读取 5,将其丢弃,然后将 4 转换为摄氏度。随后的getchar调用读取carrage return 或line feed,保持以下数字不变。在输入任何数字之前先尝试按 Enter。或者在您输入的第一个数字的第一个数字之前放置一个空格。你会看到这些会让它发挥作用。 -
@lurker 非常感谢,我现在明白了。如果您将其发布为答案,我会选择它作为该问题的最佳答案。
标签: c temperature