1、0, 若st,则返回值0. (流程图)Status StrCompare(HString S,HString T)/6.串替换:在主串s中用子串v替换所有的子串tStatus StrReplace(HString &S,HString V,HString T)/7.串插入:在主串s中的给定位置pos插入子串tStatus StrInsert(HString &S,int pos,HString T)/8.取子串: 将串s中从起始位置pos开始长度len的字符串放入另一个串tStatus SubString(HString &S,int pos,int len,HString &T)/9.串删除
2、: 删除串s中的子串t。Status StrDelete(HString &/10.求子串位置:从主串s中取出从第i个位置开始、长度和串t相同的子串,和t进行比较,若相等,则t在s中的位置值为iStatus StrIndex(HString &S,int i,HString T)/(2)串应用:设有串s,求出它的所有子串,并输出。Status SubString_All(HString S)3实验要求(1)上机前交实验源程序(纸质版),由学习委员统一收好交老师(附上不交同学名单)。(2)用一切你能想到的办法解决遇到的问题,培养解决问题的能力。(3)实验课上进行答辩。(4)实验报告当场交。报告内
3、容包括 :实验目的、实验内容、实验代码、实验运行结果以及实验体会供五部分。串的堆分配存储typedef struct char *ch; /若是非空串,则按串长分配储存区,否则ch为NULL int length; /串长度HString;23主要算法3.1 顺序存储结构(1)结构定义:#includestdlib.hstring.h#define MAX 255typedef char sstringMAX+1;int strlength(sstring s);/判断串长int strempty(sstring s); /判断空串int strassign(sstring &t,char*
4、s);/串赋值int concat(sstring &t,sstring s1,sstring s2); /串连接int strcompare(sstring s,sstring t);/串的比较void strprint(sstring s);/输出int strinsert(sstring s,int pos,sstring t);/串插入int strdelete(sstring s,int pos,int len);/删除字串int replace(sstring s,sstring t,sstring v);/串的替换int substring(sstring &sub,sstrin
5、g s,int pos,int len);/取子串int index(sstring s,sstring t,int pos);/字串定位 t,char* s)/初始条件:字符串chars已经存在 /操作结果:生成一个其值等于chars的串t int i,n; n=strlen(s); if(n=MAX) return 0; else t0=n; for(i=1;i=t0;i+)/依次给串赋值 ti=si-1; return 1; /求串长度int strlength(sstring s)/操作结果:返回串s的元素 return s0;/判断串是否空int strempty(sstring s
6、) return (s0=0);/返回值/串连接t,sstring s1,sstring s2)字符串s1和s2已经存在用T返回s1和s2连接成的新串。 int i; if(s10+s200,若是s=t,则返回值=0,若是s int i;=ti&=s0; if(si!=ti) return si-ti;/返回大于的值 return s0-t0;void strprint(sstring s)依次输出串中的元素 printf(%c,si);nn);int strinsert(sstring s,int pos,sstring t) 在串s第pos个字符之前插入串t,完成插入返回,否则返回 if(
7、poss0+1) if(s0+t0=pos;i-) si+t0=si; for(i=pos;pos+t0; si=ti-pos+1; s0+=t0; for(i=s0; si+MAX-s0=si; for(i=pos; i=s0 ; si=ti-pos+1; s0=MAX; int strdelete(sstring s,int pos,int len)在串s第pos个字符起删除长度为len的子串,删除成功返回,否则返回 if(poss0-len+1|len0) return 0; for(i=pos+len;i+)/依次删除串中指定的元素 si-len=si; s0-=len;int rep
8、lace(sstring s,sstring t,sstring v)串t被s替换,成功返回,否则返回 int i=1; int k; if(strempty(t)/判断串t为空 return 0; do i=index(s,t,i); printf(%d,i); if(i) strdelete(s,i,t0);/调用函数 k=strinsert(s,i,v); if(!k) return 0; i+=v0; while(i);sub,sstring s,int pos,int len)用sub返回串s的第pos个字符起长度为len的子串s0|lens0-pos+1)=len; subi=sp
9、os+i-1; sub0=len; /字串定位int index(sstring s,sstring t,int pos)返回子串T在主串S中第pos个字符之后的位置, /若不存在,则函数值为 int i,j; if(1=pos&pos=s0) i=pos; j=1; while(i=s0&jt0) return i-t0; return 0; else/主函数void main() int i,pos,len; char aMAX,bMAX,cMAX; sstring s,t,v,sews,sub; int k; /设置选项变量 while(1) /system(cls/清屏 printf(
10、nt*nt* 串的基本操作及其应用 *nt*nt * 1.串的赋值 2.串比较 *nt * 3.串的长度 4.取子串 * nt * 5.字符串替换 6.字符串插入 * nt * 7.字符串连接 8.销毁队列 * nt * 9.清空队列 0.退出 *nt*n请选择选项: /打印选项功能提示 scanf( %d,&k); if(k9)输入有误,请重新输入!n continue; switch(k) /分支结构来调用各功能子函数 case 1:字符串的赋值!请输入两个字符串!请输入第一个字符串; scanf(%s,a); strassign(s,a);请输第二个字符串;,b); strassign(
11、t,b);第一个字符串为: strprint( s);第二个字符串为: strprint( t); break;/退出并重新进入主菜单 case 2:串的比较! i=strcompare( s, t); if(i=0)两个字符串相等! else if(i0) 第一个字符串比第二个字符串小!第一个字符串比第二个字符串大! case 3:求串的长度! i=strlength(s);串的长度为: case 4:取子串!输入一个字符串:字符串为: strprint(s);请输入位置和长度!%d%dpos,&len); if(substring(sub,s,pos,len) printf(所取子串为:
12、strprint(sub);取子串失败! case 5:字符串替换!请输入主字符串:请输需要替换子串:请输入需要换成的子串:,c); strassign(v,c);主字符串为:需要替换子串为:需要换成的子串为: strprint( v); if( replace( s, t, v)替换后的新串为: strprint( s);替换失败n case 6:字符串插入n请输入主字符串n请输入要插入的字符串n请输入要插入的位置n scanf(pos);主字符串为:要插入的字符串为: strprint(t); if( strinsert( s, pos, t)插入后的新串为: strprint(s); case 7:字符串连接n i= concat(sews,s,t); if(i=0)连接失败n连接后的新串为: strprint( sews);/退出并重新进入主菜单; case 0:break;3.流程图1.串比较流程图2.串连接流程图4程序运行结果 (1) 实验内容(1)运行结果如下:5.心得体会。图的基本操作还有许多的不解之处,特别是最短距离
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1