实验三 串基本操作的编程实现
【实验目的】
内容:串基本操作的编程实现
要求:
串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】
验证性实验(学时数:2H)
【实验内容】
字符串长度计算,字符串的连接,字符串的替换,求子串等。
【参考代码】(以下内容,学生任意选择一个完成即可)
(一)基础篇
//在顺序存储的基础上进行字符串长度计算,字符串的连接,字符串的替换,求子串运算。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 256 //定义串允许的最大字符个数
typedef struct
{
char string[MAXSIZE]; //MAXSIZE为串的最大长度
int len; //串的实际长度
}SSTRING; //串的顺序存储结构表示
int str_len(SSTRING *s) //串的长度计算函数
{
return s->len;
}
void str_input(SSTRING *s) //串的输入函数
{
int i=0;
char ch;
s->len=0;
while((ch=getchar())!='\n') //通过循环,从键盘输入一串字符串
{
s->string[i]=ch;
i++;
s->len++;
}
s->string[i]='\0';
}
SSTRING *str_rep(SSTRING *s1,SSTRING *s2,int pos) //将字符串S1从pos位置处替换S2串
{
int i=0,j;
for(j=pos-1;s1->string[j]!='\0';j++) //从替换的起始位置开始
if(s2->string[i]!='\0')
{
s1->string[i]=s2->string[i]; //进行替换
i++;
}
else
{
break;
}
return s1;
}
SSTRING *str_con(SSTRING *s1,SSTRING *s2)
{
//将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中
int i=s1->len,j=0,k;
for(k=0;k<str_len(s2);k++)
{
s1->string[i]=s2->string[j];
i++;
j++;// 通过循环,将S2串的元素逐一复制到S1串的后面,
s1->len++;// 合并成一个串。
}
s1->string[i]='\0';
return s1;
}
SSTRING *str_sub(SSTRING *sub,SSTRING *s,int pos,int len)
{
//将串S第pos个字符开始的长度为len的字符序列复制到串sub中
int i=pos-1,j=0,k;
for(k=1;k<=len;k++)
{
sub->string[i]=s->string[j];//逐一取出S串中从pos开始的元素,并复制到sub串中
sub->len++;//每复制完一个元素,sub串长度加1。
i++;
j++;
}
sub->string