zoukankan      html  css  js  c++  java
  • YTU 3007: 顺序串的基本运算

    3007: 顺序串的基本运算

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 1  解决: 1

    题目描述

    编写一个程序,实现顺序串的各种基本运算,主函数已给出,请补充每一种方法。

     

    1、建立串s="abcdefghefghijklmn",和串s1="xyz";

    2、输出串s;

    3、输出串s的长度;

    4、在串s的第九个字符位置插入串s1而产生s2;

    5、输出串s2;

    6、删除串s的第二个字符开始的五个字符而产生串s2;

    7、输出串s2;

    8、将串s第二个字符开始的五个字符替换成串s1而产生串s2;

    9、输出串s2;

    10、提取串s的第二个字符开始的10个字符而产生s2;

    11、输出串s3;

    12、将串s1和串s2连接起来而产生串s3;

    13、输出串s3;

     

    顺序串的定义为

    typedef struct
    {
        char data[SizeMax];
        int length;
    } SqString;
     
    主函数:
    int main()
    {
        SqString s,s1,s2,s3;
        char c[]="abcdefghefghijklmn",d[]="xyz";
        StrAssign(s,c);                             //建立串
        StrAssign(s1,d);
        DispStr(s);                                 //输出串
        StrLength(s);
        s2=InsStr(s,9,s1);                          //将s1插入到s的第九个位置
        DispStr(s2);
        s2=DelStr(s,2,5);                           //删除s第二个字符开始的五个字符
        DispStr(s2);
        s2=RepStr(s,2,5,s1);                        //将串s第二个字符开始的五个字符替换成串s1
        DispStr(s2);
        s2=TiStr(s,2,10);                           //提取串s的第二个字符开始的10个字符
        DispStr(s2);
        s3=Concat(s1,s2);                           //将串s1和串s2连接起来
        DispStr(s3);
        return 0;
    }

    输入

    输出

    样例输出

    abcdefghefghijklmn
    18
    abcdefghxyzefghijklmn
    aghefghijklmn
    axyzghefghijklmn
    bcdefghefg
    xyzbcdefghefg

    提示

    请使用C++编译并提交


    迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方…
    #include <stdio.h>
    #include <string.h>
    #define SizeMax 105
    typedef struct
    {
        char data[SizeMax];
        int length;
    } SqString;
    void StrAssign(SqString &s,char cstr[])
    {
        int i;
        for(i=0; i<(int)strlen(cstr); i++)
            s.data[i]=cstr[i];
        s.length=i;
    }
    void DispStr(SqString s)
    {
        for(int i=0; i<s.length; i++)
            printf("%c",s.data[i]);
        printf("
    ");
    }
    SqString InsStr(SqString s,int i,SqString s1)
    {
        int j;
        SqString str;
        str.length=0;
        if(i<=0||i>s.length+1)return str;
        for(j=0; j<i-1; j++)
            str.data[j]=s.data[j];
        for(j=0; j<s1.length; j++)
            str.data[i+j-1]=s1.data[j];
        for(j=i-1; j<s.length; j++)
            str.data[s1.length+j]=s.data[j];
        str.length=s1.length+s.length;
        return str;
    }
    SqString DelStr(SqString s,int i,int j)
    {
        int k;
        SqString str;
        str.length=0;
        if(i<0||i>s.length||i+j>s.length+1)return str;
        for(k=0; k<i-1; k++)
            str.data[k]=s.data[k];
        for(k=i+j-1; k<s.length; k++)
            str.data[k-j]=s.data[k];
        str.length=s.length-j;
        return str;
    }
    SqString RepStr(SqString s,int i,int j,SqString t)
    {
        int k;
        SqString str;
        str.length=0;
        if(i<=0||i>s.length||i+j-1>s.length)return str;
        for(k=0; k<i-1; k++)
            str.data[k]=s.data[k];
        for(k=0; k<t.length; k++)
            str.data[i+k-1]=t.data[k];
        for(k=i+j-1; k<s.length; k++)
            str.data[t.length+k-j]=s.data[k];
        str.length=s.length-j+t.length;
        return str;
    }
    SqString TiStr(SqString s,int i,int j)
    {
        SqString str;
        str.length=0;
        if(s.length<i+j||i<0||j<0)return str;
        for(int k=0; k<j; k++)
            str.data[k]=s.data[k+i-1];
        str.length=j;
        return str;
    }
    SqString Concat(SqString s,SqString t)
    {
        SqString str;
        int i;
        str.length=s.length+t.length;
        for(i=0; i<s.length; i++)
            str.data[i]=s.data[i];
        for(i=0; i<t.length; i++)
            str.data[s.length+i]=t.data[i];
        return str;
    }
    void StrLength(SqString s)
    {
        printf("%d
    ",s.length);
    }
    int main()
    {
        SqString s,s1,s2,s3;
        char c[]="abcdefghefghijklmn",d[]="xyz";
        StrAssign(s,c);                             //建立串
        StrAssign(s1,d);
        DispStr(s);                                 //输出串
        StrLength(s);
        s2=InsStr(s,9,s1);                          //将s1插入到s的第九个位置
        DispStr(s2);
        s2=DelStr(s,2,5);                           //删除s第二个字符开始的五个字符
        DispStr(s2);
        s2=RepStr(s,2,5,s1);                        //将串s第二个字符开始的五个字符替换成串s1
        DispStr(s2);
        s2=TiStr(s,2,10);                           //提取串s的第二个字符开始的10个字符
        DispStr(s2);
        s3=Concat(s1,s2);                           //将串s1和串s2连接起来
        DispStr(s3);
        return 0;
    }
    


  • 相关阅读:
    初学C++到底应该用什么工具比较合适——工具简析
    便携式办公套件LibreOffice Portable 4.0.1
    Hibernate和JPA之间的联系
    央视《家有妙招》整理版,共250招,值得永远收藏
    思科Vs华为:不可避免的对决
    Facebook手机刺激了谁?
    Facebook利用Home平台加速进军移动领域
    英特尔Haswell处理器已出货 预计6月推出
    苹果自建街景地图 或与谷歌针锋相对
    图片链接
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989381.html
Copyright © 2011-2022 走看看