题目:
重新编写1.2节中的温度转换程序,使用函数实现温度转换计算。
自我解答:
#include <stdio.h>
#define STEP 20
#define LOWER 0
#define UPPER 300
double fahrToCel(int fahr);
double fahrToCel(int fahr)
{
return 5 * (fahr - 32) / 9.0;
}
int main()
{
int i;
for(i = LOWER; i < UPPER; i = i + STEP)
{
printf("%3d\t %.1f\n", i, fahrToCel(i));
}
}
参考答案:
#include <stdio.h>
float celsius(float fahr);
/* print Fahrenheit-Celsius table
for fahr = 0, 20 , . . . , 300; floating-point version */
int main()
{
float fahr;
int lower, upper, step;
lower = 0; /* lower limit of temperature table */
upper = 300; /* upper limit */
step = 20; /* step size */
fahr = lower;
while(fahr <= upper)
{
printf("%3.0f %6.1f\n", fahr, celsius(fahr));
fahr = fahr + step;
}
}
/* celsius: covert fahr into celsius */
float celsius(float fahr)
{
return (5.0 / 9.0) * (fahr - 32.0);
}
我们采用一个函数把华氏温度转换为摄氏温度。这个函数名为celsius,它的输入参数是一个浮点数,返回值也是一个浮点数。这个函数将通过return语句返回表达式的值。有时,表达式是一个简单变量,例如power函数(参见教材第19页);但有时我们也会使用一个比较复杂的表达式,例如这里的celsius函数,因为这样做可以是所有工作都在return语句中完成。
因为函数celsius的输入参数是一个浮点数,它的返回值也是一个浮点数,所以我们把它声明为如下的形式:
float celsius(float fahr);