PAT 1052 卖个萌

题目连接:请点击
思路:这道题主要在于获得前3行的表情符号。先用if判断找到‘[’随后while循环直到找到’]’ 这中间的字符就是一个表情符号。(见process()函数)
注1:觉得这个题有个很坑的地方就是那个“Are you kidding me? @\/@”里面的“\”这个斜线想要输出应当使用“\\”(第一个\是转义字符)否则不会输出。这个bug找了30分钟。
代码:

#include<iostream>
#include<cstring>
using namespace std;
void process(string str,string sym[31]){
	int pos=0;
	for(int i=0;i<str.length();i++){
		if(str[i]=='['){
			int j=i;
			while(str[j]!=']') j++;
			sym[pos]=str.substr(i+1,j-i-1);
			i=j;
			pos++;
		}
	}
}
int main(){
	string hand[21]="",eye[21]="",mouth[21]="",str;
	getline(cin,str);//第1个测试用例第一行有空格要有getline cin遇到空格停止读取 
	process(str,hand);
	getline(cin,str);
	process(str,eye);
	getline(cin,str);
	process(str,mouth);
	int K,pos=0;
	cin>>K;
	string exp[K];
	for(int i=0;i<K;i++){
		for(int j=0;j<5;j++){
			int num; cin>>num;
			if(j==0||j==4){
				if(hand[num-1]==""){
					exp[pos]="Are you kidding me? @\\/@";
					break;
				}else exp[pos].append(hand[num-1]);
			} 
			if(j==1||j==3){
				if(eye[num-1]==""){
					exp[pos]="Are you kidding me? @\\/@";
					break;
				}else {
					if(j==1) exp[pos].append("(");
					exp[pos].append(eye[num-1]);
					if(j==3) exp[pos].append(")");
				}
			}
			if(j==2){
				if(mouth[num-1]==""){
					exp[pos]="Are you kidding me? @\\/@";
					break;
				}else exp[pos].append(mouth[num-1]);
			}
		}
		pos++;
	}
	for(int i=0;i<pos;i++) cout<<exp[i]<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值