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;
顺序串的定义为
输入
输出
样例输出
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("\n");
}
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\n",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;
}
YTU 3007: 顺序串的基本运算的更多相关文章
- YTU 3008: 链串的基本运算
3008: 链串的基本运算 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现链串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立串s ...
- python学习1-字符串数字基本运算以及if条件和while循环
python学习1-字符串数字基本运算以及if条件和while循环 字符串表达形式共四种: name = "string" name = 'string' name = " ...
- YTU 2989: 顺序表基本运算(线性表)
2989: 顺序表基本运算(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char), ...
- NodeJs使用async让代码按顺序串行执行
描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...
- ytu 1067: 顺序排号(约瑟夫环)
1067: 顺序排号 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 31 Solved: 16[Submit][Status][Web Board] ...
- Java内存模型深度解析:顺序一致性--转
原文地址:http://www.codeceo.com/article/java-memory-3.html 数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据 ...
- 数据结构(c语言第2版)-----了解链表,栈,队列,串
关于链表我觉得这都是最基本的东西,但是不常见,在实际的应用中很少的使用,了解它会用就OK,不需要研究的那么深,除非做那种内存压缩,存储方面工作. C语言中动态申请空间 malloc() q=(dlin ...
- java内存模型-顺序一致性
数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java 内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代 ...
- 深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ...
随机推荐
- Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法
1.错误原因: date类型不能包含秒以后的精度. 如日期:2010-01-01 20:02:20.0 解决方法:将日期秒以后的精度去除, to_date(substr(INVOICE_DATE,1, ...
- Java基础之一组有用的类——使用比较器对数组排序(TrySortingWithComparator)
控制台程序. Arrays类中的sort()静态方法把传送为参数的数组元素按升序方式排序. 对于第一个参数类型是Object[]的sort()方法来说,可以传送任意类型的数组.如果使用sort()方法 ...
- Debug 介绍
Debug 设置
- 学习OpenCV——OpenMP
转自:http://www.cnblogs.com/yangyangcv/archive/2012/03/23/2413335.html openMP的一点使用经验 最近在看多核编程.简单来说,由 ...
- PHP Parse Error: syntax error, unexpected $end 错误的解决办
可以在php.ini中设置short_open_tag = On 第一步,登录到sql命令行 第二步,使用sql语句修改root密码 使用sql语句改密码时一定要选中数据库 .使用 use mys ...
- PHP的基本语法
PHP的基本语法和c#的基本语法是差不多的,在这里只和大家聊一下PHP和C#语法不同的地方. 首先 PHP和c#的标记方式不一样,PHP他是一门脚本语言,JS也是脚本语言,只不过JS是运行在客户端的, ...
- 资源Createwindow,对应标识符,绑定窗口
问? 定义一个CEdit cedit1:怎么和IDC_EDIT1 关联,可以在CEdit.Create()里传进去或者在DoDataExchange()里面绑定,是不是一定要先弄出个IDC_EDIT1 ...
- MFC主窗口架构模型
根据主窗口类型,MFC软件工程可以分为一下几种架构模型: 1.SDI(Simple Document Interface)单文档界面,一个主窗口下只编辑一份文档 2.MDI(Multiple Docu ...
- 解决 linux [Fedora] 升级 导致VMware启动出现"before you can run vmware workstation, serveral modules must be complied and loaded into the runing kernel" 而无法卸载
解决: 开机启动 进入 升级之前的内核系统 然后 执行卸载 VMware 命令 # vmware-uninstall You have gotten this message because you ...
- C#:IO
1. File和Directory类 这两个类属于静态类,经常用到的比如File.Exists(string path), Directory.Exists(string path), Directo ...