编写一个程序,求出数组中的最大值

在上课的时候,老师给了一个功能模块,让我们进行测试,程序模块如下:

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;
}

测试结果如下:

通过这次的测试使我明白了,就算是你认为不会发生的问题,也需要考虑它如果发生了,该如何处理,就比如数组为空的问题,所以在以后的编程中考虑问题一定要全面。

原文地址:https://www.cnblogs.com/lixialei/p/3578781.html