欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語言求兩個字符串的交集

 更新時間:2022年01月04日 11:36:46   作者:半夜偷吃雪糕  
大家好,本篇文章主要講的是c語言求兩個字符串的交集,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

求兩個字符串的交集,看似簡單,實則需要考慮的細節(jié)很多。

我的思路:

1.將兩個字符串簡化,將里面重復(fù)的字母減少為一個。

2.拼接兩個字符串,借助循環(huán)把重復(fù)出現(xiàn)兩次的字符找出來。

有了思路開始寫代碼。

一、main()函數(shù)

思路:

1.定義兩個儲存字符串的數(shù)組tt[M],pp[M]

2.定義指針*p接收fun2() 返回值,輸出交集

3.輸入兩個字符串(此處注意越界問題)

4.調(diào)用函數(shù)

5.輸出交集

#include <stdio.h>
#include <string.h>             //用到strcat(),strlen()函數(shù)
 
#define M 50
 
void fun1(char tt[]);           //將字符串中相同的字母去掉
char *fun2(char tt[]);          //將重復(fù)的(子集)找出來
 
 
int main()
{
    char tt[M],pp[M];           //定義兩個數(shù)組,儲存字符串
    char *p;                    //接受fun2()返回的地址,并輸出交集字符串
    int i;
 
    gets(tt);                   //abcdef123abc12
    gets(pp);                   //acef123ace124
    fun1(tt);                   //調(diào)用函數(shù)
    fun1(pp);                           
    //printf("%s\n",tt);        //供檢驗使用
    //printf("%s\n",pp);    
    strcat(tt,pp);
    //printf("%s\n",tt);
    p=fun2(tt);                 //調(diào)用函數(shù)
    for(i=0;*(p+i)!='\0';i++)
    {
        printf("%c",*(p+i));    //acef123
    }
 
    return 0;
}

二、fun1()函數(shù)

fun1()作用是將字符串中重復(fù)的字符只保留一個

思路:

1.先將重復(fù)出現(xiàn)的字符出去第一次出現(xiàn)那個都換成' '(此處為一個空格)

2.在將字符串數(shù)組元素移動,去除' '(空格)

void fun1(char tt[])            //將重復(fù)的字符抹掉
{
    int i,j;
    char ch;
 
    for(i=0;i<M;i++)            
    {
        if(tt[i]!=' ')          //確保確定的這一項不是空格
        {
            ch=tt[i];           //確定第一次出現(xiàn)的字符
            for(j=i+1;j<M;j++)  //在他后方尋找
            {
                if(ch==tt[j])   //遇到一樣的
                tt[j]=' ';      //用' '替換
            }
        }
    }
    for(i=0;i<strlen(tt);i++)
    {
        if(tt[i]==' ')                  //找到' '位置
        {                               
            for(j=i;j<strlen(tt)-1;j++) //去除' '
            tt[j]=tt[j+1];              
            tt[j]='\0';                 //此時最后一項與倒數(shù)第二項相同,用'\0'徹底抹除左后一                        
                                        //項(目的是去除' '字符串縮短)
            i--;
        }                               //防止連續(xù)出現(xiàn)多個' '(假如沒有i--,此時tt[i]仍然為'             
                                        //'運行下一步為i++,這個空格就被保留下來了)
    }
}

三、fun2()函數(shù) 

fun2()將重復(fù)出現(xiàn)的字符挑出來

思路:

1.找到相同字符,并儲存在static aa[M]中(小重點)

2.返回第一個字符的地址

char *fun2(char tt[])           //確定子集字符串,返回字符串第一個字符的地址
{
    int i,j,k;
    char ch;
    static char aa[M];          //靜態(tài)變量,保證調(diào)用函數(shù)結(jié)束后數(shù)組還在
    char *p;
 
    k=0;
 
    for(i=0;i<strlen(tt);i++)
    {
        ch=tt[i];                       //確定第一次出現(xiàn)的字符
        for(j=i+1;j<strlen(tt);j++)
        {
            if(ch==tt[j])               //如果再次出現(xiàn)一個相同的字符將他賦值給aa[M]數(shù)組
            {
                aa[k]=ch;
                k++;
            }
        }
    }
    aa[k]='\0';                         //最后加上'\0'一來這是個字符串,二來main()函數(shù)中作為                 
                                        //for循環(huán)結(jié)束條件
    p=&aa[0];                           //確定第一個字符的地址
 
    return p;                           //返回地址
}

注意;

這個代碼任然后缺陷,因為用這個代碼求得兩個字符串的交集永遠不會出現(xiàn)空格。

其他思路推薦:

先在第一個字符串中確定一個字符,在第二個字符串中查找是否存在相同字符串

這條思路特要注意字符串中字符重復(fù)出現(xiàn)帶來的影響

總結(jié)

到此這篇關(guān)于c語言求兩個字符串的交集的文章就介紹到這了,更多相關(guān)c語言字符串交集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中的類的大小詳解

    C++中的類的大小詳解

    這篇文章主要為大家詳細介紹了C++中的類的大小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++制作《游戲內(nèi)存外掛》詳解

    C++制作《游戲內(nèi)存外掛》詳解

    這篇文章主要介紹了C++制作《游戲內(nèi)存外掛》詳解,文中通過示例代碼和圖片介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 利用Matlab一鍵生成工地海報特效

    利用Matlab一鍵生成工地海報特效

    這篇文章主要介紹了如何利用Matlab制作出工地海報的特效,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • C++實現(xiàn)職工信息管理系統(tǒng)

    C++實現(xiàn)職工信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了c++實現(xiàn)職工信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++中memset函數(shù)用法詳解

    C++中memset函數(shù)用法詳解

    這篇文章主要介紹了C++中memset函數(shù)用法,結(jié)合實例形式詳細分析了memset函數(shù)的功能、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-06-06
  • C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析

    C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析

    這篇文章主要介紹了C++中CopyFile和MoveFile函數(shù)使用區(qū)別的示例分析,CopyFile表示將文件A拷貝到B,如果B已經(jīng)存在則覆蓋,MoveFile表示將文件A移動到。對此感興趣的可以來了解一下
    2020-07-07
  • 詳解C++中的左值,純右值和將亡值

    詳解C++中的左值,純右值和將亡值

    C++中本身是存在左值,右值的概念,但是在C11中又出現(xiàn)了左值,純右值,將亡值得概念;這里我們主要介紹這些值的概念,感興趣的可以了解一下
    2022-09-09
  • C語言標準庫<math.h>和<setjmp.h>的實現(xiàn)

    C語言標準庫<math.h>和<setjmp.h>的實現(xiàn)

    本文主要介紹了C語言標準庫<math.h>和<setjmp.h>的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • C 語言基礎(chǔ)教程(我的C之旅開始了)[五]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[五]

    C 語言基礎(chǔ)教程(我的C之旅開始了)[五]...
    2007-02-02
  • opencv實現(xiàn)顏色檢測

    opencv實現(xiàn)顏色檢測

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)顏色檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評論