iT邦幫忙

0

D20. 學習基礎C、C++語言

c
  • 分享至 

  • xImage
  •  

D20. 字串題練習

這題是之前老師出的題目但是我一直解不出來,後來看很久,還跑去問同學才解出來的,因為字串這部分我之前都搞不懂
https://ithelp.ithome.com.tw/upload/images/20211231/201436277h1e8aFsQn.jpg

#include<stdio.h>
#include<stdlib.h>
int l_word,l_rp,l_str;
char hold[300];
int change;
void check(char word[60],char rp[60],char str[300])
{
    change=0;
    int pword;
    int r;
    int d= l_word-l_rp;
    for(int i=0; str[i]!=0; i++)
    {
        pword=0;
        r=0;
        for(int k=i; k<i+l_word; k++,pword++)
        {
            if(str[k]!=word[pword])
                break;
        }
        if(pword==l_word)
        {

            l_str-=d;
            hold[l_str]=0;
            for(int forward=0; forward<i; forward++)
                hold[forward]=str[forward];

            for(int mid=i,prp=0; mid<i+l_rp; mid++,prp++)
                hold[mid]=rp[prp];

            for(int back=i+l_rp,pstr=i+l_word; back<l_str; back++,pstr++)
                hold[back]=str[pstr];

            change=1;
            r=1;
        }
        if(r)
        {
            for(int s=0; hold[s]!=0; s++)
                str[s]=hold[s];
            str[l_str]=0;
        }
    }
}
int main()
{
    char word[60],rp[60],str[300];
    while(gets(word))
    {
        if(word[0]=='*')
            break;
        change=1;
        gets(rp);
        gets(str);
        for(l_word=0; word[l_word]!=0; l_word++) {}
        for(l_rp=0; rp[l_rp]!=0; l_rp++) {}
        for(l_str=0; str[l_str]!=0; l_str++) {}
        while(change)
        {
            check(word,rp,str);
        }
        puts(str);
    }
    return 0;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言