运行起来有时候是对的,但有时候又不对。 #include<stdio.h> #include<string.h> int main() { char ch1[100]; char ch2[100]; //定义2个字符数组用语保存键盘输入的字符 printf("请输入一串字符:"); scanf("%s",ch1); printf("请再输入一串字符:"); scanf("%s",ch2); int length1 =strlen(ch1); int length2 = strlen(ch2); //取的2个字符串的长度用于遍历 int count=1; int max=0,which=0; //定义3个整型数组用于保存值。
for (int i =0;i<length1;i++) { for(int j=0;j<length2;j++) { if (ch2[j]==ch1) //当2个字符数组中有第一个字母相等的时候,进行下面的筛选。 {
if ((ch2[j+1]==ch1[i+1])&&j+1<=length2&&i+1<=length1) { count++; //在第一个字母相等之后如果第二个字母也相等,且其没有超过字符串 总长度,时候其相等的个数+1.
} else { break; //如果第二个字母不相等,或者长度超过了退出这次循环 }
if (max<count) { max =count; //找出最大的相等值,并且通过个数来确定此时字母串从哪一个开始相等的。 which =i+2-count; } else { count =1; } } } } for(int i=0;i<max;i++) { printf("%c",ch1[which+i]); } printf("\n"); return 0; } 下面是运行的图
|