

题目
解决代码及点评
/*
输入一个正数 n,输出所有和为 n 连续正数序列。
例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1 -5、4-6 和 7-8。
*/
#include <iostream>
using namespace std;
void Print(int i, int j)
{
while (i <= j)
{
cout<<i++<<" ";
}
cout<<endl;
}
// 找序列函数
void FindSq(int nNum)
{
int nBegin = 1;
int nEnd = 2;
int nMid = nNum / 2;
int nSum = nBegin + nEnd; // 一开始sum = 3
while (nBegin <= nMid)
{
if (nSum == nNum)
{
Print(nBegin, nEnd);
nSum -= nBegin++;
}
else if (nSum < nNum) // 如果sum小了,end就忘后面移动
{
nSum += ++nEnd;
}
else // 如果sum大了,则向左边移动
{//nSum > nNum
nSum -= nBegin++;
}
}
}
int main()
{
FindSq(25);
system("pause");
return 0;
}
代码下载及其运行
代码下载地址:http://download.youkuaiyun.com/detail/yincheng01/6704519
解压密码:c.itcast.cn
下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:
1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”
2)在下拉框中选择相应项目,项目名和博客编号一致
3)点击“本地Windows调试器”运行
程序运行结果