问题
输入三行字符串,第一行是一行字符串,第二行是第一行字符串的一个子串,第三行更换该子串的字符,最后输出更换完毕的字符串。
思路是扫描第一个字符串,检查到第二个完整的字符串之后,再用第三行字符串将其替换,最终输出。
根据思路设想出算法框图,再用代码加以实现即可。
代码如下:
#include<stdio.h>
#include<string.h>
void change(char str1[],char str2[],char str3[]);
int main()
{
char str1[100];
char str2[100];
char str3[100];
scanf("%s",str1);
scanf("%s",str2);
scanf("%s",str3);
change(str1,str2,str3);
printf("%s",str1);
return 0;
}
void change(char str1[],char str2[],char str3[])
{
for(int i=0;i<strlen(str1);i++)
{
int flag=1;
if(str1[i]==str2[0])
{
for(int j=i+1;j-i<strlen(str2)&&flag==1;j++)
{
if(str1[j]!=str2[j-i]) flag=0;
}
if(flag==1)
{
for(int m=i;m-i<strlen(str3);m++)
{
str1[m]=str3[m-i];
}
i=i+strlen(str3)-1;
}
}
}
}
运行结果如下:
输入了第一行字符串:abbbbabbbbab
要替换ad为gg,最终再输出替换后的字符串即可。