C简单的程序不起作用

vil*_*vil 6 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

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

怎么了?

小智 5

改变这一部分 - >

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

    printf("Enter step:");
    scanf("%d", &lower);
Run Code Online (Sandbox Code Playgroud)

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

    printf("Enter step:");
    scanf("%d", &step);
Run Code Online (Sandbox Code Playgroud)


ojb*_*ass 3

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

scanf("%d", &lower);
Run Code Online (Sandbox Code Playgroud)

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