#include <stdio.h>
#include <string.h>
int main()
{
//用来存储字符串
char str1[100];
char str2[100];
//接受输入
printf("请输入第一个长度小于100的字符串:");
scanf("%s", str1);
printf("请输入第二个长度小于100的字符串:");
scanf("%s", str2);
//用来存储字符串长度
int len1 = strlen(str1);
int len2 = strlen(str2);
//用来存储当前长度和最大长度
int count = 0;
int max = 0;
//计算最大长度
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
{
if(str1[i] != '\0' && str1[i] == str2[j])//遇到相同字符
{
int k = 0;
while (str1[k+i] != '\0' && str1[k+i] == str2[k+j])//开始判断从相同字符之后的相同字符长度
{
count++;
k++;
}
if (count > max)//当前和最大作比较
{
max = count;
}
}
count = 0;//清零,重新开始计算长度
}
}
//用来限制循环次数
int c1 = len1 - max + 1;
int c2 = len2 - max + 1;
//通过比较得到count,当count和max相同时就输出
for (int i = 0; i < c1; i++)
{
for (int j = 0; j < c2; j++)
{
if(str1[i] != '\0' && str1[i] == str2[j])
{
int k = 0;
while (str1[k+i] != '\0' && str1[k+i] == str2[k+j])
{
count++;
k++;
}
if (count == max)//如果相同
{
int a3 = j;
for (int p = 0; p < max; p++)//从相同的字符开始输出长度为max的字符串
{
printf("%c", str2[a3]);
a3++;
}
printf("\n");
}
}
count = 0;
}
}
return 0;
} |