串的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档