仅验证了样例
这个输出让我着实头疼,本来想一个一个字符输出的,但这样的话我的每行都只会有一个字母了。后来才想明白,因为他给的是7*5的图案,本来就是对齐的,所以最好先保存好一个单词,然后像打印机一样一行一行地把图案打印出来,这样图案才看起来正确。
再然后要稍微注意一下我这种写法是要考虑最后一位是字母还是别的符号的,如果是字母的话,不要忘了把当前拼好的单词放进word数组里。
还有这道题需要用getline来输入,因为可能有空格的,和getline配对的就是不要忘了getchar()了。
#include <iostream>
#include <unordered_map>
#include <cstring>
#include <vector>
using namespace std;
unordered_map<char,string[7]> mp;
vector<string> word;
int main(){
char init='A';
for(int i=0;i<26;i++){
for(int j=0;j<7;j++){
string str;
cin>>str;
mp[init][j]=str;
}
init++;
}
getchar();
string str;
getline(cin,str);
string temp="";
for(int i=0;i<str.size();i++){
if(str[i]>='A'&&str[i]<='Z'){
temp+=str[i];
}else{
word.push_back(temp);
temp="";
}
if(i==str.size()-1&&str[i]>='A'&&str[i]<='Z'){
word.push_back(temp);
}
}
for(int i=0;i<word.size();i++){
for(int j=0;j<7;j++){
for(int k=0;k<word[i].length();k++){
printf("%s",mp[word[i][k]][j].c_str());
if(k!=word[i].length()-1){
printf(" ");
}else if(j!=6){
printf("\n");
}
}
}
if(i!=word.size()-1){
printf("\n\n");
}
}
return 0;
}