#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<time.h>
#define Max  10000
using namespace std;
void main ()
{   
    int n,array[Max];   
    cout<<"请输入数组的长度:";   
    cin>>n;   //输入处理的元素个数
    cout<<"产生的n个数为"<<endl;   
    for(int i=0;i<n;)   
        {               
            array[i]=-Max/10+rand()%(Max*2+1);   
            cout<<setw(10)<<array[i]<<" ";
            i++;    
            if(i%10==0)     
                cout<<endl;   
       }   //通过rand随机产生正负数元素
       cout<<endl; 

       int sum=array[0],max=array[0];   
       for(int i=0;i<n;i++)   
       {       
            sum=sum+array[i]; //累加元素求出数组和  
            if(sum<array[i])     
                sum=array[i];  
            if (max<sum)     
                max=sum;  //求出最大数组和   
       }   
     cout<<"最大的子数组和是:"<<max<<endl;
     //测试超出int32范围
     for(int i=0;i<n;i++)   
       {    
            if(array[i]<=0)
                sum=sum-array[i];
            else
                sum=sum+array[i];
       }   
    cout<<"int32溢出测试值:"<<sum<<endl;
}

测试结果:

 

总结:翻阅c++有关书籍,获得的一定的帮助;

我们在编译过程中,对于一些问题产生分歧,并进行了讨论交流;

测试溢出int32,总是无法达到预期结果。

结对同学:博客园ID:绝望的暴风雨(*涛)

学习照片: