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