《字符串的相关操作(数据结构课程设计C语言版)(共17页).doc》由会员分享,可在线阅读,更多相关《字符串的相关操作(数据结构课程设计C语言版)(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 课程设计报告课程设计题目: 字符串的相关操作 学生姓名 专 业 班 级 指导教师 2012年 6月 24日1、 题目及要求 课程设计目的: 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。 题目:字符串的相关操作 1)建立两个字符串string1和string22)编程实现字符串的连接、比较、查询string2在string1的位置、求子串、求串长二、模块图 菜单:choose1 2 3 4 5 6 7 0创建字符串显示求串长比较串串连接串定位求子串退出
2、 1比较s1和s2求s1的字串7创建s1和s2 4 5 显示s1和s2连接后的串求s1和s2连接后的串长326定位s2在新生成的串里的位置 0退出三、程序清单#include#include#include#define maxlen 40typedef struct char chmaxlen+1; int len;sstring;void strini(sstring *s) s-len=0;char *strcreate(sstring *s,int len) if(lenmaxlen) printf(the len is illegal!n); else printf(please i
3、nput the data of the sstirng:n); s-len=len; scanf(%s,s-ch); return s-ch;void strdisplay(sstring *s) if(s-lenchs-len=0; printf(%s,s-ch); printf(n);int strcompare(sstring s, sstring t)int i;for (i=0;is.len&it.len;i+)if (s.chi!=t.chi)return(s.chi - t.chi);return(s.len - t.len);int strlength(sstring s)r
4、eturn(s.len);int strlink(sstring *s,sstring t1,sstring t2)int i,j, flag;for(j=0;jchj=t1.chj;s-len=t1.len;if (t1.len + t2.len=maxlen)for (i=t1.len; ichi=t2.chi-s-len;s-len+=t2.len; s-chs-len=0;flag=1;elseif (t1.lenmaxlen)for (i=t1.len;ichi=t2.chi-s-len;s-len=maxlen; s-chs-len=0;flag=0;elseflag=0;retu
5、rn(flag);int strindex(sstring s,int pos, sstring t)int i, j, start;if (t.len=0)return(0);start=pos;i=start;j=0;while (is.len & j=t.len)return(start);elsereturn(-1);int substring(sstring *sub, sstring s, int pos, int len)int i;if (poss.len | lens.len-pos)sub-len=0;return(0);elsefor (i=0; ichi=s.chi+p
6、os;sub-len=len; sub-chsub-len=0;return(1);void menu() int flag=1,m=0,n,i,len,pos; sstring s4; while(flag) printf(/*-*/n); printf(1,createn); printf(2,displayn); printf(3,lengthn); printf(4,comparen); printf(5,linkn); printf(6,indexn); printf(7,substringn); printf(0,exitn); printf(/*-*/n); printf(ple
7、ase choose:n); scanf(%d,&n); switch(n) case 1: printf(create s%dn,m+1); printf(please input the length of the s%d:n,m+1); scanf(%d,&len) ; strini(&sm); strcpy(sm.ch,strcreate(&sm,len); m+; break; case 2: printf(which string to display:n); scanf(%d,&i); printf(display s%dn,i); strdisplay(&si-1); brea
8、k; case 3: printf(which string to show length:n); scanf(%d,&i); printf(the string%d s length is:%3dn,i,strlength(si-1); break; case 4: printf(compare s1 to s2n); if(strcompare(s0,s1)0) printf(s1s2n); else if(strcompare(s0,s1)=0) printf(s1=s2n); else printf(s1s2n); break; case 5: printf(link s1 to s2
9、n); strlink(&s2,s0,s1); break; case 6: printf(please input pos:n); scanf(%d,&pos); printf(the position is in:%3dn,strindex(s2,pos,s1); break; case 7: printf(please input pos:n); scanf(%d,&pos); printf(please input len:n); scanf(%d,&len); strini(&s3); substring(&s3,s0,pos,len); strdisplay(&s3); break
10、; case 0: exit(0); default:printf(the choice is illegal! try again!n); main() menu();4、 运行结果 该菜单用的是下标标注法,即0-5表示1-6这6个位置,截图前有操作的解释(1)初始菜单:(2)创建:创建字符串s1和s2(3)显示:这里显示s1和s2连接后的串,所以这步运行应在连接操作之后,也可以单独显示s1和s2(4)串长:同上,连接操作之后运行,求的是s1和s2连接后的串长(5)比较串:(6) 串连接:这里只执行连接操作,无显示,显示见操作【2】display(7)定位串:上面已经解释是下标标注法,这里的2和5位置都是从0开始计位置的,这里求的字串是s2在新生成的(合并s1和s2后的串)串里的位置(8)求子串:同上,下标标注法4、 小结(收获和体会) 专心-专注-专业