课堂测试

课堂上老师让我们当堂做了一个测试,下面是老师给的代码

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

刚看到这个代码感到不难,审查之后发现了一个问题,就是i的取值范围出现了错误,修改后做了三组测试,分别是(-1,0,1),(0,2,4),(-2,-4,-6),本来以为这个测试这样就算完成了,然后听了老师的讲解之后才发现还远远不够,例如没有给max赋值,这是一个程序员最不该有的错误,同时作为一个合格的程序员而言,不仅要考虑到正确的情况,同时也要考虑到错误的情况,因为一个程序是给用户来用的,并不是我们自己用,于是我对之前的程序作了修改,考虑了数组为空和数组长度为0的情况,下面是我修改后的程序,但是仍然存在着许多的不足之处,通过这次的测试让我感到程序的测试甚至比写代码更重要,我们要充分的考虑到用户可能的情况,不能只按照我们自己的想法来做,希望各位大神来指点一下我这个菜鸟,谢谢!

#include <stdio.h>
#include <stdlib.h>
int Largest(int list[],int length)
{
    int i,max;
        if(list[0]==+1)
    {
        printf("您输入的数组为空!");
        exit (-1);
    }
    else if(length==0)
        {
            printf("您输入的数组长度为空!");
            exit(0);
                }
    max=list[0];
for(i=0;i<=(length-1);i++)
{

     if(list[i]>max)
                    {
                        max=list[i];
                    }
                }
                return max;

            }
int main()
{
    int a[100];
    int j,num;
    printf("请输入数组长度:\n");
    scanf("%d",&num);
    Largest(a,num);
    printf("请输入%d个数据(以+1结束):\n",num);
    for(j=0;j<num;j++)
    {
        scanf("%d",&a[j]);
            Largest(a,num);
        
    }
    printf("%d",Largest(a,num));
    return 0;
}

下面是测试截图

posted @ 2014-03-09 10:25  蔡迎盈2014  阅读(137)  评论(1编辑  收藏  举报