scanf()和整数数组

问题描述 投票:0回答:1

我正在尝试制作一个简单的程序,该程序从用户输入中输出最大值和最小值。

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

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);
c arrays scanf
1个回答
1
投票

格式字符串scanf("%d ", &array[i]);中的尾随空格会导致scanf()消耗所有换行符,直到您键入非空白的东西,您认为这需要额外的输入。


-1
投票

在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);
© www.soinside.com 2019 - 2024. All rights reserved.