1. getchar() 函数:从输入中获取一个字符
2. getline(cin, s):从标准输入读取一行字符串,存储在字符串变量 s中
3. ASCII码值
字符的大小是根据它们在字符集中的ASCII码值来确定的。
ASCII码是一种字符编码标准,将每个字符映射到一个唯一的整数值。
比如小写字母'a'对应的ASCII码值是97, 小写字母'b'对应的ASCII码值是98
4. 该题难点在于如何通过空格拆分每一行的单词,获取单词的首字母,以及拼接输出每一行
5. 总结:注意点为做题容易忽略的地方
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
// s为每一组测试数据,接收每行输入的字符串
string s;
// n组测试数据
cin >> n;
// 注意点1:getchar()从输入中获取一个字符,吸收换行符
getchar();
while(n--)
{
// 注意点2:重置result
string result;
// 接收每一行数据,从标准输入读取一行字符串,存储在字符串变量 s中
getline(cin, s);
// 逻辑1:每一行第一个字符
// 判定新单词的首字母是否是小写,小写则转换成大写
if(s[0] >= 'a' && s[0]<='z')
{
s[0] -= 32;
}
// 将新单词首字母拼接到结果集中
result += s[0];
// 逻辑2:每一行其他字符
for(int i = 1; i < s.size() - 1; i++)
{
// 注意点3:跳过单词之间的多个空格
// 如果当前字符是空格,下一个字符不是空格,说明下一个字符是新单词的首字母
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;
}