D20. 学习基础C、C++语言

D20. 字串题练习

这题是之前老师出的题目但是我一直解不出来,后来看很久,还跑去问同学才解出来的,因为字串这部分我之前都搞不懂
http://img2.58codes.com/2024/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;}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章