重写温度转换程序

时间:2015-03-07 19:49:14

标签: c

我正在尝试将温度转换程序重写为使用转换函数的程序:

第一个项目是:

#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              

2 个答案:

答案 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;
}