[英]C simple program doesn't work
大家好! 我正在尝试学习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
$
怎么了?
改变这一部分 - >
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);
所有scanfs都读取较低的变量。
scanf("%d", &lower);
当您复制和粘贴代码段时,这是非常典型的。 欢迎来到C,我们希望你和我们其他人一样爱上它。
你有&lower
三倍。 检查你的scanf
它应该是lower
, upper
和step
你的代码
printf("Enter upper limit:");
scanf("%d", &lower);
它应该是
printf("Enter upper limit:");
scanf("%d", &upper);
和类似的
printf("Enter step:");
scanf("%d", &step);
这里存在错误:
printf("Enter upper limit:");
scanf("%d", &lower);
printf("Enter step:");
scanf("%d", &lower);
将scanf更改为以下代码:
scanf("%d", &upper);
scanf("%d", &step);
如果您想避免这些错误,请不要复制粘贴代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.