卡码网编程基础课 | 14. 句子缩写

问题描述

题目描述

输出一个词组中每个单词的首字母的大写组合。

输入描述

输入的第一行是一个整数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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值