Конечный пробел в строке формата scanf("%d ", &array[i]);
заставляет scanf()
использовать все символы новой строки, пока вы не наберете что-то непустое, что вы интерпретируете как требующий дополнительного ввода. Удалите этот завершающий пробел.
Также проверьте возвращаемое значение scanf()
для обнаружения неверного ввода.
Кроме того, вам не нужно сохранять значения в массиве.
Также обратите внимание, что -100000
и 1000000
не являются безопасными начальными значениями: что, если все значения, введенные пользователем, ниже или выше этих порогов? Используйте INT_MIN
и INT_MAX
или проверьте значение индекса.
Вот измененная версия:
#include <limits.h>
#include <stdio.h>
int main() {
int i, num, val, max = INT_MIN, min = INT_MAX;
if (scanf("%d", &num) == 1) {
for (i = 0; i < num; i++) {
if (scanf("%d ", &val) != 1) {
printf("invalid input\n");
break;
}
if (val < min)
min = val;
if (val > max)
max = val;
}
if (i == 0) {
printf("no values\n");
} else {
printf("%d %d\n", max, min);
}
}
return 0;
}