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;
}
欢迎交流探讨。
谢谢。