#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;
void main()
{
int begin=0; //子序列的开头
int end=0; //子序列的结尾
int newsum=0; //当前子序列最大值
srand((unsigned)time(NULL)); //生成随机数
int a[10000], n;
cout << "请输入数组里面包含数的个数:" << endl;
cin >> n;
for (int i = 0; i < n; i++)
{
a[i] = rand() % 100-50;
} // 随机生成100以内的数组的值
int maxsum=a[0];
cout << "数组a[" << n << "]为:";
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i<n; i++)//开始循环求子序列和
{
newsum = newsum + a[i];
if (newsum > maxsum)//更新当前子序列的和
{
maxsum = newsum;
end = i;
}
if (newsum < 0)//假若当前子序列和为负,则舍弃
{
begin = i + 1;
newsum = 0;
}
}
以上是我的代码,在上次的博客中已经发出来了,这次我做的主要是对于这段代码的测试,针对最大容量以及不同类型的数字编入时测试的结果。
这次的 实验我是和我的同学结组做的他负责代码的编写,我负责测试这个版块。附上我和伙伴的照片&。
说实在的这个照片是我有生以来照的最丑的,本人没有这么丑。
下面我把各个不同的测试结果给大家展示一下。
首先是正常的测试
首先输入800,然后输入1000,一步一步的进行测试可以得出一个最大容量,在达到一定数值之和会出现不同的出错结果,下面附上几个错误的截图
错误的结果是直接终止测试。
关于这次的总结:以后再编程过程中我们要养成一种意识,有些程序虽然在短时间的运行时没有错误,但是长时间的运行可能会崩溃,所以我们在编程的时候要注意这个临界点,在达到临界点的时候程序应该会自动的运行下去。而不是崩溃,这就是我的总结吧