串的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1上机实训 3:串的基本操作
一、实训目的
通过实训,掌握串的运算(赋值,比较,联结,插入子串,模式匹配等)
二、实验理论知识
1)串的基本概念及其含义
串( string)是由零个或多个字符组成的有限序列,一般记作 :
s='a1a2 an'(n≥0),其中 s 为串的名字,用单引号括起来的字符序列为串的值;
ai(1≤ i≤ n)可以是字母、数字或其它字符(取决于程序设计语言所使用的字符集); n 为串中字符的个数,称为串的长度。
2)串的存储表示及其实现
顺序存储
可以用一组地址连续的存储单元依次存放串的各个字符,这是串的顺序
存储结构,也称为顺序串
链式存储
和线性表的链式存储结构相类似,也可采用链表方式存储串值。串的这
种链式存储结构简称为链串。用链表存储字符串,每个结点需要有两个域:
一个数据域( data)和一个指针域 (Next),其中数据域存放串中的字符,
指针域存放后继结点的地址。
3)模式匹配问题
三、实训案例与分析
【实例 1】串的存储与基本运算
【实例分析】在本实例中练习计算字符串的长度、字符串的复制、字符串的比较、字符串的连接、字符串的插入等基本操作。在设计时
1)编写一个菜单函数,根据不同情况做( 1-5)不同选择。
2)如果选择 1,即要求计算输入字符串的长度。
3)如果选择 2,完成字符串的复制。
4)如果选择 3,完成字符串的比较。
5)如果选择 4,完成两个字符串的连接。
6)如果选择 5,字符串的插入。
【参考程序】
#include
#define MAX 128
typedef enum {fail,success} status;
typedef enum {false,true} boolean;
main()
{ int strlen(); void
strass(); boolean
strcmp(); status
strcat( );
status strins();
int t,n,i;
boolean b;
status st;
char s[MAX],s1[MAX],s2[MAX];
printf("\n1. The length of string\n");
printf(" 2. The assignment of string\n");
printf(" 3. A string compare with another string:\n"); printf(" 4. A string connect with another string:\n"); printf(" 5. A string to be inserted into another string\n"); printf(" Please input a operation:");/*输入操作选项 */ scanf("%d",&t);
switch(t)
{
case 1:
printf("please input a string:\n");
getchar();
gets(s);
n=strlen(s);
printf("the length is: %d",n);
break;
case 2:
printf("please input the first string:\n");
getchar();
gets(s1);
printf("please input the second string:\n");
getchar();
gets(s2);
strass(s1,s2);
break;
case 3:
printf("please input the first string:\n"); getchar();
gets(s1);
printf("please input the second string: \n"); gets(s2);
b=strcmp(s1,s2);
if (b==true)
printf("equal\n");
else
printf("not equal\n");
break;
case 4:
printf("please input the first string:\n"); getchar();
gets(s1);
printf("please input the second string:\n"); gets(s2);
st=strcat(s1,s2);
if(st==success)
printf("answer is %s\n",s1);
else
printf("error!\n");
break;
case 5:
printf("please input the first string:\n"); getchar();
gets(s1);
printf("please input the second string:\n"); gets(s2);
printf("please input i:");
scanf("%d",&i);
st=strins(s1,i,s2);