C简单的程序不起作用

时间:2013-07-07 14:00:46

标签: c gcc

大家好!我正在尝试学习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
  $

怎么了?

5 个答案:

答案 0 :(得分:5)

更改此部分 - &gt;

 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);

答案 1 :(得分:3)

所有scanfs都读取较低的变量。

scanf("%d", &lower);

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

答案 2 :(得分:2)

你有&lower三次。检查您的scanf lowerupper&amp; step

答案 3 :(得分:1)

您的代码

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

应该是

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

和类似的

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

答案 4 :(得分:0)

这里存在错误:

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

将scanf更改为以下代码:

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

如果你想避免这些错误,请不要复制粘贴代码。