P7694 [COCI2009-2010#4] AUTORI
Content
科学论文会大量引用一些早期的著作,因此在一个论文中出现两种不同的命名约定并不少见。这两种不同的命名约定分别是:
- 长变体,由每个作者姓氏的完整单词由连字符连接而成,例如
Knuth-Morris-Pratt。 - 短变体,仅由每个作者姓氏的第一个字符拼接而成,例如
KMP。
现在,你发现了一篇论文中同时使用了长变体和短变体这两种命名约定,你想编写一个程序,将所有的长变体变为短变体。
数据范围:字符串长度不超过
Solution
供题人在此谢罪,一开始没有把长变体中的每个单词开头一定是大写字母这个条件翻译上来,但貌似并不影响?如果没有翻译出来这个条件,也只需要将每个连字符 - 后的字符或第一个字符直接拿出来拼在一起就好了。
当然,有了长变体中的每个单词开头一定是大写字母这个条件之后,这道题目就非常简单了。在 cctype/ctype.h 库里面有一个 isupper() 函数,它可以判断当前的字符是否是一个大写字母。于是,我们直接遍历整个字符串,逢大写字母就输出即可。
Code
下面的代码是 COCI 官方给出的代码。
#include <string>
#include <iostream>
#include <cctype>
using namespace std;
int main() {
string a;
cin >> a;
for (int i = 0; i < (int)(a.size()); i++)
if (isupper(a[i]))
cout << a[i];
return 0;
}