词组缩写

mac2022-06-30  28

【题目描述】 定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。 比如,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

最新回复(0)