题目:
重新编写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);