词组缩写

题目描述
定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。
比如,C语言里常用的EOF就是end of file的缩写。

提示:注意考虑两个单词中间有多个空格的情况

输入

输入的第一行是一个整数T,表示一共有T组测试数据。
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。

输出

请为每组测试数据输出规定的缩写,每组输出占一行。

样例输入

1
end of file

样例输出

EOF

思路:

  • 首先接收一个整数,表示几组测试数据
  • 然后接收一组字符串,直接判断该字符串的第一个字符。若是小写字母,将其转化为大写字母。若是大写字母,则可以直接输出
  • 最后从字符串的第二个元素开始遍历,如果当前字符是空格且下一个字符不是空格而是小写字母,就可以将空格之后的字符转化为大写字母,同理若其本身就是大写字母,则可以直接输出

注意:

  • 一定要强制类型转换
  • 使用gechar吃回车!!!
  • 不要漏掉大写字母直接输出的情况

AC代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>

using namespace std;

int main()
{
    int T;
    cin >> T;
    
    //吃掉输入T之后的回车
    char ch = getchar();
    
    while (T--)
    {
        string str;
        getline(cin,str);
        
        //判断下标为0的字符
        if (str[0] >= 'a' && str[0] <= 'z') 
        {
            //将小写字母转换为大写字母,注意要强制类型转换
            cout << char(str[0] - 32);
        }else
        {
            //大写字母直接输出
            cout << char(str[0]);
        }
        
        //从下标为1的字符开始遍历
        for(int i = 1;i < (int)str.size();i++)
        {
            if (str[i] == ' ' && str[i + 1] != ' ')
            {
                //小写字母则转换
                if (str[i + 1] >= 'a' && str[i + 1] <= 'z')
                    cout << char(str[i + 1] - 32);
                //大写字母则直接输出
                else cout << char(str[i + 1]);
            }
        }
        
        //多组测试数据,因此每组都需要换行
        cout << endl;
    }
    return 0;
}

这题也算是多灾多难…
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值