Problem D: 顺序串的基本运算

Problem D: 顺序串的基本运算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 73  Solved: 28
[Submit][Status][Web Board]

Description

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

 

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

Input

Output

Sample Output

abcdefghefghijklmn
18
abcdefghxyzefghijklmn
aghefghijklmn
axyzghefghijklmn
bcdefghefg
xyzbcdefghefg

HINT

请使用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 StrLength(SqString s) 
{ printf("%d\n",s.length); 
} 
void DispStr(SqString s) 
{ int i; if(s.length>0) { for(i=0;i<s.length;i++) printf("%c",s.data[i]); printf("\n"); } 
} 
SqString InsStr(SqString s1,int i,SqString s2) 
{ int j; SqString str; str.length=0; if(i<=0||i>s1.length+1) return str; for(j=0;j<i-1;j++) str.data[j]=s1.data[j]; for(j=0;j<s2.length;j++) str.data[i+j-1]=s2.data[j]; for(j=i-1;j<s1.length;j++) str.data[s2.length+j]=s1.data[j]; str.length=s1.length+s2.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 s1) 
{ 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<s1.length;k++) str.data[i+k-1]=s1.data[k]; for(k=i+j-1;k<s.length;k++) str.data[s1.length+k-j]=s.data[k]; str.length=s.length+s1.length-j; return str; 
} 
SqString TiStr(SqString s,int i,int j) 
{ int k; SqString str; str.length=0; if(i<=0||i>s.length||i+j-1>s.length) return str; for(k=0;k<j;k++) str.data[k]=s.data[k+i-1]; str.length=j; return str; 
} 
SqString Concat(SqString s1,SqString s2) 
{ SqString str; str.length=s1.length+s2.length; int i; for(i=0;i<s1.length;i++) str.data[i]=s1.data[i]; for(i=0;i<s2.length;i++) str.data[i+s1.length]=s2.data[i]; return str; 
} 
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; 
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

骨牌铺方格

骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46495 Accepted Submission(s): 22470 Problem Description在2n的一个长方形方格中,用一个1 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n3时…

递归思想完成n皇后问题

已经很长时间不敲代码了&#xff0c;感觉自己越来与颓废&#xff0c;所以现在又想做回一名苦逼的程序员&#xff0c;开启自己的代码之路。 我是根据视频敲的&#xff0c;没有题目&#xff0c;先看个四皇后问题吧。 所谓4皇后问题就是求解如何在44的棋盘上无冲突的摆放4个皇后棋…

POJ1163 数字三角形

1.题目信息&#xff08;http://poj.org/problem?id1163&#xff09; The TriangleTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 30397 Accepted: 17973 Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1) Figure 1 shows a number tri…

virtualbox的USB识别

VirtualBox识别USB教程 作者&#xff1a;Vincent June 13, 2017 在Virtualbox虚拟机配置面板中打开USB设备选项&#xff0c;分别勾选上“启动USB控制器”“启用usb2.0控制器”选项&#xff0c;如果有错误去https://www.virtualbox.org/wiki/Downloads 下载相应版本的插件包&a…

ubuntu实现简单的划词工具

ubuntu实现简单的划词工具 由于ubuntu下面没有比较好用的划词翻译工具&#xff0c;而且本人比较喜欢有道词典&#xff0c;虽然ubuntu下有deepin版本的有道词典包&#xff0c;可是总是会有bug&#xff0c;卡死等等。所以自己参考别人写了一个小工具&#xff0c;涉及shell和pyth…

动态规划进阶题目之滑雪

Problem F: 动态规划进阶题目之滑雪 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4 Solved: 3[Submit][Status][Web Board]Description Michael喜欢滑雪百这并不奇怪&#xff0c; 因为滑雪的确很刺激。可是为了获得速度&#xff0c;滑的区域必须向下倾斜&#xff0c;而且当…

修改win10我的文档下载等移动别处

win10移动我的文档&#xff0c;下载等到其他盘符办法 解决办法 1.选择我的文档&#xff0c;鼠标右键选择属性&#xff0c;在工具栏选择位置&#xff0c;然后选择想移动到哪里的盘符即可&#xff0c;如图&#xff1a;2.操作完后选择应用->确定&#xff0c;就这么简单。

神奇的口袋

2755:神奇的口袋查看 提交 统计 提示 提问总时间限制: 10000ms 内存限制: 65536kB描述有一个神奇的口袋&#xff0c;总的容积是40&#xff0c;用这个口袋可以变出一些物品&#xff0c;这些物品的总体积必须是40。John现在有n个想要得到的物品&#xff0c;每个物品的体积分别是a…

Ubuntu16.04LTS修改开机动画

ubuntu16.04LTS修改开机动画 ubuntu自带的开机动画实在是很不满美观&#xff0c;但是又不想重写&#xff0c;怎么办&#xff1f; 接下来交你们一招。 1.开机动画文件夹 Ubuntu14.04的开机动画在/usr/share/plymouth文件夹内 2.下载开机动画 两种方式&#xff1a; 从Ubun…

Qt的Xml操作QDomDocument

Qt的Xml操作QDomDocument Qt对于Xml的支持是很好的&#xff0c;一些我们需要的操作应有尽有&#xff0c;下面简单介绍一下怎样使用。主要有以下几点使用&#xff1a; 写xml到文件读xml添加节点到xml删除xml中某节点信息修改xml中某节点信息 准备工作 .pro加入QT xml需要in…

2815:城堡问题

2815:城堡问题 查看提交统计提示提问 总时间限制: 1000ms 内存限制: 65536kB描述1 2 3 4 5 6 7 #############################1 # | # | # | | ######---#####---#---#####---#2 # # | # # # # ##---#####---#####---#####---#3 # …

冒泡排序法函数

文章目录冒泡排序法的函数实现使用教程冒泡排序法的函数实现 话不多说上代码&#xff0c;拿去直接用。 // 冒泡排序函数 /* * brief sort * param array为数组名称&#xff0c;length为数组的长度&#xff0c;order为1或0,1代表从小到大排序 * 0代表从大到小排序…

boost序列化(Serialization)

本文章转载自 http://m.blog.csdn.net/zj510/article/details/8105408 程序开发中&#xff0c;序列化是经常需要用到的。像一些相对高级语言&#xff0c;比如JAVA, C#都已经很好的支持了序列化&#xff0c;那么C呢&#xff1f;当然一个比较好的选择就是用Boost&#xff0c;这个…

java基础经典练习题

【程序1】 题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; //这是一个菲波拉契数列问题 p…

ubuntu下wps不能输入中文

ubuntu下wps不能输入中文 原因是因为fcitx环境的原因&#xff0c;想了解fcitx的可以看这篇文章&#xff0c;链接。 使用脚本解决 将下面的脚本复制到新建的文件中&#xff0c;chmod加权限&#xff0c;然后执行即可。 #! /bin/bash #--------------------------------------…

常见的几种内排序算法以及实现(C语言)(转)

所有未排序的数组是经过检查合法的主要的内排序包括冒泡、插入、希尔、堆排序、归并、快速、桶排序等其C语言实现的源文件下载地址&#xff1a;http://download.csdn.net/detail/mcu_tian/9530227冒泡排序冒泡排序应该是排序中最简单的算法了主要思路如下&#xff1a;1&#xf…

常见编程命名缩写

命名缩写 通用缩写翻译控件缩写翻译addressaddr地址calendarcdr日历applicationapp应用程序messageDialogmsgdlg消息框asynchronizationasyn异步drawerdrw抽屉averageavg平均数buttonGroupbtngrp按钮分组bitmapbmp位图checkBoxchk复选框bufferbuf缓冲区containercntr容器chara…

funCode课程实训(C++ )

funcode是一个简单的游戏制作引擎&#xff0c;适合c初学者操作&#xff0c;可以帮助初学者更好的了解c环境&#xff0c;以及各种函数的实现&#xff0c;本学期我们用funcode作为C最后的课程设计&#xff0c;所以我就使用funcode制作一个打地鼠的小游戏。以下是对这个小程序的描…

Nodejs,Npm,React安装教程

React安装 1.下载node.js安装包 下载二进制包 选择比较稳定的版本进行安装&#xff0c;v8.9 2.安装 直接把文件解压复制到某个目录下&#xff0c; sudo cp -r node-v8.9.0 /opt/node #你下载的版本sudo touch /etc/profile.d/node.sh #新建一个脚本文件sudo gedit /etc/…

Ubuntu下的提示信息彩色显示

【问题】 虽然已经折腾过了&#xff1a; 【已解决】Ubuntu中让终端只显示当前路径&#xff0c;而不显示绝对路径 但是&#xff0c;终端中的prompt提示信息&#xff0c;不是彩色的&#xff0c;导致的结果是&#xff1a; 当终端中输出信息很多时&#xff1a; 【已解决】Ubun…