1.题目描述:
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
2.输入描述:
输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。
3.输出描述:
按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。
4.输入例子:
7_This_is_a_test
_hs_s_a_es
5.输出例子:
7TI
6. 解题思路:
1. 遍历第一个字符串的每个字符与第二个字符串中每一个字符比较,筛选出第二个字符串中没有的字符;
2. 每次筛选出一个字符:
(一)如果为小写字母就要转换为大写字母
(二)字符不能重复(这就要遍历第一个字符串所遍历位置之前的字符来判断是否存在重复)
7. 源代码:
#include<stdio.h>
int main()
{
int i,j,k,m,n;
char str1[81],str2[81];
scanf("%s%s",str1,str2);
for(i=0;str1[i]!='\0';i++)//遍历第一个字符串
{
m=0;
for(j=0;str2[j]!='\0';j++)//遍历第二个字符串
if(str2[j]==str1[i])
{
m=1;
break;
}
if(m==0)//筛选出第二个字符中没有的字符
{
n=0;
if(str1[i]>='a'&&str1[i]<='z')//字母小写转大写
str1[i]-=32;
for(k=0;k<i;k++)//遍历第一个字符串遍历位置之前的字符
{
if(str1[k]==str1[i])//判断字符是否重复
{
n=1;
break;
}
}
if(n==0)
printf("%c",str1[i]);//输出
}
}
return 0;
}