簡體   English   中英

嘗試使用C查找數組中的最大項

[英]Trying to find the maximum term in an array using C

我試圖編寫一個程序,可以通過使用maxterm函數找到最大的數組。

基本上你告訴程序你要在數組中放入多少個數字,放入每個數字,它會告訴你最大的數字。

該程序適用於大小為4或更小的數組,但只要數組長度超過4,返回的最大值就不正確:它總是一個大數,甚至不是數組的一部分。

例如:

Please enter the number of data values: 4
enter value 1: 1
enter value 2: 3
enter value 3: 4
enter value 4: 1
the maximum term is 4

但:

Please enter the number of data values: 5
enter value 1: 1
enter value 2: 3
enter value 3: 8
enter value 4: 4
enter value 5: 2
the maximum term is 32767

這是我的代碼:

#include <stdio.h>

int maxterm(int *numbers, int *size)     {

int index = 0;
int max = numbers[0];



for (index = 0 ; index < *size ; index++)   {
    if (max < numbers[index+1])   {
        max = numbers[index+1];
    }
}
return max;

}

int main(int argc, const char * argv[]) {
int num, index;
printf(" Please enter the number of data values: ");
scanf("%d", &num); //user enters in the length of the number list
int array[num];
for (index = 0 ; index < num ; index++) {
    printf("Please enter in value %i: ", (index + 1));
    scanf("%i", &array[index]); //list is created number by number
}
int maxi = maxterm(array, &num); //the highest number in the list is then determined using the maxterm function.

printf("the maximum term is %i", maxi);

return 0;
}

我的錯誤在哪里?

你在這里出界:

for (index = 0 ; index < *size ; index++)   {
    if (max < numbers[index+1])   {
        max = numbers[index+1];
    } 
}

而是正常迭代,除了從第二個元素開始。

您正在訪問數組越界,所以你看到這個問題。 通過值看起來很適合此API。

 int maxterm(int *numbers, int size)     {

    int index = 0;
    int max = numbers[0];



    for (index = 0 ; index < size ; index++)   {
        if (max < numbers[index])   {
            max = numbers[index];
        }
    }
    return max;

    }

電話應該是:

int maxi = maxterm(array, num);

你的代碼是完美的。 在max函數中用i替換i + 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM