串的基本操作(共11页).doc
《串的基本操作(共11页).doc》由会员分享,可在线阅读,更多相关《串的基本操作(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1 上机实训3:串的基本操作一、 实训目的 通过实训,掌握串的运算(赋值,比较,联结,插入子串,模式匹配等) 二、 实验理论知识 1) 串的基本概念及其含义 串( string)是由零个或多个字符组成的有限序列,一般记作:s=a1a2an(n0),其中s为串的名字,用单引号括起来的字符序列为串的值;ai(1in)可以是字母、数字或其它字符(取决于程序设计语言所使用的字符集);n为串中字符的个数,称为串的长度。2) 串的存储表示及其实现 l 顺序存储可以用一组地址连续的存储单元依次存放串的各个字符,这是串的顺序存储结构,也称为顺序串l 链式存储和线性表的链式存储结构相类
2、似,也可采用链表方式存储串值。串的这种链式存储结构简称为链串。用链表存储字符串,每个结点需要有两个域:一个数据域(data)和一个指针域(Next),其中数据域存放串中的字符,指针域存放后继结点的地址。3) 模式匹配问题三、 实训案例与分析 【实例1】串的存储与基本运算 【实例分析】在本实例中练习计算字符串的长度、字符串的复制、字符串的比较、字符串的连接、字符串的插入等基本操作。在设计时1) 编写一个菜单函数,根据不同情况做(1-5)不同选择。2) 如果选择1,即要求计算输入字符串的长度。3) 如果选择2,完成字符串的复制。4) 如果选择3,完成字符串的比较。5) 如果选择4,完成两个字符串的
3、连接。6) 如果选择5,字符串的插入。【参考程序】#include #define MAX 128typedef 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 sMAX,s1MAX,s2MAX;printf(n1. The length of stringn);printf( 2. The a
4、ssignment of stringn);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 stringn);printf( Please input a operation:);/*输入操作选项*/scanf(%d,&t);switch(t) case 1:printf(please input a string:n);getchar();ge
5、ts(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 strin
6、g: n);gets(s2);b=strcmp(s1,s2);if (b=true)printf(equaln);elseprintf(not equaln);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 %sn,s1);elseprintf(error!n);break;case 5:printf(pl
7、ease 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);if(st=success)printf(answer is: %sn,s1);else printf(error!n);break;case 0:break;default: printf(There isnt this operation!);int strlen(s) /*求字符串
8、的长度子函数*/char s; int i;for(i=0;si!=0;i+);return (i);void strass(s1,s2)char s1,s2; int i=0;while(s1i!=0) s2i=s1i;i+;s2i=0;printf(s2 is %s,s2);boolean strcmp(s1,s2) /*字符串比较子函数*/char s1,s2; int i=0;while (s1i=s2i & s1i!=0 & s2i!=0)i+;if (s1i=0 & s2i=0)return (true);elsereturn (false);status strcat (s1,s
9、2) /*字符串连接子函数*/char s1,s2; int i,j,k;i=strlen(s1);j=strlen(s2);if(i+j)=MAXN)return(fail);for(k=0;k=j;k+)s1i+k=s2k;return (success);status strins (s1,i,s2)char s1,s2;int i; int m,n,k;m=strlen(s1);n=strlen(s2);if (im|(m+n)MAXN )return (fail) ;for(k=m;k=i;k-)s1k+n=s1k;for(k=0;kn;k+)s1i+k=s2k;return (su
10、ccess);【测试数据与结果:】计算字符串的长度1. The length of string2. The assignment of string3. A string compare with another string:4. A string connect with another string:5. A string to be inserted into another stringPlease input a opertation:1please input a string:you are a boy!the length is: 14字符串的复制 1. The lengt
11、h of string2. The assignment of string3. A string compare with another string:4. A string connect with another string:5. A string to be inserted into another stringPlease input a opertation:2please input the first string:you are a boy!please input the second string:i am a girl!s2 is you are a boy!字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 操作 11
限制150内