【问题标题】:C simple program doesn't workC简单程序不起作用
【发布时间】:2013-07-07 14:00:45
【问题描述】:

大家好!我正在尝试学习 C 语言并遇到了这个问题:

书中的示例代码可以正常工作:

#include <stdio.h>
/* печать таблицы температур по Фаренгейту
и Цельсию для fahr = 0, 20, ..., 300 */

main()
{
    int fahr, celsius;
    int lower, upper, step;

    lower = 0; /* нижняя граница таблицы температур */
    upper = 300; /* верхняя граница */
    step = 20;  /* шаг */

    fahr = lower;
    while (fahr <= upper) {
        celsius = 5 * (fahr-32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
}

输出:

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

但是我写的代码什么也没做!:

#include <stdio.h>

main() {
    int fahr, celsius, lower, upper, step;

    printf("Enter lower temperature:");
    scanf("%d", &lower);

    printf("Enter upper limit:");
    scanf("%d", &lower);

    printf("Enter step:");
    scanf("%d", &lower);

    fahr = lower;
    while (fahr <= upper) {
        celsius = 5 * (fahr-32) / 9;
        printf("%d\t%d\n", fahr, celsius);
        fahr = fahr + step;
    }
}

输出:

$ gcc fahr.c -o fahr.out
$ ./fahr.out
输入较低温度:0
输入上限:300
进入步骤:20
$

怎么了?

【问题讨论】:

  • 在第二个代码中,每个 scanf 都是相同的 scanf("%d", &amp;lower);
  • +1 为我们提供您的完整代码。

标签: c gcc


【解决方案1】:

改变这部分 ->

 printf("Enter upper limit:");
    scanf("%d", &lower);

    printf("Enter step:");
    scanf("%d", &lower);

 printf("Enter upper limit:");
    scanf("%d", &upper);

    printf("Enter step:");
    scanf("%d", &step);

【讨论】:

    【解决方案2】:

    你所有的 scanfs 都读取变量 lower。

    scanf("%d", &lower);
    

    这在您复制和粘贴代码段时非常常见。欢迎来到 C,我们希望您能像我们其他人一样爱上它。

    【讨论】:

      【解决方案3】:

      你有三次&amp;lower。检查你的scanf 应该是lower, upper & step

      【讨论】:

        【解决方案4】:

        你的代码

         printf("Enter upper limit:");
            scanf("%d", &lower);
        

        应该是

         printf("Enter upper limit:");
        scanf("%d", &upper);
        

        类似

        printf("Enter step:");
        scanf("%d", &step);
        

        【讨论】:

          【解决方案5】:

          此处存在错误:

          printf("Enter upper limit:");
          scanf("%d", &lower);
          printf("Enter step:");
          scanf("%d", &lower);
          

          将 scanf 的两个代码都更改为以下代码:

          scanf("%d", &upper);
          scanf("%d", &step);
          

          如果您想避免此类错误,请不要复制粘贴代码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-03-03
            • 1970-01-01
            • 1970-01-01
            • 2018-10-05
            • 1970-01-01
            • 1970-01-01
            • 2013-05-09
            相关资源
            最近更新 更多