1. 程式人生 > >【PAT】1052. 賣個萌 (20)

【PAT】1052. 賣個萌 (20)

萌萌噠表情符號通常由“手”、“眼”、“口”三個主要部分組成。簡單起見,我們假設一個表情符號是按下列格式輸出的:

左手[右手]
現給出可選用的符號集合,請你按使用者的要求輸出表情。

輸入格式:

輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符號括在一對方括號[]內。題目保證每個集合都至少有一個符號,並不超過10個符號;每個符號包含1到4個非空字元。

之後一行給出一個正整數K,為使用者請求的個數。隨後K行,每行給出一個使用者的符號選擇,順序為左手、左眼、口、右眼、右手——這裡只給出符號在相應集合中的序號(從1開始),數字間以空格分隔。

輸出格式:

對每個使用者請求,在一行中輸出生成的表情。若使用者選擇的序號不存在,則輸出“Are you kidding me? @\/@”。

輸入樣例:
[╮][╭][o][~][/~] [<][>]
[╯][╰][^][-][=][>][<][@][⊙]
[Д][▽][_][ε][^] …
4
1 1 2 2 2
6 8 1 5 5
3 3 4 3 3
2 10 3 9 3
輸出樣例:
╮(╯▽╰)╭
<(@Д=)/~
o(^ε^)o
Are you kidding me? @\/@

有兩個需要注意的地方:
1.輸出 printf(“Are you kidding me? @\/@\n”);
需要多加一個反斜槓,因為\是用來表示轉義字元的。
2.另外要考慮輸入的值小於等於0的情況

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[99],s1[12][5],s2[12][5],s3[12][5];
int get_string(char str[][5]){
    int cnt=0;
    gets(s);
    for(int i=0;i<strlen(s);i++){
        if(s[i]=='['){
            cnt++;
            i++;
            int
j; for(j=0;s[i]!=']';i++,j++){ str[cnt][j]=s[i]; } str[cnt][j]='\0'; } } return cnt; } int main() { int num1=get_string(s1); int num2=get_string(s2); int num3=get_string(s3); int k,a[5]; scanf("%d",&k); while(k--){ bool isOK=true; for(int i=0;i<5;i++){ scanf("%d",&a[i]); if(a[i]<=0)isOK=false; } if(isOK==false||a[0]>num1||a[1]>num2||a[2]>num3||a[3]>num2||a[4]>num1){ printf("Are you kidding me? @\\/@\n"); } else{ printf("%s(%s%s%s)%s\n",s1[a[0]],s2[a[1]],s3[a[2]],s2[a[3]],s1[a[4]]); } } return 0; }