C++Primer练习3.17与3.20

3.17题目:从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写形式。输出改变后结果,每个词占一行。

代码如下:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
	vector<string> v;
	string s;
	while (cin >> s)
	{
	    v.push_back(s);
	}
	for (auto &i : v)    
	{
	    for (auto &j : i)
	    {
	    	j=toupper(j);
	    }
	}
	for (auto a:v)
	{
	    cout << a << endl;
	}
	system("pause");
}

 

3.20题目:读入一组整数并把它们存入一个vector对象,将每对相邻整数的和输出。改写你的程序,这次要求先输出第一个和最后一个元素的和,接着输出第二个和倒数第二个元素的和,以此类推。

第一小问:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int num;
	vector<int> v;
	while (cin >> num)
	{
	    v.push_back(num);
	}
	for (decltype(v.size()) i = 0; i != v.size()-1; i++)
	{
	    cout << v[i] + v[i + 1] << ends;
	}
	system("pause");
}

第二小问:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int num;
	vector<int> v;
	while (cin >> num)
	{
	    v.push_back(num);
	}
	decltype(v.size()) i;
	for (i = 0; i !=v.size()/2; i++)
	{
	    cout << v[i] + v[v.size() - i - 1] << ends;
	}
	if (v.size() % 2)
	{
	    cout << 2*v[v.size() / 2] << endl;
	}
	system("pause");
}

上面的方法要讨论奇偶情况,但也可不讨论。

	decltype(v.size()) i,end=v.size()-1;
	for (i = 0; i <= end; i++, end--)
	{
	    cout << v[i] + v[end] << ends;
	}

欢迎交流探讨。

谢谢。

猜你喜欢

转载自blog.csdn.net/weixin_44009743/article/details/86682969