标签:
设计思想:
实现代码:
#include <iostream>
#include<time.h> using namespace std;
int maxSum(int* a, int n) {
int sum=0;
//其实要处理全是负数的情况,很简单,如稍后下面第3点所见,直接把这句改成:"int sum=a[0]"即可
//也可以不改,当全是负数的情况,直接返回0,也不见得不行。
int b=0;
for(int i=0; i<n; i++) {
if(b<0)
b=a[i];
else
b+=a[i];
if(sum<b)
sum=b;
}
return sum;
}
int main() {
int n=1000,k=0;
int *a=new int [n];
for( int i = 0 ; i < n ; i++) {
a[i] = rand()%20 - 10 ;
} for( int i = 0 ; i < n ; i++) {
cout<<a[i]<<" ";
}
for( int i = 0 ; i < n ; i++)//产生的数组都为负数时的情况 {
if(a[i]<0) {
k++;
}
}
if(n==k) {
for( int i = 1 ; i < n ; i++) {
k=a[0];
if(a[i]>k) {
k=a[i];
}
} c
out<<"最大和为:"<<k<<endl;
}
else {
cout<<"最大和为:"<<maxSum(a,n)<<endl;
}
cout<<"请输入数组长度:"<<endl; cin>>n;
cout<<"请输入数组元素:"<<endl;
for( int i = 0 ; i < n ; i++) {
cin>>a[i] ;
}
cout<<endl;
for( int i = 0 ; i < n ; i++)//产生的数组都为负数时的情况 {
if(a[i]<0) {
k++;
}
}
if(n==k) {
for( int i = 1 ; i < n ; i++) {
k=a[0];
if(a[i]>k) {
k=a[i];
}
}
cout<<"最大和为:"<<k<<endl;
}
else {
cout<<"最大和为:"<<maxSum(a,n)<<endl;
}
return 0;
}
结果截图:
实验总结:
总结:本次实验主要是在上次的基础上看看当输出的数组元素多的情况会有什么问题以及数组元素的值大的时候会出现的情况,从实际来看前者没出现问题,但在值大的时候会出现意外报错这说明程序不够完美。再就是本次实验是由两人结对完成,初步对配合有了些理解和感悟,两人间如何分配任务将会影响整个项目的进度,以及两个人都分配些什么任务应该是能让每个人发挥出特长,再就是时间的安排问题由于是配合肯定要为每个人划分时间按段时间的划分不合理也会导致一个人忙死一个人闲死,显然这是不合理的。
合作照:
标签:
原文地址:http://www.cnblogs.com/yuntianblog/p/4383251.html