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

来源:互联网 发布:ipad air2软件下载 编辑:程序博客网 时间:2024/05/06 23:15

问题及代码:

/*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;}

运行结果:

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

学习心得:最后一个题果然难啊,努力了半天编不出来....代码是参考的同学的(变量设的就不想看...).....功力不够啊.....

0 1
原创粉丝点击