c语言 求大佬
输出两个字符串的最长公共子串例如:
输入:
str1[]="123zxc456"
str2[]="123789z"
则输出:
123
求求了,实在想不出来了 #include<stdio.h>
#include<string.h>
int main()
{
char str1[]="123zxc456",str2[]="123789z";
int i,j,k,count1=0,count2=0;
int a=(sizeof(str1)),b=(sizeof(str2)),c;
c=a<b?a:b;
char str3="0",str4="0";
for(i=0;i<c;i++)
for(j=0;j<c;j++)
{
if(str1==str2)
{
if(!(str3-0))
{
str3=str1;
count1++;
}
else
str4=str1;
count2++;
}
if(strlen(str3)<strlen(str4))
{
memset(str3,0,sizeof(str3));
count1=0;
}
else
memset(str4,0,sizeof(str4));
count2=0;
}
str3='\0';
str4='\0';
if(strlen(str3)>strlen(str4))
printf("%s",str3);
else
printf("%s",str4);
return 0;
} / 找出两个数组共有的元素
#include<stdio.h>
int main()
{
int i, j, k = 0, n = 0, temp = 0;
char a = { "123zxc456" }, b = { "123789z" }, c = { '0' };
for (i = 0;i < 10;i++)
{
for (j = 0;j < 8;j++) // a 数组元素遍历 b 数组
{
if (a == b)
{
temp = 1;
break;
}
else
temp = 0;
}
if (temp == 1)
{
c = a;
k++;
}
}
for (i = 0;i < 8;i++) // b 数组元素遍历 a 数组
{
for (j = 0;j < 10;j++)
{
if (b == a)
{
temp = 1;
break;
}
else
temp = 0;
}
if (temp == 1)
{
c = b;
k++;
}
}
for (i = 0;i < k - 1;i++) // 交数组中的 '\0'移到最后
{
for (j = i + 1;j < k - 1;j++)
{
if (c == '\0' && c != '\0' && j > i)
{
c = c;
break;
}
}
}
printf("%s", c); // 输出两个数组非共有的元素
printf("\n");
} 输出是:123z,不是123
页:
[1]