软件工程结对开发之求一维数组中连续最大子数组之和2
一、题目要求
#include<iostream.h> #include<stdlib.h> #include<time.h> void main() { while(1) { int length,temp; int *arr=new int[length]; cout<<"请输入该数组长度:"; cin>>length; //cout<<"请输入该数组:"; srand((unsigned)time(NULL)); for(int i=0;i<length;i++) { arr[i]=rand()*10000; temp=rand()%2; if(temp==0) { arr[i]=arr[i]; } else { arr[i]=-arr[i]; } cout<<arr[i]<<"\t"; } int result = arr[0]; int sum = arr[0]; for(i=1;i<length;i++) { if (sum > 0) { sum += arr[i]; } else { sum =arr[i]; } if (sum >result) result = sum; } if(result<2147360000||result==2147360000) { cout<<"该数组中最大连续子数组之和是:"<<result<<endl; } else { cout<<"超出最大范围溢出!"<<endl; } cout<<"----------------------------------------"<<endl; } }
四、测试截图
当输入数组长度为1000时没有溢出
当输入数组长度为2000时发生溢出
五、总结
以前没考虑到内存溢出情况,现在考虑溢出就得增大范围,溢出是个常见的问题,以后需要注意这种情况,对于溢出没办法解决只能提示溢出,在产生随机数时用的直接乘以10000导致产生的数后四位都是0000,有缺陷有待进一步改进。
六、工作合影
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。