求两个字符串的交集,看似简单,实则需要考虑的细节很多。
我的思路:
1.将两个字符串简化,将里面重复的字母减少为一个。
2.拼接两个字符串,借助循环把重复出现两次的字符找出来。
有了思路开始写代码。
一、main()函数
思路:
1.定义两个储存字符串的数组tt[M],pp[M]
2.定义指针*p接收fun2() 返回值,输出交集
3.输入两个字符串(此处注意越界问题)
4.调用函数
5.输出交集
#include#include //用到strcat(),strlen()函数 #define M 50 void fun1(char tt[]); //将字符串中相同的字母去掉 char *fun2(char tt[]); //将重复的(子集)找出来 int main() { char tt[M],pp[M]; //定义两个数组,储存字符串 char *p; //接受fun2()返回的地址,并输出交集字符串 int i; gets(tt); //abcdef123abc12 gets(pp); //acef123ace124 fun1(tt); //调用函数 fun1(pp); //printf("%sn",tt); //供检验使用 //printf("%sn",pp); strcat(tt,pp); //printf("%sn",tt); p=fun2(tt); //调用函数 for(i=0;*(p+i)!=' ';i++) { printf("%c",*(p+i)); //acef123 } return 0; }
二、fun1()函数
fun1()作用是将字符串中重复的字符只保留一个
思路:
1.先将重复出现的字符出去第一次出现那个都换成' '(此处为一个空格)
2.在将字符串数组元素移动,去除' '(空格)
void fun1(char tt[]) //将重复的字符抹掉
{
int i,j;
char ch;
for(i=0;i

