scanf()与整数数组

scanf()与整数数组,c,arrays,scanf,C,Arrays,Scanf,我试图制作一个简单的程序,从用户的输入输出最大值和最小值 但它总是需要比我预期的多一个输入 它似乎在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])

我试图制作一个简单的程序,从用户的输入输出最大值和最小值

但它总是需要比我预期的多一个输入

它似乎在
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);
int num,最大值=-100000,最小值=1000000;
scanf(“%d”和&num);
int数组[num];
for(int i=0;i数组[i])
min=数组[i];
}
printf(“%d%d”,最大值,最小值);

格式字符串
scanf(“%d”和数组[i])中的尾随空格
导致
scanf()
使用所有换行符,直到您键入非空的内容,您将其解释为需要额外输入。删除此尾随空格

同时测试
scanf()
的返回值以检测无效输入

此外,不需要将值存储到数组中

还要注意,
-100000
1000000
不是安全的初始值:如果用户键入的所有值都低于或高于这些阈值,该怎么办?使用
INT_MIN
INT_MAX
或测试索引值

以下是修改后的版本:

#包括
#包括
int main(){
int i,num,val,max=int_MIN,MIN=int_max;
如果(scanf(“%d”,&num)==1){
对于(i=0;imax)
max=val;
}
如果(i==0){
printf(“无值\n”);
}否则{
printf(“%d%d\n”,最大值,最小值);
}
}
返回0;
}

格式字符串
scanf(“%d”和数组[i])中的尾随空格
导致
scanf()
使用所有换行符,直到您键入非空的内容,您将其解释为需要额外输入。删除此尾随空格

同时测试
scanf()
的返回值以检测无效输入

此外,不需要将值存储到数组中

还要注意,
-100000
1000000
不是安全的初始值:如果用户键入的所有值都低于或高于这些阈值,该怎么办?使用
INT_MIN
INT_MAX
或测试索引值

以下是修改后的版本:

#包括
#包括
int main(){
int i,num,val,max=int_MIN,MIN=int_max;
如果(scanf(“%d”,&num)==1){
对于(i=0;imax)
max=val;
}
如果(i==0){
printf(“无值\n”);
}否则{
printf(“%d%d\n”,最大值,最小值);
}
}
返回0;
}