您的位置:首页 > 其它

软件工程课堂练习--结对开发

2015-03-29 23:44 204 查看
一、题目及要求:

题目:返回一个整数数组中最大子数组的和。

要求(新加):①要求程序必须能处理1000个元素;②每个元素都是int32类型的。

二、设计思路

这次练习依然是在之前一维数组的基础上完成的,此次的首要问题是要求程序能处理1000个数据并要求元素是int32型,所以会存在大数溢出问题,我们的想法就是将它找出并做 出警告

三、源程序

//结对人员 盖相庚 曹美娜

#include "stdafx.h"
#include "stdio.h"
#include"stdlib.h"
#include"time.h"
#define N 1000
int compare( int arry[],int length)
{
int max
,max1;
for(int j=0;j<length;j++)
{
int sum=0;
max1=-987654321;
for(int i=j;i<length;i++)
{
sum=sum+arry[i];
if(sum<0)              //判断其是否溢出
{
printf("数值溢出!\n");
return 0;
}
else if(sum>=max1)
{
max1=sum;
}
}
max[j]=max1;
printf("包含数组中第%d个数的所有子数组中和最大的值为:%d\n",j+1,max[j]);
}
int fmax=max[0];
for(int i=0;i<length;i++)
{
if(max[i]>fmax)
fmax=max[i];
}
printf("所有子数组的和的最大值为:%d\n",fmax);
return 0;
}
int main(int argc, char* argv[])
{
int arry
;
int length;
srand(time(NULL));
printf("请输入要比较整数的个数:");
scanf("%d",&length);

for(int i=0;i<length;i++)
{
arry[i]=rand()+100000000;

}
printf("随机产生的数组为:\n");
for( i=0;i<length;i++)
{
printf("%d\t",arry[i]);

}
compare(arry,length);
return 0;
}


四、截图



五、心得体会

由于处理1000个数据出来的结果太长,所以我输入的是100个元素,其实1000个元素是能处理的,在程序中可以看出,我随机生成的元素比较大,所以就会出现大数溢出这种现象,然后程序找出,并提示数值已经溢出啦,结果会出现错误,程序就自己停止了

六、工作照

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: