软件工程第二次作业
一.题目要求
- 题目(1):最大连续子数组和(最大子段和)
- 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。
-- 引用自《百度百科》
二.代码Github存放地址
三.运行结果
四.测试用例
- 流程图如下
依据流程图,采用判定/条件覆盖覆盖,得到测试用例adc ^ abe或abc ^ ade,选择adc ^ abe[-2,11,-4,13,-5,-2]。
五.自动测试
#include "pch.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
int n = 6, i, sum1 = 0, sum2 = 0, mod = 0;
int a[6] = { -2,6,-5,8,-7,9 };
for (i = 0; i < n; i++)
{
sum1 = sum1 + a[i];
if (sum1 < 0)
{
sum1 = 0;
}
if (sum1 > sum2)
{
sum2 = sum1;
}
}
}
TEST_METHOD(TestMethod2)
{
int n = 0, i, sum1 = 0, sum2 = 0, mod = 0;
for (i = 0; i < n; i++)
{
sum1 = sum1;
if (sum1 < 0)
{
sum1 = 0;
}
if (sum1 > sum2)
{
sum2 = sum1;
}
}
}
};
}
六.工作记录
项目 |
记录结果 |
日期 |
2019.4.7 |
开始时间 |
18:50 |
结束时间 |
17:10 |
源编码行数 |
24 |
测试代码行数 |
43 |