博客信息 | 沈阳航空航天大学计算机学院2020软件工程作业 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 单元测试练习 |
一、问题:
给定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) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub系统中,并将代码地址附到博客内
(2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
(3) 请利用自动测试工具对程序进行测试
(4) 请将程序运行结果和自动测试分析结果截图附到博客中
三、代码
已上传至github网站:最大连续子数组和
四、程序运行结果:
五、程序流程图
选择判定/条件覆盖测试
- 用例1:af:{-1,-2,-3,-4,-5},最大字段和为0;
- 用例2:aec:{-2,11,-4,13,-5,-2 },最大字段和为20;
- 用例3:adc:{ 1,-2,3,10,-4,7,2,-5},最大字段和为18;
六、测试代码及自动测试结果
#include <stdio.h> #include <stdlib.h> #include <limits.h> int maxSubArray(int* nums, int numsSize) { int max = INT_MIN; int i, j, sum; for (i = 0; i < numsSize; i++) { if (nums[i] > 0) { break; } } if (i == numsSize) return 0; for (i = 0; i < numsSize; i++) { sum = 0; for (j = i; j < numsSize; j++) { sum = nums[j] + sum; if (sum > max) max = sum; } } return max; } int main() { int i; int a1[8] = { 1,-2,3,10,-4,7,2,-5 }; int result1 = maxSubArray(a1, 8); printf("原数组为:"); for (i = 0; i < 8; i++) printf("%d ", a1[i]); printf(" 最大子数组和为 %d ", result1); int a2[9] = { -2,1,-3,4,-1,2,1,-5,4 }; int result2 = maxSubArray(a2, 9); printf("原数组为:"); for (i = 0; i < 9; i++) printf("%d ", a2[i]); printf(" 最大子数组和为 %d ", result2); int a3[6] = { -2,11,-4,13,-5,-2 }; int result3 = maxSubArray(a3, 6); printf("原数组为:"); for (i = 0; i < 6; i++) printf("%d ", a3[i]); printf(" 最大子数组和为 %d ", result3); int a4[5] = { -1,-2,-3,-4,-5 }; int result4 = maxSubArray(a4, 5); printf("原数组为:"); for (i = 0; i < 5; i++) printf("%d ", a4[i]); printf(" 最大子数组和为 %d ", result4); return 0; }
测试成功结果截图:
七、PSP0 工作记录表
项目 | 记录结果 |
日期 | 2020.4.7 |
开始时间 | 12:40 |
结束时间 | 17:35 |
编码行数 | 59 |
错误数量 | 1 |
错误1 | 当输入全是负数的时候输出不正确 |
错误1修改时间 | 7min |
八、心得体会
此次作业我选择了第一道题,因为第一道题较第二道题没那么复杂,在需要运用测试资源管理器时,我的vs2019却打不开测试资源管理器,因此我让我我同学帮我测试了一下,才得以完成。通过这次作业对我以后得学习有了很大的帮助,在程序编写方面也有了一定的提高,希望以后的作业能够更好的完成。