小组成员:
姓名:许兴华 学号:20160700
卢萌 20160702
一、实验要求
1、程序必须能处理1000个元素;
2、每个元素是int32类型的,出现子数组之和大于整型表示的最大范围会出现什么情况。
两人结对完成编程任务。
一人主要负责程序分析,代码编程。
一人负责代码复审和代码测试计划。
发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)
二、设计思想
sumsofar从初值0变为到目前为止的最大子数组的和,maxendinghere记录从当前位置开始往前几个数的和的最大值,比较sumsofar和maxendinghere,把最大值赋予sumsofar
三、源代码程序
#include <stdlib.h> #include<iostream> using namespace std; int max(int a,int b) { if(a>b) { return a; } else { return b; } } int maxsum(int a[], int n) { int i; int maxsofar = 0; //maxsofar记录到目前为止的的最大值 int maxendinghere = 0; //maxendinghere记录从当前位置开始往前几个连续的数的和的最大值 for (i = 0; i < n; i++) { maxendinghere = max(maxendinghere + a[i], 0); maxsofar = max(maxsofar, maxendinghere); } return maxsofar; } int main() { int n, i=0; cout<<"请输入个数:"; cin>>n; cout<<"请输入数组:"; int a[100000]={0}; for(i=0;i<n;i++) { cin>>a[i]; } int max=maxsum(a, n); cout << "最大子数组的和为:" << max << endl; system("pause"); return 0; }
四、程序运行截图
五、超出int32范围
现象:计算出错
,如图:
六、时间记录日志
七、遇到的困难
1、不懂int32啥意思
2、没写分号,大括号和分号要在英文状态下
3、程序运行中出现闪退
八、解决方法
1、查资料,问同学
2、调试出来的
3、百度出来的
九、总结
在编写程序的时候,要认真仔细,注意中英文状态的切换;
要边调试边写程序,避免最后代码过多,不容易寻找错误;
编写程序的过程中,要适量的写注释,避免思路丢失,时间一长,自己也看不懂。