一函数找出两个字符串中的最大公共子串。利用此函数输入两个字符串,输出这两个字符串的最大公共子串。

//(利用C语言·)设计一函数找出两个字符串中的最大公共子串。并利用此函数从键盘输入两个字符串,输出这两个字符串的最大公共子串.... //(利用C语言·)设计一函数找出两个字符串中的最大公共子串。并利用此函数从键盘输入两个字符串,输出这两个字符串的最大公共子串. 展开
 我来答
snowland
2014-12-05 · 知道合伙人软件行家
snowland
知道合伙人软件行家
采纳数:1229 获赞数:7313
多次参加C++算法类竞赛获奖。

向TA提问 私信TA
展开全部

//不知道是否能运行。没有放到运行环境下实验。报错请追问

#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式