1. 程式人生 > >PAT_乙級 1033 舊鍵盤打字

PAT_乙級 1033 舊鍵盤打字

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;
}