C程序设计语言(第二版):练习1-15

题目:

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

上一篇:Java Swing Graphics2D drawString启动缓慢?


下一篇:制表符'\t'