标签:
一、题目及要求:
题目:返回一个整数数组中最大子数组的和。
要求(新加):①要求程序必须能处理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 }
四、截图

五、心得体会
这次的程序还是娜姐弄得。。。so 以上的内容还是娜姐一手包办的。。我负责想娜姐学习,,每次都是娜姐编完程序后我自己再看几遍。。最起码要能看懂。。以后还应该努力学习,提高c语言的基础能力,想大神们学习。不乱搞其他的没用的东西了。。。就这样。
六、工作照

标签:
原文地址:http://www.cnblogs.com/gaiiiiiiii/p/4379054.html