软件工程课堂训练——数组之大数溢出

一、题目及要求:

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

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

结对人员:胡亚宝  焦燕

二、设计思路:

①处理1000个元素的问题,我们将数组的长度设为1000,其中的每一个元素都是随机生成,因为这道题目重点是溢出问题,所以我们将它们设的值都比较大;

②现阶段我们将它们都设为int型,超过表示范围时,系统会自动转化成负值,判断后将显示溢出。

1 // 结对开发— 胡亚宝 焦燕
 2
 3 #include "stdafx.h"
 4 #include "stdlib.h"
 5
 6 int _tmain(int argc, _TCHAR* argv[])
 7 {
 8     int i,j,a[1000];
 9     int Sum,Max;
10     printf("随机生成的数组为:\n");
11     for(j=0;j<1000;j++)
12     {
13         a[j]=rand()+100000000;
14         printf("%d\t",a[j]);
15     }
16
17     Max = a[0];
18
19     for(i=0;i<1000;i++)
20     {
21         Sum = 0;
22         for(j=i;j<1000;j++)
23         {
24             Sum =Sum+ a[j];
25             if(Sum<=0)
26             {
27                 //printf("溢出!");
28                 Sum=0;
29             }
30             if(Sum > Max)
31             {
32                 Max =Sum;
33             }
34         }
35     }
36
37     return 0;
38 }

四、测试及运行结果:

五、心得体会:

      这一次的实验我们在以前原来的基础上写的,程序自动生成了1000个数,这个方面没问题。就是求得的结果总不是正确的。我们的溢出得出来和其他同学的不一样,不是0。而是一直得出一个相同数。最后设定如果sum<=0,则输出溢出。

这次的结对开发中,我们遇到的问题不好解决,溢出的表现和其他同学不相同,我和胡亚宝都挺着急,虽然解决方案并不是特别完美,但两个人在合作过程中变得更加默契。

   

时间: 2024-08-10 02:32:37

软件工程课堂训练——数组之大数溢出的相关文章

软件工程课堂训练——结对开发之环数组最大和

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①如果数组A[0]...A[j-1]首尾相邻,允许A[i-1]...A[n-1],A[0]...A[j-1]之和最大:②同时返回最大子数组的位置. 结对人员:胡亚宝  焦燕 二.设计思路: 我们要解决两个问题:求出环数组中最大的子数组:并且定位出该子数组的位置,把它们的名称输出来.要解决这两个问题,我们从以下两个方面入手: ①求出最大子数组:将数组数值按顺序排好称为“一趟”,每求出一趟的最大子数组后,将第一个数值放到最后一个

软件工程课堂训练——结对开发之环状二维数组

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①输入一个二维整形数组,数组里有正数也有负数:②二维数组首尾相接,像一条首尾相接的带子一样. 结对人员:胡亚宝  焦燕 二.设计思路: 这个题目其实就是二维数组和环型数组的结合,要解决这个问题,将之前的两个问题融合一下即可. 首先解决求出二维数组中最大子数组的问题,然后沿用一维数组的方法,将第一列放到最后一列,在求出新的二维数组的最大子数组,依次求出各个二维数组的最大子数组. 三.部分源代码: 1 for (m=0;m<5;

结对开发4----最大子数组(大数溢出)

结对成员:范德一,赵永恒 一.题目: 返回一个整数数组中最大子数组的和. 二.要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 三.设计思路 在上一次的实验中,我们设置的数组的个数能够很好的进行扩展,所以对于第一个要求处理1000个元素比较容易实现:对于第二个要求,我们主要是想确定最大的数到底有多大,即什么时候会发生溢出的问题,当问题

结对开发——数组求和大数溢出问题

一.题目要求 返回一个整数数组中最大子数组的和. 要求程序必须能处理1000 个元素:   每个元素是int32 类型的:   输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 二.程序代码 三.结果截图 四.心得体会

软件工程课堂训练——找水王

一.题目要求: • 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. • 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 二.解决思路       根据老师上课提供的消消乐思想.采用不同则消除的方法,根据用户的无序的id输入.遍历时,比较相邻两个ID,如果不一致则消除,“水王”发帖数目超过了帖子数目的

软件工程课堂训练——结对开发

一.题目及要求: 1.题目:返回一个整数数组中最大子数组的和. 2.要求: ①输入一个整形数组,数组里有正数也有负数:数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和:求所有子数组的和的最大值:要求时间复杂度为O(n). ②两人结对完成编程任务:一人主要负责程序分析,代码编程,一人负责代码复审和代码测试计划. 3.结对人员:胡亚宝  焦燕 二.设计思路: ①第一个方法,定义一个数组,将所有的子数组都列出来,再将它们的和都求出来放到该数组中,再求最大值,输出.但是在编写过程中,我们发

软件工程课堂训练———找三个小水王

一.题目描述 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID.据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗? 二.解决思路 沿用上次消除的思想,定义三个计数器和三个嫌疑水王,比较三个ID,如果不相同,就排除,如果相同,那么计数器加一.嫌疑水王ID都与其它水军ID进行抵消最后剩下的就是三个水王. 三.程序代码 // shuiba.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include &q

软件工程课堂训练————最便宜购书方案

一·实验题目: 某书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元,具体折扣如下所示: 本数                  折扣 2                       5% 3                       10% 4                       20% 5                       25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两

结对开发-- 一维数组求和最大的子数组的大数溢出问题

结对人员:韩雪东,高扬 一.设计思路 对于大数溢出问题开始很迷茫,不大懂该干什么,思路匮乏.因为只要溢出这个数就不会被存储被改变,这样导致很难去判断溢出后该怎样做,但后来我们改变了一下思路,采用逆向思维,首先找到能存储的最大数,用它来减去将要运行的数,从而与即将要加的数比较,如果小了咋说明相加后会产生溢出,直接结束程序. 二.源代码 // ceshi.cpp : Defines the entry point for the console application. //作者:韩雪东,高扬 //