思路 :
count思想 :
先遍历 第一行 出现过 的 标记为 1
遍历第二行输入 出现过的 标记为0
定义数组保存 count 为1 的 遍历输出即可
注意 英文字母只输出大写 。
#include<stdio.h>
#include<string.h>
int main()
{
char s1[82];
char s2[82];
char sout[82];
scanf("%s %s",s1, s2);
int count[200] = {0}; //常用ASCII最大为127;
for ( int i = 0; i < strlen(s1); i ++ ) {
if ( s1[i] >= 97 ) { //也可以把97换成'a';减去32实现大小写转换,小写字母的ASCII码大于小写字母的
count[s1[i] - 32] = 1; // 'k' - 'a' + 'A’= 'K',这样也能实现大小写转换
} else {
count[s1[i]] = 1;
}
}
for ( int i = 0; i < strlen(s2); i ++ ) {
if ( s2[i] >= 97 ) {
count[s2[i] - 32] = 0;
} else {
count[s2[i]] = 0;
}
}
int j = 0;
for ( int i = 0; i < strlen(s1); i ++ ) {
if ( s1[i] >= 97 && count[s1[i] - 32] > 0 ) {
sout[j ++] = (char)(s1[i] - 32);
count[s1[i] - 32] = 0;
} else if (s1[i] < 97 && count[s1[i]] > 0) {
sout[j ++] = s1[i];
count[s1[i]] = 0;
}
}
for( int i = 0; i < j; i ++ ) { //切记,以后再遇到逐个拷贝得来的字符串,一定要这么输出
printf("%c", sout[i]);
}
return 0;
}