软件工程课堂练习--结对开发

一、题目及要求:

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

      要求(新加):①要求程序必须能处理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个元素是能处理的,在程序中可以看出,我随机生成的元素比较大,所以就会出现大数溢出这种现象,然后程序找出,并提示数值已经溢出啦,结果会出现错误,程序就自己停止了

六、工作照

posted @ 2015-03-29 23:44  。泡沫。。  阅读(114)  评论(2编辑  收藏  举报