萌萌噠表情符號通常由「手」、「眼」、「口」三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的:
[左手]([左眼][口][右眼])[右手]
現給出可選用的符號集合,請你按使用者的要求輸出表情。
輸入首先在前三行順序對應給出手、眼、口的可選符號集。每個符號括在一對方括號內。題目保證每個集合都至少有乙個符號,並不超過 10 個符號;每個符號包含 1 到 4 個非空字元。
之後一行給出乙個正整數 k,為使用者請求的個數。隨後 k 行,每行給出乙個使用者的符號選擇,順序為左手、左眼、口、右眼、右手——這裡只給出符號在相應集合中的序號(從 1 開始),數字間以空格分隔。
對每個使用者請求,在一行中輸出生成的表情。若使用者選擇的序號不存在,則輸出are you kidding me? @\/@
。
[╮][╭][o][~\][/~] [<][>]
[╯][╰][^][-][=][>][<][@][⊙]
[д][▽][_][ε][^] ...
41 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? @\/@
這道題對我來說最大的難點就是怎麼將這一系列字元給存成n行m列的字元陣列,因為沒有掌握字元陣列的特性,所以一開始是建立了一維字串陣列,其實同二維字元陣列是一樣的。以建立二維字元陣列為例,接下來需要做的就是分析輸入的字串,將「[」與「]」符號內包含的字元或字串放置在取不同名稱的二維字元陣列內。根據行數便可以輸出一整行的字元。、
getchar是讀入函式的一種。它從標準輸入裡讀取下乙個字元,相當於getc(stdin)。返回型別為int型,為使用者輸入的ascii碼或eof。這一段加粗的部分來自百科,表示了getchar()函式的意思,char型的字元陣列也可以儲存int型別的變數,只要int型別是對應的ascii碼值,便會自動根據ascii碼值進行數字到字元的轉換。還可以有(c=getchar())!='\n'的表示式。當乙個表情輸入完後,調整flag值,i++進入下一行,否則j++繼續往下讀直到另乙個符號為『]』為止。
兩個問題值得注意,第乙個是若輸入的下標不正確怎麼辦,其中乙個題目給出了示例,即下標為10,這時大於了最大值。但未考慮到下標小於1的情況,這是第乙個值得注意的點。第二個是輸出錯誤提示,其中『/』符號無法被打出,因為這是轉義符,不會被輸出,需要再增加乙個『/』符號。
所有的ascii碼都可以用「\」加數字(一般是8進製數字)來表示。而c中定義了一些字母前加"\"來表示常見的那些不能顯示的ascii字元,如\0,\t,\n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。(來自百科)
**如下:
#include #include #include #include using namespace std;
char hand[12][30];
char mouth[12][30];
char eye[12][30];
int get(char p[30])
//下標由1開始計算,方便對應
else if(c==']')
else}}
return count;
}int main()
else if(h1<1||h2<1||e1<1||e2<1||m<1)
else
}return 0;
}//字串該如何處理?
PAT 乙級 1052 賣個萌
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要...
PAT乙級 1052 賣個萌
萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要求輸出表情。輸入首先在前三行順序對應給出手 眼 口的可選符號集。每個符號括在一對方括號內。題目保證每個集合都至少有乙個符號,並不超...
PAT 乙級 1052 賣個萌
萌萌噠表情符號通常由 手 眼 口 三個主要部分組成。簡單起見,我們假設乙個表情符號是按下列格式輸出的 左手 左眼 口 右眼 右手 現給出可選用的符號集合,請你按使用者的要求輸出表情。輸入首先在前三行順序對應給出手 眼 口的可選符號集。每個符號括在一對方括號內。題目保證每個集合都至少有乙個符號,並不超...