第1小问:经过在网上的搜索,我不太同意这位前辈所说的观点,(<a target=_blank href="http://blog.csdn.net/jierandefeng/article/details/38044881">点击打开链接</a>),个人认为在本小问中不需要讨论奇偶性。
代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int> num;
int a, sum;
while (cin >> a)
num.push_back(a);
for (vector<int>::size_type i = 0; i != num.size()-1; ++i)
{
sum = num[i] + num[i + 1];
cout << sum << " ";
}
cout << endl;
system("pause");
return 0;
}
第2小问:
对于此问,由题意,第一个数和倒数第一个数相加,第二个数和倒数第二个数相加;即若为奇数个数,则把中间单个的数自己加自己。
代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<int> num;
int a, sum;
while (cin >> a)
num.push_back(a);
if (num.size() % 2) //奇数
for (vector<int>::size_type i = 0; i != 1 + num.size() /2 ; ++i)
{
sum = num[i] + num[num.size() - 1 - i];
cout << sum << " ";
}
else //偶数
for (vector<int>::size_type i = 0; i != num.size() /2; ++i)
{
sum = num[i] + num[num.size() - 1 - i];
cout << sum << " ";
}
system("pause");
return 0;
}
但如何实现奇数个数时,能配对的相加,最后把不能配对的单独输出,若把单独输出写在循环里是不对的,写在循环外又非法,待解决。