【C++语言】卡码网语言基础课系列----11. 句子缩写
文章目录
- 练习题目
- 句子缩写
- 具体代码实现
- 小白寄语
- 诗词共勉
练习题目
句子缩写
题目描述:
输出一个词组中每个单词的首字母的大写组合。
输入描述:
输入的第一行是一个整数n,表示一共有n组测试数据。(输入只有一个n,没有多组n的输入)
接下来有n行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。
输出描述:
请为每组测试数据输出规定的缩写,每组输出占一行。
输入示例
1
ad dfa fgs
输出示例
ADF
提示
注意:单词之间可能有多个空格
具体代码实现
#include <iostream>
#include <string>
using namespace std;
char changeChar(char &ch)
{
if (ch >= 'a' && ch <= 'z') {
ch -= 32;
}
return ch;
}
int main()
{
int n; // 用于接收n组数据
cin >> n; // 接收键盘输入的n
getchar(); // 吸收一个回车,因为输入n之后,要输入一个回车
while (n--) {
// 开始处理第一组数据
string s; // 用于接收第一行数据字符
getline(cin, s); // 将第一行字符数据存入s中
string result; // 用于记录结果
// 处理第一个字符
s[0] = changeChar(s[0]);
result += s[0]; // 将转换后的数据存入结果中
// 循环处理后续数据,遇到当前空格,且下一个非空格,则获取数据,并进行转换,然后存入结果中
for (int i = 1; i < s.size() - 1; i++) {
if (s[i] == ' ' && s[i+1] != ' ') {
s[i+1] = changeChar(s[i+1]);
result += s[i+1];
}
}
cout << result << endl;
}
return 0;
}
// #include <iostream>
// #include <string>
// using namespace std;
// int main()
// {
// int n; // 用于接收n组数据
// cin >> n; // 接收键盘输入的n
// getchar(); // 吸收一个回车,因为输入n之后,要输入一个回车
// while (n--) {
// // 开始处理第一组数据
// string s; // 用于接收第一行数据字符
// getline(cin, s); // 将第一行字符数据存入s中
// string result; // 用于记录结果
// // 处理第一个字符
// if (s[0] >= 'a' && s[0] <= 'z') {
// s[0] -= 32; // 小写字母转大写字母
// }
// result += s[0]; // 将转换后的数据存入结果中
// // 循环处理后续数据,遇到当前空格,且下一个非空格,则获取数据,并进行转换,然后存入结果中
// for (int i = 1; i < s.size() - 1; i++) {
// if (s[i] == ' ' && s[i+1] != ' ') {
// if (s[i+1] >= 'a' && s[i+1] <= 'z') {
// s[i+1] -= 32;
// }
// result += s[i+1];
// }
// }
// cout << result << endl;
// }
// return 0;
// }
小白寄语
扎根,做好手头的事,精进。
诗词共勉
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德