編寫一個程序,求出數組中的最大值


在上課的時候,老師給了一個功能模塊,讓我們進行測試,程序模塊如下:

int Largest(int list[],int length)
{
    int i,max;
    for(i=0;i<(length-1);i++)
    {
        if(list[i]>max)
        {
            max=list[i];
        }
    }
        return max;
}

測試的內容大致如下:

如果數組中有兩個同樣大小的最大值會如何?

如果數組中只有一個元素會如何?

如果數組中的元素都為負數怎么樣?

如果數組為空(長度為零),那會如何?

在編寫的過程中,首先會發現數組中少了一個元素,那是因為在循環時length寫成了length-1,而且max沒有初始化,如果初始化為0,那么都是負數時結果為0,這個結果是錯誤的,原因在於負數都比0小,解決方法就是max初始化為數組第一個元素的值。並且在測試時,針對數組為空拋出異常,進行處理。

下面是我寫的測試這個模塊的程序:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Largest(int list[],int length)
{
    int i;
    int max;
    max=list[0];
    if(list==NULL||length==0)
    { 
        printf("數組元素不能為空,請重新輸入!\n");
        return 0;
    }
    else
    {
        for(i=0;i<length;i++)
        {
            if(list[i]>max)
            {
                max=list[i];
            }
        }
        return max;
    }
}
int main()
{
    int max;
    int i;
    int n;
    int *a;
    char ch;
    a=(int*)malloc(n*sizeof(int));
in:    printf("請輸入數組的個數:\n");
    scanf("%d",&n);    
    if(n>0)
    {
        printf("請輸入數組元素:\n");
        for(i=0;i<n;i++)
        {
             scanf("%d",&a[i]);
        }
        max=Largest(a,n);
        printf("數組元素的最大值是:%d\n",max);
    }
    else
    {
        printf("數組不能為空,請重新輸入!\n");
        goto in;        
    }
    return 0;
}

測試結果如下:

通過這次的測試使我明白了,就算是你認為不會發生的問題,也需要考慮它如果發生了,該如何處理,就比如數組為空的問題,所以在以后的編程中考慮問題一定要全面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM