6

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

怎么了?

4

5 回答 5

5

更改此部分 ->

 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);
于 2013-07-07T14:03:59.507 回答
3

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

scanf("%d", &lower);

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

于 2013-07-07T14:04:32.117 回答
2

你有&lower三次。检查你的scanf应该是lowerupper&step

于 2013-07-07T14:03:43.660 回答
1

你的代码

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

它应该是

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

同样地

printf("Enter step:");
scanf("%d", &step);
于 2013-07-07T14:08:08.057 回答
0

这里存在错误:

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

将 scanf 都更改为以下代码:

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

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

于 2017-08-31T06:01:00.063 回答