资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
河南理工大学计算机科学与技术学院C语言课程设计报告课程名称: C 语言课程设计 题 目: 字符串类 设 计 者: 余小敏 专业班级: 网络1103 学 号: 311109040311指导教师: 刘 洁 2012年6月26日河南理工大学一、设计目的本程序旨在训练基本编程能力,了解字符串的相关操作以及函数调用及形参传递的方法。本程序中涉及函数的定义、声明、调用,以及关于形参的传递,又涉及到指针的运用和字符串函数的使用。通过练习,对C语言中字符串的应用有更深的了解,进一步提高编程能力。二、功能描述实现字符串的常用的五个功能。(1) 初始化字符串(2) 获得字符串长度(3) 查找字符或字符串(4) 字符串连接(5) 字符串比较三、总体设计功能模块设计(1) 主控main()函数执行流程 首先是两种字符串的初始化;然后调用测字符串长度函数;接着根据输入的需查找的字符串或字符,返回查找到的个数,从而知道是否查找到;接着执行字符串连接;最后进行两个字符串的比较。(2) 初始化字符串模块 利用gets();语句来实现,从而初始化字符串。源程序如下:printf(input string1:n);gets(str1);printf(input string2:n);gets(str2);(3)获得字符串长度利用strlen( );语句来实现,从而测量字符串的长度。原程序如下:k=strlen(str1);printf(%d,k);(4)查找字符或字符串 利用fun1()函数来调用,其中利用指针来依次访问要查找的字符串与原来的字符串所对应字符是否相等,若查找到,返回查找的次数;若果没有查找到,则返回0。源程序如下:intfun1(char*str1,char*t)intn;char*p,*r;n=0;while(*str1)p=str1;r=t;while(*r)if(*r=*p)r+;p+;elsebreak;if(*r=0)n+;str1+;returnn;(5)字符串连接 方法一:利用fun2()函数来实现。先定义两个字符串数组,然后利用for循环计算出第一个字符串的长度,再依次把第二个字符串的字符依次连接到它的后面,最后在其后加上字符串结束标志。源程序如下:voidfun2(charp1,charp2)inti,j;for(i=0;p1i!=0;i+);for(j=0;p2j!=0;j+)p1i+=p2j;p1i=0;方法二:利用字符串连接函数strcat来实现。把字符串2连接到字符数组1中字符串得后面,并删去字符串1的串标志0,结果字符串的长度是两个字符串长度之和。源程序如下:strcat(str1,str2);puts(str1);(6)字符串比较 方法一:利用字符串比较函数strcmp()函数来实现。函数返回值为整数:如果字符串1=字符串2,函数返回值为0;如果字符串1字符串2,函数返回值为一个正整数;如果字符串10)printf(str1str2n);if(d0)printf(str1str2n);/*字符串的比较方法一*/方法二:利用编写函数scmp完成字符串的比较。形参是变量名的方法:源程序如下:int scmp(chars1,chars2)inti;for(i=0;s1i!=0;i+)if(s1i!=s2i)break;return(s1i-s2i);形参是指针变量:源程序如下:intscmp(char*s1,char*s2) for(;*s1!=0;s1+,s2+)if(*s1!=*s2)break;return(*s1-*s2);四、运行结果如下图所示:五、设计总结通过这次设计,我得到了很大的锻炼。从中发现了许多自己在编程过程中没注意的问题,通过不断的改善和总结,对编程的严谨有了更高的认识。从中吸取了血多宝贵的经验,为以后更加深入的学习,开好了头。我发现自己有很多知识还理解的不够到位,需要自己课下好好下功夫,这样才会使自己的编程能力更上一层台阶。虽然编程的过程也许会很枯燥,但成功的喜悦能带给我们很强的成就感。我决定以后要多注意良好的编程习惯,从而使自己养成严谨的作风 参考文献【01】贾宗璞 许合利 C程序设计 人民邮电出版社 2011.8【02】C语言程序设计精品课程网站 2012.6【03】覃征,王志敏 程序设计方法与优化 西安交通大学出版社 2004【04】彭四伟,赵彤洲,高巍 C语言程序设计 清华大学出版社 2002 六、源程序如下#include#includevoidfun2(charp1,charp2)inti,j;for(i=0;p1i!=0;i+);for(j=0;p2j!=0;j+)p1i+=p2j;p1i=0;intfun1(char*str1,char*t)intn;char*p,*r;n=0;while(*str1)p=str1;r=t;while(*r)if(*r=*p)r+;p+;elsebreak;待添加的隐藏文字内容1if(*r=0)n+;str1+;returnn;/*intscmp(chars1,chars2)inti;for(i=0;s1i!=0;i+)if(s1i!=s2i)break;return(s1i-s2i);*/intscmp(char*s1,char*s2) for(;*s1!=0;s1+,s2+)if(*s1!=*s2)break;return(*s1-*s2);main()intk,m,d;charstr1100,str240,t50;printf(input string1:n);gets(str1);printf(input string2:n);gets(str2);/* 字符串的初始化*/k=strlen(str1);printf(%d,k);/*侧字符串的长度*/printf(n please enter substring t:);gets(t);m=fun1(str1,t);printf(n the result is :m=%dn,m);/*字符串的查找*/*strcat(str1,str2);puts(str1);*/*字符串的连接*/printf(n);printf(Invoke fun2(str1,str2):n);fun2(str1,str2);printf(After invoking:n);printf(%sn,str1);/*d=strcmp(str1,str2);if(d=0)printf(str1=str2n);if(d0)printf(str1str2n);if(d0)printf(str10)printf(str1str2n);elseif(scmp(str1,str2)0)printf(str1str2n);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号