输入三个字符串,允许有空格,输出最大公共子串 例如输入: what your name my name is ABC

/*
输入三个字符串,允许有空格,输出最大公共子串
例如输入:
what your name
my name is ABC
name is worthless




输出  name
*/ 
#include"stdio.h"
#include"string.h"
int main()
{
char str1[30],str2[30],str3[30];
printf("请输入第一个字符串\n");
gets(str1);
printf("请输入第二个字符串\n");
gets(str2);
printf("请输入第三个字符串\n");
gets(str3);
char res1[30],res2[30],res3[30];//公共部分存储 

int length1,length2,length3;
length1=strlen(str1);
length2=strlen(str2);
length3=strlen(str3);
 
// printf("length1=%d,length2=%d,length3=%d,",length1,length2,length3);  测试长度 
//puts(str1); 测试是否输入正确 
//puts(str2);
//puts(str3);
int i,j,k;  // 用三个变量控制三个for 
int m=0,n=0;//公共存储变量 
int a=0,b=0,c=0;
for(i=0;i {
for(j=0;j {

if((str1[i]==str2[j])&&(str1[i]!=' '))
{
// printf("%c",str1[i]);

res1[m++]=str1[i];
}

}
}
printf("\n");

//测试很多次,直接比较会出现乱码情况,那就在第一个和第二个字符串的公共部分得出后进行处理一次
//消除公共部分
for(i=0;i {
if((res1[i]!=res1[i+1]))
{
// printf("%c",res1[i]);
res2[a++]=res1[i];   //测试成功 
}
}

printf("\n");
 


for(k=0;k {

for(n=0;n {
if(str3[k]==res2[n])
{
  // printf("%c",res2[n]);
res3[b++]=res2[n];
}

}
}
printf("\n");



for(i=0;i {
if((res3[i]!=res3[i+1]))
{
printf("%c",res3[i]);
//res2[a++]=res1[i];   //测试成功 
}
}

printf("\n");


//说一万遍都不住,定义变量记得赋初值
   //智障城! 

}

你可能感兴趣的:(c/c++)