【发布时间】:2015-06-07 22:53:43
【问题描述】:
C 编程初学者。 我不明白为什么这段代码不起作用。我得到的最小值和最大值的答案是 2686672 和 4525824。谁能解释一下吗?谢谢。
#include <stdio.h>
int main(void) {
int array[20], i, x, y;
int max, min;
printf("Please enter number of integers to be checked\n");
scanf("%d", &x);
for (y = 0; y <= x; y++) {
printf("Please enter your numbers\n");
scanf("%d", &i);
}
min = array[0];
max = array[0];
for (y = 0; y <= x; y++) {
if (array[i] < min) {
min = array[i];
} else if (array[i] > max) {
max = array[i];
}
}
printf("%d is the min and %d is the max", min, max);
}
【问题讨论】:
-
始终检查 scanf() 和函数系列的返回值,以确保输入/转换操作成功。
-
如果要检查的整数个数 > 20 会怎样?写入超过缓冲区的末尾。 IE。未定义的行为,可能导致任何事情,包括段错误事件。
-
数字被输入到'i',它们应该被输入到array[y]
-
关于这一行:'for (y = 0; y