风雨兴 发表于 2020-12-14 23:51:00

c语言 求大佬

输出两个字符串的最长公共子串
例如:
   输入:
          str1[]="123zxc456"
          str2[]="123789z"
则输出:
          123
求求了,实在想不出来了

严凯 发表于 2020-12-15 19:03:58

#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;
}

风过无痕1989 发表于 2020-12-15 21:11:13

/ 找出两个数组共有的元素
#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");
}

风过无痕1989 发表于 2020-12-15 21:12:40

输出是:123z,不是123
页: [1]
查看完整版本: c语言 求大佬