作者在 2011-03-26 19:38:00 发布以下内容
字符串替换
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
输入三个字符串a,b和c,将a中b的第一次出现替换为c。
输入:
输入三行,每行一个字符串,字符串长度不超过255。
输出:
如果b有出现在a中,输出替换后的字符串。
输入样例:
abcdefgh
cde
Xiaolan
输出样例:
abXiaolanfgh
提示:
所有字符串只包含英文字母。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char a[300],b[100],c[100],d[500];
int i,stage,n;
char *p1,*p2,*p3,*q1,*q2;
gets(a);
gets(b);
gets(c);
p1=a;
p3=c;n=1;
while((*p1)!='\0')//判断匹配
{
p2=b;q2=p1;
stage=1;
while(*p2!='\0')
{
if(*p2!=*q2)
{
stage=0;
break;
}
p2++;q2++;
}
if(stage==1)
{
q1=q2;//找到a中与b匹配的最后一个字符的下一个址
break;
}
p1++;
n++;//找到与b匹配的第一个字符的位置
}
p1=a;
for(i=0;i<n-1;i++)//匹配的第一个字符的位置的赋给d
{
d[i]=*p1;
p1++;
}
for(i=i;*p3!='\0';i++)//把c连在d后面
{
d[i]=*p3;
p3++;
}
for(i=i;*q1!='\0';i++)//把a中与b匹配的最后一个字符之后的连在新d之后
{
d[i]=*q1;
q1++;
}
d[i]='\0';//给d字符串一个末尾(结束符'\0')
printf("%s\n",d);
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char a[300],b[100],c[100],d[500];
int i,stage,n;
char *p1,*p2,*p3,*q1,*q2;
gets(a);
gets(b);
gets(c);
p1=a;
p3=c;n=1;
while((*p1)!='\0')//判断匹配
{
p2=b;q2=p1;
stage=1;
while(*p2!='\0')
{
if(*p2!=*q2)
{
stage=0;
break;
}
p2++;q2++;
}
if(stage==1)
{
q1=q2;//找到a中与b匹配的最后一个字符的下一个址
break;
}
p1++;
n++;//找到与b匹配的第一个字符的位置
}
p1=a;
for(i=0;i<n-1;i++)//匹配的第一个字符的位置的赋给d
{
d[i]=*p1;
p1++;
}
for(i=i;*p3!='\0';i++)//把c连在d后面
{
d[i]=*p3;
p3++;
}
for(i=i;*q1!='\0';i++)//把a中与b匹配的最后一个字符之后的连在新d之后
{
d[i]=*q1;
q1++;
}
d[i]='\0';//给d字符串一个末尾(结束符'\0')
printf("%s\n",d);
return 0;
}