pat 乙级 1052. 卖个萌 (20)
第一次提交 :12 分 发生两次段错误:
发现原来是我 忽略了 表情数组的长度要大于0 ,如果小于0 直接输出 Are you kidding me ?
代码实现:
#include <iostream>
#include<cstring>
using namespace std;
int get (string hand,string a[]){//用于把初始三个字符串转换成不含[]的三个string数组
int k=0;
for(int i=0;i<hand.size();i++){
if(hand[i]!='['&&hand[i]!=' '&&hand[i]!=']')
a[k]+=hand[i];
if(hand[i]==']')
k++;
}
return k;
}
string s[3];
string shou[11],yan[11],kou[11];
int main()
{
for (int i=0;i<3 ;i++ )
{
getline(cin,s[i]);
}
int len1=get(s[0],shou);
int len2=get(s[1],yan);
int len3=get(s[2],kou);
int N;
cin>>N;
int num[N][5];
for (int i=0;i<N ;i++ )
{
for (int j=0;j<5 ;j++ )
{
cin>>num[i][j];
}
}
for (int i=0;i<N ;i++ )
{
int a=num[i][0],b=num[i][1],c=num[i][2],d=num[i][3],e=num[i][4];
// 就是这里要加上大于0 的判断
if (a<=len1 && b<=len2 && c<=len3 && d<=len2 && e<=len1&&a>0&&b>0&&c>0&&d>0&&e>0)
{
cout<<shou[a-1]<<"("<<yan[b-1]<<kou[c-1]<<yan[d-1]<<")"<<shou[e-1]<<endl;
}
else cout<<"Are you kidding me? @\\/@"<<endl; // 注意这里\ 转义字符 要加\
}
return 0;
}
版权声明:本文为qikai121521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。