zoukankan      html  css  js  c++  java
  • 编写一个程序,求出数组中的最大值

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

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

    测试结果如下:

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

  • 相关阅读:
    Objective-C中的封装、继承、多态、分类
    C语言知识总结(5)
    C语言知识总结(4)
    C语言知识总结(3)
    C语言知识总结(2)
    C语言知识总结(1)
    H5-定位
    H5——浮动及清浮动
    H5基础标签
    H5盒模型基础
  • 原文地址:https://www.cnblogs.com/lixialei/p/3578781.html
Copyright © 2011-2022 走看看