求一个数组中的最大整数

首先,分析题目,整数包括0,正整数,和负整数,所以要对所处理的数据做一个全面的测试。

测试的内容包括:

①局部变量类型是否正确

②是否初始化

③是否存在错误的初始值或错误的默认值

④运算是否正确

⑤逻辑是否正确

⑥是否存在死循环

⑦对错误条件的处理

 

老师所给的函数如下:

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

观察,max没有赋初值,可能会对结果产生影响;

再者没有对异常进行处理,也就是当length长度为空的时候,也就表示list数组的为空;

还有就是在做比较的时候,要判读比较的次数,在length-1这也有问题。

为了是程序能够具备更加完整的性能,改进后的代码如下

#include<stdio.h>
#include<stdlib.h>
int Largest(int list[],int length)
{
    if(length==0)
    {
        printf("数组长度不能为空!\n");
        return 0;
    }
    else
    {
        int i;
        int max=list[0];
        for(i=0;i<length;i++)
        {
            if(list[i]>max)
            {
                max=list[i];
            }
        }
        return max;
    }
}
int main()
{
    int *a;
    int max;
    int i;
    int b;
    int n;
    a=(int *)malloc(sizeof(int)*n);
    printf("请输入数组的个数n:\n",n);
    scanf("%d",&n);
    if(n>0)
    {
        printf("输入%d个数\n",n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&b);
            a[i]=b;
        }
        max=Largest(a,n);
        printf("max=%d\n",max);
    }
    else
    {
        Largest(a,n);
    }
        return 0;
}


对以上的程序解释:

①本题目的目的是测试Largest函数,使其具有更好的实用性,所以在对此函数做完善是代码加在Largset里,也就是length=0时的异常处理,还有赋初值的问题。

②因为length是可变的,所以对于数组的申请应该是动态的。

运行结果如下:

转载于:https://www.cnblogs.com/wangbingru/p/3578572.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值