C语言题目:求两字符串中的最大公共字符串个数及公共字符串。 (不需要太过于繁琐,希望用最简单的方法)

如果程序一样,我会选取最先答的或者有流程图的,谢谢VC ++ 6.0 -
2025-03-18 15:35:08
推荐回答(3个)
回答1:

devc的话,是有结果的,一按回车的话先出结果然后瞬间消失。在后面加一个函数就能保留结果查看了。
在后面加了gets(b);然后就能用devc看到结果了。
#include
int main()
{
char a[1024],b[1024],c[1024];/*定义三个字符数组a,b,c*/
int n=0;/*统计公共字符的个数*/
int i;
printf("input a:\n");
fflush(stdin);/*清空字符串*/
gets(a);
printf("input b:\n");
fflush(stdin);/*清空字符串*/
gets(b);
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)

if(a[i]==b[i])
{
c[i]=a[i];/*把公共部分赋值给数组c[i]*/
n++;
}
c[i]=' ';
printf("公共部分的字符串个数是:\n");
printf("%d\n",n);
printf("公共部分的字符串:\n");
puts(c);
gets(b);
}

回答2:

#include
#include

using namespace std;

int main()
{
char str1[255],str2[255],*p1,*p2, *temp;
int sum=0;
cout<<"intput two strings"< cin>>str1;
cin>>str2;
p1=str1;
p2=str2;

while (*p1!='\0')
{
temp = p1;
if(*temp==*p2)
{

while((*temp==*p2)&&(*p2!='\0')&&(*temp!='\0'))
{
temp++;
p2++;
}
}
p1++;
if(*p2=='\0') sum=sum+1;
p2=str2;
}
cout< return 0;

}

回答3:

就一个问题,新分配的内存没有初始化,所以说结果是很不确定的,“运算出来不同字母数总是会比实际数多一个”,我这里多出了很多哦~修改之后运行正常:当然了,也可以搞点专业的做法:我装逼结束了。嗯,就是这样。