您的位置:首页 > 理论基础

第15周 oj (FINAL)Problem M: 字符串的修改(串)

2016-12-12 20:45 141 查看
问题及代码:

/*Copyright(c)2016,烟台大学计算机学院 all rights reserved.
作者:曹欣宇
指导教师:贺利坚
完成日期:2016年12月12日
题目描述
一个字符串s、一个字符串t,判断t是否是s的子串,
若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO
输入
一个字符串s、一个字符串t,要换的字符或字符串
输出
输出修改后的s串
样例输入
asdfasdf
132
saf
样例输出
NO
*/
#include <stdio.h>
#include <string.h>

int main()
{
int i=0,j,p=0,u=0,o,g,x,d;
char a[80],b[80],c[80];
gets(a);
gets(b);
gets(c);
while(a[i]!='\0')
{
x=1;
o=i;
for(j=0;j<strlen(b);j++)
{
if(a[i]==b[j])
p++;
i++;
}
i=o;
if(p==strlen(b))
{
u=1;
j=0;
if(strlen(b)==strlen(c))
for(j=0;j<strlen(b);j++)
{
a[i]=c[j];
i++;
}
else if(strlen(b)>strlen(c))
for(j=0;j<strlen(a);j++)
{
if(x)
for(g=0;g<strlen(c);g++)
{
a[i]=c[g];
i++;
x=0;
j=g;
}
a[i]=a[i+strlen(b)-strlen(c)];
i++;
}
else if(strlen(b)<strlen(c))
for(j=0;j<strlen(c);j++)
{
d=strlen(c)-strlen(b);
if(x)
for(g=strlen(a);g>i+d;g--)
{
a[g+1]=a[g];
x=0;
}
a[i]=c[j];
i++;
}
}
p=0;
i=o;
i++;
}
if(u)
printf("%s", a);
else
printf("NO\n");
return 0;
}

运行结果:



知识点总结:.......

学习心得:最后一个题果然难啊,努力了半天编不出来....代码是参考的同学的(变量设的就不想看...).....功力不够啊.....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息