c语言课程设计(字符串函数包).doc_第1页
c语言课程设计(字符串函数包).doc_第2页
c语言课程设计(字符串函数包).doc_第3页
c语言课程设计(字符串函数包).doc_第4页
c语言课程设计(字符串函数包).doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆科技学院C语言程序设计课程设计报告摘 要为了使字符或字符串的相关操作更方便简洁,本系统设计了一个字符串函数包来实现常用的字符和字符串的处理。该软件的主要功能是对字符串的比较、复制、拼接,判断字符的类别,对字符串进行转换,统计字符串中出现的指定字符或字符串,把整数转换到字符串中,把浮点数转换成字符串,把字符串转换成整数。该操作系统主要运用了几个函数:scanf,printf,puts,putc,getc,gets等,并结合指针来实现的。用户可以根据清晰明确的提示信息选择相应的操作项目,进入每个系统后也可以根据提示信息实现需要的操作。本系统主要适合需要对字符或字符串进行处理的用户。关键词:字符串 浮点数 指针 操作系统课程设计任务书设计题目:字符串函数包学生姓名课程名称程序设计基础课程设计专业班级计科11地 点I305/I306起止时间2012年1月9日1月13日设计内容及要求请设计一个字符串函数包,实现常用的字符、字符串处理函数。要求在设计该函数包的时候只能使用以下6个函数: scanf,printf,putc,getc,puts和gets。你设计的字符串函数包须实现以下功能:isAlpha判别一个字符是否是英文字母;isDigit判别一个字符是否是数字字符; my_strcmp字符串比较;my_strncmp字符串前n个字符的比较;my_strcpy字符串复制;my_strncpy字符串前n个字符的复制;my_strcat字符串拼接;my_strncat字符串前n个字符的拼接;my_strlen字符串中实际字符的技术;my_itoa整数转换到字符串;my_itof浮点数转换成字符串;my_strtoi字符串A转换成整数B(10进制、8进制、16进制和2进制);my_strlow把字符串A中的大写字母转换成小写字母;my_strupr把字符串A中的小写字母转换成大写字母;my_strstrcount统计字符串A中指定的某子串B出现的次数;my_strstr统计字符串A中指定的某子串B出现的首位置;my_strptr判别字符串A中是否存在字符串B中的字符,如果有返回位置指针,否则返回NULL指针; 然后设计一个综合性的例子验证你设计的这些函数;并把得到的结果和string.h中的函数做比较。【题目要求】 (1)要求你的综合性例子中使用的数据应该从文件或标准输入设备中读取到字符串或字符或字符数组中; (2)要求以上功能分别用函数和指针实现。并要求用C语言的文件操作语句将以上所有结果保存在文件XX.out。 【输入/输出要求】 (1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息; (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求周一:明确设计任务,学习相关基础知识周二:熟悉各知识点,进行基础练习周三:根据题目要求,进行设计和实现周四:根据题目要求,进行设计和实现周五:撰写报告,进行答辩参考资料1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任: 指导教师:伍建全/雷亮/焦晓军/陈应祖/杨治明 2012年1月1日目 录摘 要1课程设计任务书21 软件需求分析说明书52 系统分析与设计62.1 软件界面设计62.2 软件的数据(结构)设计62.3软件的算法设计63 软件的实现84 软件测试175 软件使用说明书21致谢23参考文献24附录25 1 软件需求分析说明书该系统有十七个实现功能,进入界面后可以按提示的数字进行选择功能,通过界面输入,可以在界面看到输出内容,并且所有结果都保存在当前文件XX.out中。该系统有以下功能1 判断字符进行的类别2 两个字符串的比较(整体或前几个字符的比较)3 两个字符串的复制(整体或前几个字符的复制)4 两个字符串的拼接(整体或前几个字符的拼接)5 求字符串的长度6 字符串的转换7 整数转换到字符串8 统计字符串中指定某子串出现的次数或首位置9 判断字符串中是否存在指定字符串的字符2 系统分析与设计2.1 软件界面设计2.2 软件数据(结构)设计本系统只运用了# include 包头文件,并将结果保存在当前文件XX. out中,文件内部一行为一个输出结果。2.3 软件的算法设计 字符的判断字符串的比较字符串的复制字符串的拼接字符串的长度字符串的转换整数转换到字符浮点数转换成字符字符串转换成整数统计子串出现次数字符串出现首位置有无指定字符菜 单图 2.1 图2.2英文大写英文小写数字字符字符的判断 字符串的复制、比较、拼接S1 S2S2 S1整体前几个整体前几个 图2.33 软件的实现本软件主要运用了if语句,文件的输出和几个函数体来实现的。文件的输出 fpout=fopen(XX.out,w);函数结构体:int mystrcmp(char *s1,char *s2)/字符串的比较while(*s1!=0& *s2!=0)if(*s1*s2)return 1;if(*s1*s2)return -1;if(*s1=*s2) s1+; s2+;if(*s1=0& *s2=0)return 0;if(*s1=0& *s2!=0)return -1;if(*s1!=0& *s2=0)return 1; int mystrncmp(char *s1,char *s2,int g)/字符串前几个字符的比较 int i=1;while(*s1!=0& *s2!=0& i+*s2)return 1;if(*s1*s2)return -1;if(*s1=*s2) s1+; s2+; if(*s1=*s2) return 0; void mystrcpy(char *s1,char *s2)/字符串的复制while(*s2!=0)*s1=*s2;s1+;s2+;*s1=0; void mystrncpy(char *s1,char *s2,int g)/字符串前几个字符的复制int i=1;while(*s2!=0& i+=g)*s1=*s2;s1+;s2+;*s1=0;void mystrcat(char *s1,char *s2)/字符串的拼接 while (*s1!=0)s1+;while(*s2!=0) *s1=*s2;s1+;s2+;*s1=0;void mystrncat(char *s1,char *s2,int g)/字符串前几个的拼接int i=1;while(*s1!=0)s1+;while(*s2!=0& i+0;i+) t=a%10; si=t+48; a=a/10; si=0; if(i%2!=0)for(b=1;b=i/2+1;b+,i-)str=sb-1;sb-1=si-1;si-1=str; if(i%2=0)for(b=1;b=i/2+1;b+,i-)str=sa-1;sa-1=si-1;si-1=str;return s; char * my_itof(double d, char* str)/浮点数转换成字符串 char str140; int i,j=0; int index=0; int dotPos = 0; unsigned long num; / 正负号 if ( d 0 ) strindex+ = -; d = 0 - d; / 判断小数点位置 for (i=0; i= 1) d = d / 10; dotPos += 1; else if (d 0.1) d = d * 10; dotPos -= 1; else break; for (i=0; i0 ) str1j+ = (char)num%10+0; / 0098651 098651 num /= 10; if (dotPos 1) strindex+ = 0; strindex+ = .; for (i=0; i0-dotPos; i+) strindex+ = 0; for (i=0; ij; i+) strindex+ = str1j-1-i; else for (i=0; idotPos; i+) strindex+ = str1j-1-i; strindex+ = .; for (; i=A& *s=a& *s=z) *s-=32;s+;int mystrstrcount(char*s1,char*s2)/统计字符串中指定某子串出现的次数int len2=mystrlen(s2);int len1=mystrlen(s1);int i,j,count1=0,count2=0;for(i=0;i+len2len1;i+,count1=0)for(j=0;jlen2;j+)if(*(s1+i+j)=*(s2+j)count1+;if(count1=len2)count2+;count1=0;return count2;int mystrstr(char*s1,char*s2)/统计字符串中指定某子串出现的首位置int len2=mystrlen(s2);int len1=mystrlen(s1);int i,j,count1=0,count2=0;for(i=0;i+len2len1;i+,count1=0)for(j=0;jlen2;j+)if(*(s1+i+j)=*(s2+j)count1+;if(count1=len2)return i+j-len2+1;char *mystrptr(char *s1,char *s2)/判断字符串中是否存在指定字符char *p;while(*s1!=0)p=s2;while(*p!=0)if(*s1=*p)return(char*)s1;p+; s1+; return NULL; 4软件的测试1字符的判断int mystrcmp(char *s1,char *s2) /字符串的比较int mystrncmp(char *s1,char *s2,int g) /字符串前几个字符的比较void mystrcpy(char *s1,char *s2) /字符串的复制void mystrncpy(char *s1,char *s2,int g) /字符串前几个字符的复制void mystrcat(char *s1,char *s2) /字符串的拼接void mystrncat(char *s1,char *s2,int g) /字符串前几个字符的拼接int mystrlen (char*s) /求字符串的长度char * my_itof(double d, char* str) /浮点数转换成字符串void mystrupr(char*s) /字符串中的字符小写变大写void mystrlow(char*s) /字符串中的字符大写变小写nt mystrstrcount(char*s1,char*s2) /统计字符串中指定某子串出现的次数int mystrstr(char*s1,char*s2) /统计字符串中指定某子串出现的首位置char *mystrptr(char *s1,char *s2) /判断字符串中是否存在指定字符 5 软件使用说明书操作该系统主要是在界面内选择需要的功能,而且有的功能里有包含其他的功能进行选择;一定要根据系统的提示来选择。例如 如果你想将字符串中的大写字母变小写,那么根据提示应该按6,该系统就进入了字符串转换系统然后根据所提示信息输入数据(每次输完数据按回车键后系统将会继续运行),最后就可以得到需要操作的结果,并且所有的结果都保存在当前文件xx.out中。致谢 非常感谢雷亮老师和伍健全老师的帮助,还有我的室友刘春花、郑欣仪、邹田的帮助。谢谢! 2011年 1月12日参考文献1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年附录# include int mystrcmp(char *s1,char *s2);int mystrncmp(char *s1,char *s2,int g);void mystrcpy(char *s1,char *s2);void mystrncpy(char *s1,char *s2,int g);void mystrcat(char *s1,char *s2);void mystrncat(char *s1,char *s2,int g);int mystrlen (char*s);char *my_itoa(int a,char *s);char * my_itof(double d, char* str); int my_strtoi(char *s);void mystrlow(char*s);void mystrupr(char*s);int mystrstrcount(char*s1,char*s2);int mystrstr(char*s1,char*s2);char *mystrptr(char *s1,char *s2); int main()FILE *fpout;double d;char s130;char s230; int n,m,g,h,count,a; char ch;fpout=fopen(XX.out,w);puts(.欢迎使用字符串函数包!.n);puts(请选择你的操作类型:n); puts(1字符的判断t2字符串的比较t3字符串的复制n4字符串的拼接t5字符串的长度t6字符串的转换n7整数转换到字符t 8浮点数转换成字符t9字符串转换成整数n10统计字符串中指定某子串出现的次数n11统计字符串中指定某子串出现的首位置n12判断字符串中是否存在指定字符nn(注意:若选择1,按回车键后直接输入要判断的字符。)); puts(请输入操作类型前面的数字:); scanf(%d,&n); if(n=1) scanf(n); scanf(%c,&ch);if(ch=a& ch=A& ch=1& ch*s2)return 1;if(*s1*s2)return -1;if(*s1=*s2) s1+; s2+;if(*s1=0& *s2=0)return 0;if(*s1=0& *s2!=0)return -1;if(*s1!=0& *s2=0)return 1; int mystrncmp(char *s1,char *s2,int g) /字符串前几个字符的比较 int i=1;while(*s1!=0& *s2!=0& i+*s2)return 1;if(*s1*s2)return -1;if(*s1=*s2) s1+; s2+; if(*s1=*s2) return 0; void mystrcpy(char *s1,char *s2) /字符串的复制while(*s2!=0)*s1=*s2;s1+;s2+;*s1=0; void mystrncpy(char *s1,char *s2,int g) /字符串前几个字符的复制int i=1;while(*s2!=0& i+=g)*s1=*s2;s1+;s2+;*s1=0;void mystrcat(char *s1,char *s2)/字符串的拼接 while (*s1!=0)s1+;while(*s2!=0) *s1=*s2;s1+;s2+;*s1=0;void mystrncat(char *s1,char *s2,int g)/字符串前几个的拼接int i=1;while(*s1!=0)s1+;while(*s2!=0& i+0;i+) t=a%10; si=t+48; a=a/10; si=0; if(i%2!=0)for(b=1;b=i/2+1;b+,i-)str=sb-1;sb-1=si-1;si-1=str; if(i%2=0)for(b=1;b=i/2+1;b+,i-)str=sa-1;sa-1=si-1;si-1=str;return s; char * my_itof(double d, char* str) /浮点数转换成字符串 char str140; int i,j=0; int index=0; int dotPos = 0; unsigned long num; / 正负号 if ( d 0 ) strindex+ = -; d = 0 - d; / 判断小数点位置 for (i=0; i= 1) d = d / 10; dotPos += 1; else if (d 0.1) d = d * 10; dotPos -= 1; else break; for (i=0; i0 ) str1j+ = (char)num%10+0; / 0098651 098651 num /= 10; if (dotPo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论