我正在尝试制作一个简单的程序,该程序从用户输入中输出最大值和最小值。
但是它总是比我预期的多输入一个。
scanf()
似乎有问题,但我不太确定。
int num, max = -100000, min = 1000000;
scanf("%d", &num);
int array[num];
for (int i = 0; i < num; i++) {
scanf("%d ", &array[i]);
if (max < array[i])
max = array[i];
if (min > array[i])
min = array[i];
}
printf("%d %d", max, min);
格式字符串scanf("%d ", &array[i]);
中的尾随空格会导致scanf()
消耗所有换行符,直到您键入非空白的东西,您认为这需要额外的输入。
在c中,您不能使用这样的数组,您应检查一下如何进行动态内存分配
您也可以这样操作
#define ARRAY_SIZE 5
int num, max = -100000, min = 1000000;
int array[ARRAY_SIZE];
//fill the array with input
for (int j=0; j<ARRAY_SIZE; j++){
scanf(" %d", &num);
array[j]=num;
}
for (int i = 0; i < ARRAY_SIZE; i++) {
if (max < array[i])
max = array[i];
if (min > array[i])
min = array[i];
}
printf("%d %d", max, min);