1052 卖个萌 (20分)
感觉20分的题目拿满分还是有点难度的。
测试点2又没有通过。。不知道原因
测试点2没有通过是因为我把continue写成了break!!!!!!
【思路】
首先提取出各个部分的表情符号。获取输入,在每一个输入时判断是否超出,如果超出警告,没有则对应输出表情。
【碰到的问题】
1.如何提取表情部件? 遍历每行,把位于[]中间的存为一个string,放入另一个数组中
2.如何输入表情?getline,因为中间有空格所以需要使用getline
3.输出错误时格式不对?‘\’是转义字符,需要在前面添加一个\输出
4.在vs里输出结果不正确?我觉得可能是不在ASCII码表中的符号没法正常输出
#include<iostream>
#include<string>
using namespace std;
void suan(string s,string s1[])
{
int t = 0;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '[')
{
i++;
while (s[i] != ']')
{
s1[t] += s[i];
i++;
}
t++;
}
}
}
int main()
{
string a, b, c,d[10],e[10],f[10];
getline(cin, a);
getline(cin, b);
getline(cin, c);
int sum = 0; cin >> sum;
suan(a, d);//提取表情
suan(b, e);
suan(c, f);
for (int i = 0; i < sum ; i++)
{
int a1, b1, c1, d1, f1;
cin >> a1 >> b1 >> c1 >> d1 >> f1;
if (d[a1 - 1].empty() || d[f1 - 1].empty() || e[b1 - 1].empty() || e[d1 - 1].empty() || f[c1 - 1].empty())
{
cout << "Are you kidding me? @\\/@" << endl; continue;
}
cout << d[a1 - 1] << "(" << e[b1 - 1] << f[c1 - 1] << e[d1 - 1] << ")" << d[f1 - 1]<<endl;
}
return 0;
}