標籤:
一、題目及要求:
題目:返回一個整數數組中最大子數組的和。
要求(新加):①要求程式必須能處理1000個元素;②每個元素都是int32類型的。
二、設計思路
這次練習依然是在之前一維數組的基礎上完成的,此次的首要問題是要求程式能處理1000個資料並要求元素是int32型,所以會存在大數溢出問題,我們的想法就是將它找出並做 出警告
三、來源程式
1 //結對人員 蓋相庚 曹美娜 2 3 #include "stdafx.h" 4 #include "stdio.h" 5 #include"stdlib.h" 6 #include"time.h" 7 #define N 1000 8 int compare( int arry[],int length) 9 {10 int max[N],max1;11 for(int j=0;j<length;j++)12 {13 int sum=0;14 max1=-987654321;15 for(int i=j;i<length;i++)16 {17 sum=sum+arry[i];18 if(sum<0) //判斷其是否溢出19 {20 printf("數值溢出!\n");21 return 0;22 }23 else if(sum>=max1)24 {25 max1=sum;26 }27 }28 max[j]=max1;29 printf("包含數組中第%d個數的所有子數組中和最大的值為:%d\n",j+1,max[j]);30 }31 int fmax=max[0];32 for(int i=0;i<length;i++)33 { 34 if(max[i]>fmax)35 fmax=max[i];36 }37 printf("所有子數組的和的最大值為:%d\n",fmax);38 return 0;39 }40 int main(int argc, char* argv[])41 {42 int arry[N];43 int length;44 srand(time(NULL));45 printf("請輸入要比較整數的個數:");46 scanf("%d",&length);47 48 for(int i=0;i<length;i++)49 {50 arry[i]=rand()+100000000;51 52 }53 printf("隨機產生的數組為:\n");54 for( i=0;i<length;i++)55 {56 printf("%d\t",arry[i]);57 58 }59 compare(arry,length);60 return 0;61 }
四、
五、心得體會
由於處理1000個資料出來的結果太長,所以我輸入的是100個元素,其實1000個元素是能處理的,在程式中可以看出,我隨機產生的元素比較大,所以就會出現大數溢出這種現象,然後程式找出,並提示數值已經溢出啦,結果會出現錯誤,程式就自己停止了
軟體工程課堂練習--結對開發