PAT_乙級 1033 舊鍵盤打字
阿新 • • 發佈:2019-02-02
1.題目描述:
舊鍵盤上壞了幾個鍵,於是在敲一段文字的時候,對應的字元就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?
輸入格式:
輸入在2行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過105個字元的串。可用的字元包括字母[a-z, A-Z]、數字0-9、以及下劃線“_”(代表空格)、“,”、“.”、“-”、“+”(代表上檔鍵)。題目保證第2行輸入的文字串非空。
注意:如果上檔鍵壞掉了,那麼大寫的英文字母無法被打出。
輸出格式:
在一行中輸出能夠被打出的結果文字。如果沒有一個字元能被打出,則輸出空行。
輸入樣例:
7+IE.
7_This_is_a_test.
輸出樣例:
_hs_s_a_tst
2.解題思路:
先把壞掉的鍵存起來,如果‘+‘也壞掉了,說明所有的大寫字母都應該被跳過。其他的每次輸入的時候都對比一下badkey陣列中是否存在該字元,如果存在就不輸出。注意點是小寫字母在badkey裡是大寫字母。檢測的時候要注意轉換。
3.程式碼部分:
#include<stdio.h> #include<string.h> int main(void) { int i=0,flag=0,sign=0; char badkey[100]={0},ch=0; gets(badkey); //while(getchar()!='\n'); for(i=0;i < strlen(badkey);i++) if(badkey[i]=='+') flag=1; while((ch=getchar())!='\n') { sign=0; if(ch<='Z'&&ch>='A' && flag==1) continue; for(i=0;i < strlen(badkey);i++) if(ch==badkey[i] || (ch<='z' && ch>='a' && ch+'A'-'a'==badkey[i])) { sign=1; break; } if(sign==1) continue; printf("%c",ch); } return 0; }