一函数找出两个字符串中的最大公共子串。利用此函数输入两个字符串,输出这两个字符串的最大公共子串。
//(利用C语言·)设计一函数找出两个字符串中的最大公共子串。并利用此函数从键盘输入两个字符串,输出这两个字符串的最大公共子串....
//(利用C语言·)设计一函数找出两个字符串中的最大公共子串。并利用此函数从键盘输入两个字符串,输出这两个字符串的最大公共子串.
展开
1个回答
展开全部
//不知道是否能运行。没有放到运行环境下实验。报错请追问
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[100],temp[100],temp2[100];
int i,j;
scanf("%s%s",s1,s2);
if(strlen(s2)>strlen(s1))
{
strcpy(temp,s1);
strcpy(s1,s2);
strcpy(s2,temp);
}
temp[0]=0;//方便后续操作
for(i=0;i<stelen(s2);i++)
for(j=strlen(s2);j>i;j--)
{
strncpy(temp2,s2+i,j-i);
if(strstr(s1,temp2))
{
if(strlen(temp2)>strlen(temp))
strcpy(temp,temp2);
}
}
printf("%s\n",temp);
return 0;
}
更多追问追答
追答
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100],s2[100],temp[100],temp2[100];
int i,j;
scanf("%s%s",s1,s2);
if(strlen(s2)>strlen(s1))
{
strcpy(temp,s1);
strcpy(s1,s2);
strcpy(s2,temp);
}
temp[0]=0;//方便后续操作
for(i=0;i<strlen(s2);i++)
for(j=strlen(s2);j>i;j--)
{
memset(temp2,0,sizeof(temp2));//增加了这一句
strncpy(temp2,s2+i,j-i);
if(strstr(s1,temp2))
{
if(strlen(temp2)>strlen(temp))
strcpy(temp,temp2);
}
}
printf("%s\n",temp);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询