结对人员:韩雪东,高扬
一、设计思路
这次编程我们主要是以以前的程序为基础,在此基础上通过改变数组元素的位置,形成新的数组,并通过调用我们之前找最大值的函数,找出每个数组的最大值,然后经过比较求得结果。
二、源代码
// shuzuhuan0327.cpp : Defines the entry point for the console application. //作者:韩雪东,高扬 //时间:2015/3/27 #include "stdafx.h" #include "stdio.h" #include "stdlib.h" #include "time.h" int shuchu(int m[],int szcdx,int xhy)//m[]表示要测试的数组,szchx表示数组长度,xhy表示循环条件 { int t,p; int max,sum; //缓存数组赋值 int c[10]; int v[10]; for(t=szcdx-xhy-1;t<szcdx;t++) { c[t-szcdx+xhy+1]=m[t]; } //循环 for(t=xhy;t>=0;t--) { sum=0; for(p=0;p<=t;p++) { sum=sum+c[p]; } v[t]=sum; } //循环输出最大值 max=v[0]; for(t=0;t<xhy+1;t++) { if(max<=v[t]) { max=v[t]; } printf("%d ",v[t]); } return max; } int main(int argc, char* argv[]) { srand(time(NULL)); int a[10]; int b[10]; for(int j=0;j<10;j++) { a[j]=rand()%51-25; printf(" %d ",a[j]); } int maxx[10]; printf(" "); for(int i=9;i>=0;i--) { printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i); maxx[i]=shuchu(a,10,i); printf(" %d ",maxx[i]); } int maxxx=maxx[0]; for(i=0;i<10;i++) { if(maxxx<=maxx[i]) { maxxx=maxx[i]; } } printf(" 该数组的所有子数组的和的最大值:%d ",maxxx); b[0]=maxxx; int p; for(int t=0;t<9;t++) { p=a[0]; for(int q=0;q<9;q++) { a[q]=a[q+1]; } a[9]=p; //int maxx[10]; for(int i=9;i>=0;i--) { printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i); maxx[i]=shuchu(a,10,i); printf(" %d ",maxx[i]); } int maxxx=maxx[0]; for(i=0;i<10;i++) { if(maxxx<=maxx[i]) { maxxx=maxx[i]; } } printf(" 该数组的所有子数组的和的最大值:%d ",maxxx); b[t+1]=maxxx; } int ma; ma=b[0]; for(i=0;i<10;i++) { if(ma<=b[i]) { ma=b[i]; } } printf(" 该数组的所有子数组的和的最大值:%d ",ma); return 0; }
三、结果截图
根据数组中元素的个数,生成等数量的数组,分别求出最大字数组的和,在进行比较,求的最大值!
四、心得体会
这次老师又增加了一点难度,但我们感觉并不是很难解决,课上很快就有了思路,不得不说以前编程的可扩展性真的很重要。有了前面的基础,我们考虑的就是如何去利用以前的来完善现在的,这样大大减少了工作量,降低了编程的难度,以后要养成编有可扩展性程序的好习惯。
五、附图