PAT_B_1029 旧键盘

题目描述:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。
输出格式:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。
输入样例:
7_This_is_a_test
_hs_s_a_es
输出样例:
7TI

本人AC代码:

// 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

猜你喜欢

转载自www.cnblogs.com/Robin5/p/11243733.html