我正在尝试将温度转换程序重写为使用转换函数的程序:
第一个程序是这样的:
#include <stdio.h>
int main()
{
float fahr, celsius;
int lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
while (fahr <= upper) {
celsius = (5.0/9.0) * (fahr-32.0);
printf("%d\t%d\n", fahr, celsius);
fahr = fahr + step;
}
}
现在这是我用一个函数作为转换的程序:
#include <stdio.h>
int convert(int fahr, int celsius);
// test convert function
main()
{
int fahr;
int celsius;
for(fahr = 0 ; fahr <= 300 ; fahr = fahr + 20){
printf("%d %d\n", fahr, convert(fahr,celsius));
}
return 0;
}
// convert: Fahrenheit to Celsius
int convert(int fahr, int celsius)
{
int c;
while (fahr <= 300)
c = (5.0/9.0) * (fahr-32.0);
return c;
}
我遇到的问题是,当我尝试执行该程序时,它只是不断地在命令行中加载,我无法输入任何字符。谁能指出我做错了什么?谢谢。
我的输出应该是这样的:
0 -17
20 -6
40 4
60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148
最佳答案
你函数中的这行代码
while (fahr <= 300)
永远不会退出,因为您的输入总是满足不等式。
也没有理由将函数定义为:
int convert(int fahr, int celsius)
因为从未使用过第二个参数。
如果您希望变量 celsius
发生变化,您应该将函数定义为 void
并传递该变量的引用。
#include <stdio.h>
void convert(int fahr, int *celsius);
main()
{
int fahr;
int celsius;
for(fahr = 0 ; fahr <= 300 ; fahr += 20){
convert(fahr, &celsius);
printf("%d %d\n", fahr, celsius);
}
return 0;
}
void convert(int fahr, int *celsius)
{
*celsius = (5.0/9.0) * (fahr-32.0);
return;
}
关于c - 重写温度转换程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28919212/