【题目】
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:
[左手]([左眼][口][右眼])[右手]
现给出可选用的符号集合,请你按用户的要求输出表情。
输入格式:
输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []
内。题目保证每个集合都至少有一个符号,并不超过 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? @\/@
【C语言解法】
enum emoji
{
left_hand,
left_eye,
mou,
right_eye,
right_hand
};
void get(char* cp[],char* arr) //取得每个[]里面首内部符号的地址,将他保存在cp中,并把arr中的]替换为'\0',直接打印cp里面地址所对应的字符串即可
{
char* tmp = arr;
int i = 0;
while (*tmp)
{
if (*tmp == '[')
{
cp[i++] = tmp + 1;
while (*tmp != ']')
tmp++;
*tmp = '\0';
}
tmp++;
}
}
int main()
{
char hand[100] = { 0 };
char eye[100] = { 0 };
char mouth[100] = { 0 };
char* cp_hand[10] = { 0 };
char* cp_eye[10] = { 0 };
char* cp_mouth[10] = { 0 };
int i = 0;
int j = 0;
char ch;
gets(hand);
gets(eye);
gets(mouth);
get(cp_hand, hand);
get(cp_eye, eye);
get(cp_mouth, mouth);
int k = 0;
scanf("%d", &k);
int emo[5] = { 0 };
for (i = 0; i < k; i++)
{
for (j = left_hand; j <= right_hand; j++)
{
scanf("%d", emo + j);
emo[j]--;
}
if (!cp_hand[emo[left_hand]] || !cp_eye[emo[left_eye]] || !cp_mouth[emo[mou]] || !cp_eye[emo[right_eye]] || !cp_hand[emo[right_hand]])
{
printf("Are you kidding me? @\\/@\n");
}
else
{
printf("%s(%s%s%s)%s\n", cp_hand[emo[left_hand]], cp_eye[emo[left_eye]], cp_mouth[emo[mou]], cp_eye[emo[right_eye]], cp_hand[emo[right_hand]]);
}
}
return 0;
}