软件工程-单人任务

任务描述:

请阅读邹欣老师的这篇博文(地址:https://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)和构建之法第1~3章内容,尤其是第2章效能分析和第3章代码规范部分。

回顾和复习课堂讲授的单元测试部分内容。

任务目的:

熟悉一个“高质量”软件的开发过程。

任务要求:

(1) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例 。
(2) 请利用自动测试工具对程序进行测试 。
(3) 请下载《第二次作业.doc》模板将程序运行结果和自动测试分析结果截图保存到文档中,提交。

【题目内容】

使用C语言完成: 给定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。

【输入形式】

整数序列

【输出形式】

最大连续子数组和(最大子段和)

【测试用例1】

输入:

-2 11 -4 13 -5 -2

输出:

20

【测试用例2】

输入:

6 -3 -2 7 -15 1 2 2

输出:

8

【测试用例3】

输入:

-5 -3 -7 -10 -6 -8 -2

输出:

0

“优化后的代码”

#include

 单元测试

参考上一届学长文章:软件工程(2019)第二次作业 - 肖乃俊 - 博客园 (cnblogs.com)

软件为visual studio 2019,不会用visual studio 2010测试。。。

安装visual studio 2019参考文章visual studio2019的安装以及使用_江小举的博客-CSDN博客

最大连续子数组和(C语言)_C语言

 为单元测试修改代码结构

#include#include#includeusing namespace std;int maxsum(int nums[], int n)
{    int i = 0, sum = 0, maxsum = 0;    for (i = 0; i < n; i++)
    {
        sum = sum + nums[i];        if (sum < 0)
        {
            sum = 0;
        }        if (sum > maxsum)
        {
            maxsum = sum;
        }
    }    return maxsum;
}int main()
{    int n = 0, num = 0;    int nums[1000];    #pragma warning(suppress : 4996)    while (scanf("%d", &num) != EOF) 
    {
        nums[n] = num;
        n++;        if (getchar() == '\n')
        {            break;
        }
    }
    cout << maxsum(nums, n);
    system("pause");    return 0;
}

测试代码

#include "pch.h"#include "CppUnitTest.h"#include "../test.h"using namespace Microsoft::VisualStudio::CppUnitTestFramework;namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {    public:
        
        TEST_METHOD(TestMethod1)
        {            int a[6] = {-2,11,-4,13,-5,-2},
                b[8] = {6,-3,-2,7,-15,1,2,2},
                c[7] = {-5,-3,-7,-10,-6,-8,-2};
                Assert::AreEqual(maxsum(a,6),20);
                Assert::AreEqual(maxsum(b,8),8);
                Assert::AreEqual(maxsum(c,7),0);
        }
    };
}

测试>>运行所有测试

最大连续子数组和(C语言)_C语言_02