PAT_B_1029 舊鍵盤

題目描述:spa

舊鍵盤上壞了幾個鍵,因而在敲一段文字的時候,對應的字符就不會出現。如今給出應該輸入的一段文字、以及實際被輸入的文字,請你列出確定壞掉的那些鍵。
輸入格式:
輸入在 2 行中分別給出應該輸入的文字、以及實際被輸入的文字。每段文字是不超過 80 個字符的串,由字母 A-Z(包括大、小寫)、數字 0-九、以及下劃線 _(表明空格)組成。題目保證 2 個字符串均非空。
輸出格式:
按照發現順序,在一行中輸出壞掉的鍵。其中英文字母只輸出大寫,每一個壞鍵只輸出一次。題目保證至少有 1 個壞鍵。
輸入樣例:
7_This_is_a_test
_hs_s_a_es
輸出樣例:
7TI

本人AC代碼:blog

// PAT_1029_Broken_Key

# include <stdio.h>
# include <string.h>

int main(void) 
{
	char S1[100]; // 記錄本應該輸入的字符 
	char S2[100]; // 記錄實際輸出的字符
	char Break_Key[85]; // 記錄壞掉的鍵
	
	int i=0, j=0, k=0;
	int len1, len2;
	int flag = 1;
	int n = 0; // 記錄壞掉的鍵個數 
	
	// 輸入字符串 
	gets(S1);
	gets(S2);
	
	len1 = strlen(S1);
	len2 = strlen(S2);
	
	for(i=0;i<strlen(S1);i++)
	{
		 if(S1[i]>='a'&&S1[i]<='z')
		 	S1[i]=S1[i]-32; 
	}
	for(i=0;i<strlen(S2);i++)
	{	
		 if(S2[i]>='a'&&S2[i]<='z')
			 S2[i]=S2[i]-32; 
	}
	i=j=0;
	//  開始比對字符串 
	while (i<len1 || j<len2) 
	{
		// 若是對應位置不相同,則說明該鍵是壞鍵
		//  有壞鍵則S2下標不動 
		if (S1[i] != S2[j])
		{
			// 判斷是否在已經壞掉的字符串中出現過 
			k=0;
			flag = 1;
			while (Break_Key[k] != '\0')  
			{
				// 若是S1[i] 在Break_Key 字符串中出現過,則再也不繼續,設置標誌符號flag=0;
				if (S1[i] == Break_Key[k])
				{
					flag = 0;
					break;
				}
				k++;
			}
			// 寫入的時候,字母大寫 
			if (flag == 1)
			{
				Break_Key[n] = S1[i];
				n++;
			}	
			i++;
		}
		// 不然,說明該鍵沒問題 
		else
		{
			i++;
			j++;
		} 
		
	}
	for (i=0; i<n; i++)
	{
		printf("%c",Break_Key[i]);
	}
	printf("\n");
	return 0;
}

RRR字符串

相關文章
相關標籤/搜索