大体题意就是将列表第一列的字符串不断换成第二列的字符串,直到将所给的整个句子中所有出现的第一列字符串全部换掉为止,然后再进行下一个字符串的替换。题目本身不难,相信只要认真一点,就可以轻松AC掉 ~
(如果用上strstr()函数和sprintf函数会使代码简洁不少,效率也会提高不少。当然如果会用STL的string的话,同样会很快。)
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
#ifdef sta
freopen("sample.text","r",stdin);
#endif
int k,i;
char *ffct; // 定义一个字符指针
char sum[20+1][80+1],a[260],b[260],c[260];
while(scanf("%d",&k))
{
getchar();
if(k==0)
break;
memset(sum,0,sizeof(sum));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0; i<=2*k-1; i++)
gets(sum[i]);
gets(a);
for(i=0; i<=2*k-1; i=i+2)
while(1)
{
ffct=strstr(a,sum[i]); //找到要替换的字符串出现的地方
if(ffct==NULL)
break;
sprintf(c,"%s",ffct+strlen(sum[i])); //将要替换部分后边的字符串暂存到c数组里
sprintf(ffct,"%s",sum[i+1]); //将要替换的部分进行替换(将要替换后边的字符串也覆盖掉了)
sprintf(ffct+strlen(sum[i+1]),"%s",c);//将暂存的字符串补上
}
printf("%s\n",a);
}
return 0;
}