我正在尝试将温度转换程序重写为使用转换函数的程序:
第一个项目是:
#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
答案 0 :(得分:3)
你的函数中的这行代码
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;
}
答案 1 :(得分:0)
#include <stdio.h>
float tem(int);
main()
{
int i;
printf("Fahrenheit-Celsius table\n\n");
for (i = 0; i <= 300; i += 20)
printf("%3d\t%6.2f\n", i, tem(i));
getchar();
return 0;
}
float tem(int fahr)
{
float cel;
cel = (5.0 / 9.0) * (fahr - 32.0);
return cel;
}