体验结对开发的乐趣(3)--(一维数组求最大子数组的和溢出问题)

结对人员:信1201-2班高扬、信1201-1班韩雪东

一、设计思路

   对于大数溢出问题开始很迷茫,不大懂该干什么,思路匮乏。因为只要溢出这个数就不会被存储被改变,这样导致很难去判断溢出后该怎样做,但后来我们改变了一下思路,采用逆向思维,首先找到能存储的最大数,用它来减去将要运行的数,从而与即将要加的数比较,如果小了咋说明相加后会产生溢出,直接结束程序。

二、源代码

 1 // ceshi.cpp : Defines the entry point for the console application.
 2 //作者:韩雪东,高扬
 3 //时间:2015/3/28
 4 
 5 //#include "stdafx.h"
 6 #include "stdio.h"
 7 #include "stdlib.h"
 8 #include "time.h"
 9 
10 int shuchu(int m[],int szcdx,int xhy)//m[]表示要测试的数组,szchx表示数组长度,xhy表示循环条件
11 {
12     int t,p;
13     int max,sum;
14     //缓存数组赋值
15     int c[10];
16     int v[10];
17     for(t=szcdx-xhy-1;t<szcdx;t++)
18     {
19         c[t-szcdx+xhy+1]=m[t];
20     }
21     //循环
22     for(t=xhy;t>=0;t--)
23     {
24         sum=0;
25         for(p=0;p<=t;p++)
26         {
27             if(2147483647-sum<c[p])
28             {
29                 printf(" 数值过大 ");
30                 system("PAUSE");
31                 
32             }
33             sum=sum+c[p];
34         }
35         v[t]=sum;
36         
37         
38         
39     }
40     //循环输出最大值
41     max=v[0];
42     for(t=0;t<xhy+1;t++)
43     {
44         if(max<=v[t])
45         {
46             max=v[t];
47         }
48         printf(" %d  ",v[t]);
49     }
50     
51     return max;
52 }
53 
54 int main(int argc, char* argv[])
55 {
56     srand(time(NULL));
57     int a[10];
58     for(int j=0;j<10;j++)
59     {
60         a[j]=rand()%100000+20000000;
61     }
62 
63     int maxx[10];
64     
65     for(int i=9;i>=0;i--)
66     {
67         printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
68         maxx[i]=shuchu(a,10,i);
69         printf("
%d

",maxx[i]);
70     
71     }
72     int maxxx=maxx[0];
73     for(i=0;i<10;i++)
74     {
75         if(maxxx<=maxx[i])
76         {
77             maxxx=maxx[i];
78 
79         }
80     }
81     printf("

该数组的所有子数组的和的最大值:%d

",maxxx);
82     return 0;
83 }

三、运行结果截图

四、心得体会

     以前的测试程序并没有过多的考虑过大数溢出的问题,通过这次练习认识到了大数溢出给程序带来的严重性的问题,在以后的编写程序的时候一定会注意这一个问题。

五、有图有真相

原文地址:https://www.cnblogs.com/hanshidiguo/p/4377697.html