大家好!我正在尝试学习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
$
怎么了?
答案 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
lower
,upper
&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);
如果你想避免这些错误,请不要复制粘贴代码。