|
发表于 2022-10-27 14:05:05
|
显示全部楼层
本楼为最佳答案
- #include <stdio.h>
- int main(void)
- {
- char s1[256] , s2[256] ;
- int d[256] , i , j , k , m , n ;
- printf("input first string : ") ;
- gets(s1) ;
- printf("input first string : ") ;
- gets(s2) ;
- for(i = 0 ; i < 256 ; i ++) d[i] = 0 ; // 开关数组每个元素初始化为 0
- for(i = 0 ; s1[i] ; i ++) d[s1[i]] = 1 ; // 为 s1 中的每一个字符打开开关
- for(i = 0 ; s2[i] ; i ++) d[s2[i]] = d[s2[i]] ? 0 : 1 ; // 为 s2 中的每一个字符打开开关,如果这个字符开关已经打开,那就将它关闭
- for(i = j = 0 ; s1[i] ; i ++) if(d[s1[i]]) s1[j ++] = s1[i] ; // 根据字符开关重建 s1
- s1[j] = '\0' ;
- for(i = j = 0 ; s2[i] ; i ++) if(d[s2[i]]) s2[j ++] = s2[i] ; // 根据字符开关重建 s2
- s2[j] = '\0' ;
- printf("%s\n" , s1) ;
- printf("%s\n" , s2) ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- input first string : ABCXYZDEFG
- input first string : abcXYZdefg
- ABCDEFG
- abcdefg
- D:\[00.Exerciese.2022]\C>
复制代码 |
|