词组缩写

【题目描述】
定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。
比如,C语言里常用的EOF就是end of file的缩写。
【输入格式】
输入的第一行是一个整数T,表示一共有T组测试数据。
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。
【输出格式】
请为每组测试数据输出规定的缩写,每组输出占一行。
【样例输入】
1
end of file
【样例输出】
EOF
【分析】
难度几乎为入门,然而陷阱太多。
大致的思路就是枚举空格然后输出。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
char big(char ch){//从样例就可以看出要输出的缩写都是大写
    if (ch>='a' && ch<='z') return ch-32; else return ch;
}
int main(){
    string s;
    int n;
    scanf("%d",&n);
    getchar();//读入N的时候没有换行,必须在这里读入换行符,我就在这里被坑了
    while (n--) {
        getline(cin,s);//不能用cin,因为cin遇到空格就停了
        if (s.size()==1) cout<<big(s[0]);//坑点:1个字母是没有空格的
        else
          for (int i=1;i<s.size();i++){//C++的字符串中第一个字符下标为0,如果是Pascal就是从2到length(s)
            if (s[i-1]==' ' && s[i]!=' ') cout<<big(s[i]);//正常的语句,不是坑
            if (s[i-1]!=' ' && i==1) cout<<big(s[i-1]);//坑点:第一个字母前面没有空格,然而它也要输出
          }
        cout<<endl;
    }
}

原文链接: https://www.cnblogs.com/JRX2015U43/p/6533468.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    词组缩写

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/245810

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午1:05
下一篇 2023年2月14日 上午1:06

相关推荐