程序不会运行?

时间:2017-07-29 15:51:42

标签: c

我正在尝试使这个程序工作,但没有成功。该程序涉及使用float类型的算术,并包含函数temperature(),将华氏温度转换为摄氏温度。该函数从for循环获取输入,但是当我执行它时,我只获得第一次转换。我究竟做错了什么?这是代码:

#include<stdio.h>

float temperature(int);

int main() {
    int i;
    for (i = 0; i <= 300; i = i + 20)
        printf("%3d\t%6.2f\n", i, temperature(i));
    return 0;
}

float temperature(int m) {
    float low, up, step, f, t;
    float j = 5.0/9.0;
    for (f = low; f <= up; f = f + step)
       t = j * (f - 32.0);
    return t;
}

1 个答案:

答案 0 :(得分:2)

正如其他人所说。调试代码的最佳方法是分析它。您必须了解代码的作用。规划你的代码。在问这里之前尽力解决问题 - 这是最好的学习方法。

我相信这是你想要实现的目标:

#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("%3.0f\t%6.2f\n", fahr, celsius);
        fahr = fahr + step;
    }
}

仔细阅读代码。上面的例子只有一个功能。您可以通过一个函数负责温度转换并从主循环从0到300循环,轻松将其拆分为两个函数。 如果有什么事情没有意义 - 请问!这就是本论坛的用途。

#include <stdio.h>

float convert (float fahr) {

    float celsius = (5.0/9.0) * (fahr-32.0);

    return celsius;
}

int main() {

    int lower, upper, step;

    lower = 0;
    upper = 300;
    step = 20;

    float fahr = lower;

    while (fahr <= upper) {
        printf("%3.0f\t%6.2f\n", fahr, convert(fahr));
        fahr = fahr + step;

    }

}