简写单词
本文探讨了两种处理字符串并输出首字母缩写的编程方法。第一种方法使用getline获取整行输入,手动识别空格后的字母,并将小写字母转换为大写。第二种更简洁的方法直接在每次输入时获取以空格分隔的字符串,仅处理每个字符串的首字母并进行大写转换。两种方法都利用了ASCII码中大小写字母相差32的特性(大写=小写-32),但第二种方法更为高效,利用了输入时自然的分隔特性,避免了复杂的空格处理逻辑。

这个题其实并不难,但是有技巧,就是有的题在进行输入时就可以进行最后的输出,省空间。这个就是,先看我一开始写的:用getline(cin,buf)接收一整行数据,有空格也接收。
#include <iostream>
using namespace std;
#include<bits/stdc++.h>
int main() {string s;getline(cin,s);string suo;suo.push_back(s[0]);for(int i=1;i<s.size();i++){if(i+1!=s.size()){if(s[i]==' ') suo.push_back(s[i+1]);}}for(auto e:suo){if(e<='z' && e>='a'){e-=32;} cout<<e;}
}
// 64 位输出请用 printf("%lld")但是根本不需要自己判断空格,然后取空格后面的字符,在每次输入时本来就是空格输入一个字符串:
#include <iostream>
using namespace std;
#include<bits/stdc++.h>
int main() {string s;while(cin>>s){if(s[0]<='z' && s[0]>='a') cout<<char(s[0]-32);else cout<<s[0];}
}
// 64 位输出请用 printf("%lld")最后大写字母ASCII=小写字母ASCII-32
