PAT 1052 賣個萌 20 易錯點

2021-08-16 02:42:46 字數 1505 閱讀 6638

題目描述:

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

左手[右手]

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

輸入格式:

輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符號括在一對方括號內。題目保證每個集合都至少有乙個符號,並不超過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.對字串的切割,選出需要的符號資訊。因為不知道符號的個數,筆者使用string容器讀入一行(注意空格的存在),之後根據方括號為判斷依據取出符號放在相應的vector容器中。建議讀者讀入一行之後將收集到的所有符號輸出,進行核對,檢查自己有沒有處理錯誤。

2.@\/@ 中含有轉義字元『\』因此需要在其前面再加上乙個』\』。

3.使用者輸入的序號使用1開始的,因此一定要對其進行判斷,不能超過了容器的範圍,不然出現段錯誤。

請看**:

#include

#include

#include

using

namespace

std;

int main()

face[i].push_back(sign); //將這個符號放入相應的符號集中

}else j++; //如果不是左方括號,那麼看下乙個 }}

int k;

cin>>k; //讀入使用者的請求個數

for(int i=0;iint lh,le,m,re,rh; //分別是左手(left hand)lh,左眼le,口m,右眼re,右手rl。

cin>>lh>>le>>m>>re>>rh;

if(lh>=1&&lh<=face[0].size()&&le>=1&&le<=face[1].size()&&m>=1&&m<=face[2].size()&&re>=1&&re<=face[1].size()&&rh>=1&&rh<=face[0].size())

else

}}

PAT 1052 賣個萌 20分 C 實現

萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要求輸出表情。輸入格式 輸入首先在前三行順序對應給出手 眼 口的可選符號集。每個符號括在一對方括號 內。題目保證每個集合都至少有乙個...

PAT 乙級 1052 賣個萌 20

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要...

PAT乙級 1052 賣個萌 20分

題目 萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要求輸出表情。輸入格式 輸入首先在前三行順序對應給出手 眼 口的可選符號集。每個符號括在一對方括號 內。題目保證每個集合都至少...