作业要求 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454 |
---|---|
我在这个课程的目标是 | 掌握软件开发知识,自己设计简单的程序,发布并维护 |
此作业在哪个具体方面帮我实现目标 | 设计关于单元测试的程序 |
其他参考文献 | https://jingyan.baidu.com/article/d8072ac47c6701ec95cefd82.html https://www.cnblogs.com/yinianzs/p/9774375.html |
作业正文 |
本次作业
单元测试
数组中最大子数组的和
用类/函数来实现
需求:希望返回 3 种信息
最大子数组的和
最大子数组开始的下标
最大子数组结束的下标
从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
第一个数字:这次测试中有多少个数据, 数字后面是冒号。
后续数字: 每个数据的值,用逗号隔开
代码(C++)
#include<iostream>
using namespace std;
int main()
{
int n,star=0,end=0;
//实现整型数组的输入
cout<<"输入整型数组的长度";
cin>>n;
int *p=new int[n];
cout<<"输入一个整型数组";
for(int i=0;i<n;i++)
{
cin>>p[i];
}
int sum=p[0];
int max_sum=p[0];
for(int i=1;i<n;i++)
{
if(sum>0) //从第二个数开始判断是否为正数
{
sum=sum+p[i]; //是正数,将和值(初始值为p【0】)和第i+1个数做和。
if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。
{
max_sum=sum;
end=i;
}
}
else
{
sum=p[i]; //是负数,将第i+1个数的值赋值给和值sum
if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。
{
max_sum=sum;
star=i;
end=i;
}
}
}
cout<<"最大子数组位置为第"<<star+1<<"个到第"<<end+1<<"个"<<endl;
cout<<"最大子数组和为"<<max_sum<<endl;
system("pause");
return 0;
}
运行结果
单元测试
码云地址
https://gitee.com/sichuan_crane/firstwarehouse/blob/master/数组中最大子数组的和.cpp
回顾总结
大学以来学习了C++,JAVA,ASP.NET等等,目前掌握并不熟,无法自己独立编程,需要更加深入的学习。
来源:oschina
链接:https://my.oschina.net/u/4399347/blog/3219414