问题描述
题目描述
输出一个词组中每个单词的首字母的大写组合。
输入描述
输入的第一行是一个整数n,表示一共有n组测试数据。(输入只有一个n,没有多组n的输入)
接下来有n行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。
输出描述
请为每组测试数据输出规定的缩写,每组输出占一行。
输入示例
1
ad dfa fgs
输出示例
ADF
提示信息
注意:单词之间可能有多个空格
python解法
# """
# **************************** 常规解法 *****************************
# """
# n = int(input()) # 输入测试用例的数量
# for _ in range(n):
# s = input() # 输入一行字符串
# result = ''
# # 如果首字母是小写,转换成大写
# result += s[0].upper() if s[0].islower() else s[0]
# # 遍历整个字符串
# for i in range(1, len(s)- 1):
# # 如果当前字符是空格,下一个字符不是空格,说明下一个字符是新单词的首字母
# if s[i] == ' ' and s[i + 1] != ' ':
# result += s[i + 1].upper() if s[i + 1].islower() else s[i + 1]
# # 打印结果
# print(result)
# """
# **************************** 函数解法 *****************************
# """
# def change_char(value):
# if 'a' <= value <= 'z':
# value = chr(ord(value) - 32)
# return value
# n = int(input()) # 输入测试用例的数量
# for _ in range(n):
# s = input() # 输入一行字符串
# result = ''
# # 如果首字母是小写,转换成大写
# result += change_char(s[0])
# # 遍历整个字符串
# for i in range(1, len(s)- 1):
# # 如果当前字符是空格,下一个字符不是空格,说明下一个字符是新单词的首字母
# if s[i] == ' ' and s[i + 1] != ' ':
# result += change_char(s[i + 1])
# # 打印结果
# print(result)
"""
**************************** 简易解法 *****************************
"""
n = int(input())
for _ in range(n):
words = input().split()
result = ''
# 遍历单词列表
for word in words:
# 获取每个单词的首字母,将之转换为大写,然后拼接到result中
result += word[0].upper()
print(result)
C++解法
# include<iostream>
# include<string>
# include<stdio.h>
// /****************************** 常规解法 *********************************/
// int main(){
// int n;
// std::cin >> n;
// std::getchar(); // 吸收一个回车,因为输入n之后,要输入一个回车
// std::string s;
// while (n--){
// std::getline(std::cin, s); // 接受新的一行
// std::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];
// }
// }
// std::cout << result << std::endl;
// }
// }
/***************************** 函数解法 *******************************/
char changeChar(char value){
if (value >= 'a' && value <= 'z'){
value -= 32;
}
return value;
}
int main(){
int n;
std::cin >> n;
std::getchar();
std::string s;
while (n--){
std::getline(std::cin, s);
std::string result;
result += changeChar(s[0]);
for (int i = 1; i < s.size() - 1; i++){
if (s[i] == ' ' && s[i+1] != ' '){
result += changeChar(s[i+1]);
}
}
std::cout << result << std::endl;
}
return 0;
}