• 处理溢出


    一、题目及要求:

          题目:返回一个整数数组中最大子数组的和。

                  要求程序必须能处理1000个元素;②每个元素都是long类型的。

    二、设计思路:

          定义无符号长整型数组,长度设为1000;若所求子数组最大和的过程中出现sum〉LONG_MAX;则为溢出。输出溢出,程序无法计算结果。

    三、源程序

    #include<iostream.h>
    #include<stdlib.h> unsigned long max1(unsigned long arry[],int length) { unsigned long sum=arry[0]; unsigned long maxsum=arry[0]; int flag =0; for(int i=1;i<length;i++) { if(sum<0) { sum=arry[i]; } else { sum=sum+arry[i]; if(sum>LONG_MAX) { cout<<"溢出,出错,无法计算"<<endl; flag=1; break; } } if(maxsum<=sum) { maxsum=sum; } } if(flag==1) { cout<<"无返回值"; return 0; } else { return maxsum; } } int main() {
    srand((unsigned)time(0)); unsigned
    long a[1000]; for(int i=0;i<1000;i++) { a[i]=(unsigned long)rand()%5+4294967290; cout<<a[i]<<" "; } unsigned long q=max1(a,1000); cout<<endl; cout<<q; return 0; }

    四、截图

    五、实验心得

      本次实验实现1000个数这个不难,可以动态申请空间,也可以定义长度1000的数组。经过和伙伴商议,最终觉得还是用1000长度这种方法。

     对于定义无符号32位长整型,只验证了正数溢出的情况,这里利用了LONG_MAX这个界限,如果大于则说明溢出,直接跳出循环。我队友说,如果都是正数,相加,如果溢出则储存的应该是负数。定义有符号长整型。相加,如果小于0;则溢出。经过验证也是可以的。

      对于负数溢出,没有做出验证。没有考虑到。是个缺漏。

      在此附上我两帅照:

      

      

  • 相关阅读:
    阅读配色
    电影资源下载
    处理原电影音频
    导入字幕实操
    视频剪辑实操
    录音实操
    py2neo的一些基础用法
    debug时报错:UnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 1023: unexpected end of data
    MYSQL MDL监控
    MYSQL 表磁盘大小(INNODB_SYS_TABLESPACES)
  • 原文地址:https://www.cnblogs.com/wang321/p/4378583.html
Copyright © 2020-2023  润新知