1033 舊鍵盤打字(20 分)
阿新 • • 發佈:2018-09-02
ios class 出現 輸出 在哪裏 包括 psu 結果 cin
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?
輸入格式:
輸入在 2 行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過 10?5?? 個字符的串。可用的字符包括字母 [a
-z
, A
-Z
]、數字 0
-9
、以及下劃線 _
(代表空格)、,
、.
、-
、+
(代表上檔鍵)。題目保證第 2 行輸入的文字串非空。
註意:如果上檔鍵壞掉了,那麽大寫的英文字母無法被打出。
輸出格式:
在一行中輸出能夠被打出的結果文字。如果沒有一個字符能被打出,則輸出空行。
輸入樣例:
7+IE. 7_This_is_a_test.
輸出樣例:
_hs_s_a_tst
//做這道題的時候,我和寶玉有同一種感覺,這道題我好像在哪裏見過 #include<iostream> using namespace std; int main(){ string a,b,c;//a是壞鍵字符串,b是輸入的字符串,c是應該輸出的字符串 getline(cin,a);//這裏一定要用getline,因為他給你的字符串裏面可能有空格之類的 cin>>b; int m=0; int k=0; if(a.find(‘+‘)<a.length())m=1;//如果上檔鍵壞了,就將m置為1for(int i=0;i<b.length();i++){ if(a.find(b[i])<a.length())continue;//如果能在壞鍵字符串中找到b[i],不作處理 else if(m==1&&b[i]>=‘A‘&&b[i]<=‘Z‘)continue;//如果上檔鍵是壞的,b[i]是大寫字母,也不做處理 else if(a.find(toupper(b[i]))<a.length())continue;//因為給的壞件是以大寫字母形式展現的,所以如果b[i]的大寫形式可以在壞鍵中找到,不作處理else {//以上情況都沒有發生,就是好的鍵 c+=b[i]; k=1; } } if(k)cout<<c;//如果有好鍵就輸出字符串,沒有就輸出空行 else cout<<"\n"; }
1033 舊鍵盤打字(20 分)