c课程设计---字符串处理系统_第1页
c课程设计---字符串处理系统_第2页
c课程设计---字符串处理系统_第3页
c课程设计---字符串处理系统_第4页
c课程设计---字符串处理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书(C程序设计)班级: 信管B08-1 姓名:_ _设计题目:_字符串处理系统_设计时间:_2021.9.7_至_2021.9.11 _指导教师:_ _评 语:_评阅成绩: 评阅教师: C程序设计课程设计实验报告开课实验室:基础实验室四 2021年 9月10日实验题目字符串处理系统一、实验目的通过该课程的学习,使学生巩固和加深C程序设计理论知识,进一步掌握编程技巧和方法,并通过课程设计实践进一步加强学生独立分析问题和解决问题的能力、综合设计及创新能力的培养,同时注意培养学生调试程序、综合应用的能力。二、设备与环境PC兼容机、Windows操作系统、Turbo C/Win tc,Vc

2、+软件等。三、实验内容功能模块简介和系统结构图:字符串处理系统系统结构图:13-退出系统12-读取字符串文件11-保存字符串文件10-读取数字文件9-保存数字文件8-取出字符串7-字符数组的运算1-输入字符串2-显示数字3-将数字排序4-显示字母5-显示特殊字符6-计算字符串长度7. 5-返回主菜单7.4-两个字符串的比较7.3-字符串逆序排列7.2-字符串的连接7.1-字符串的复制4. 5-返回主菜单4.4-显示元音字母4.3-显示小写字母4.2-显示大写字母4.1-显示所有字母该功能模块一共有一级菜单13个,二级菜单10个。进入主界面后共有:1输入字符串。该模块的功能是输入要处理的字符串,

3、输入后会提示是否确定输入,确定后输出提示“字符串已成功输入!”。2.显示数字。该模块的功能是将字符串中的连续数字作为一个整数,依次存入数组a中并输出。3.将数字排序。该模块的功能是将数组元素按升序排序。4.显示字母。该模块的功能是将字符串的所有字母、大写字母、小写字母、元音字母在屏幕上输出。5.显示特殊字符。该模块的功能是输出字符串中的特殊字符。6.计算字符的长度。该模块的功能是对字符串进行统计,统计出字符串的长度、数字的个数、字母的个数、特殊字符的个数。7.字符数组的运算。该模块的功能是对字符串进行复制、连接、逆序排列、比较等操作。8.取出字符串。该模块的功能是取字符串中指定位置的指定个数的

4、字符串。9.保存数字文件。该模块的功能是将按升序排序后的数组元素一次存入文件data.out中10.读取数字文件。该模块的功能是从文件读出输出到屏幕。11.保存字符串文件。该模块的功能是将字符串存入一个文件。12.读取字符串文件。该模块的功能是从文件中读出字符串到屏幕。13.退出系统。该模块的功能是退出系统,返回到Windows状态。系统主要界面设置及运行说明:1.输入字符串。将字符串设为全局变量,用scanf函数从键盘输入字符。然后判断是否确定,若确定,则输入y,输出“字符串已成功输入!”,若否定,则按任意键重新输入。2.显示数字。用指针将字符串中的连续的数字作为一个整数放入a数组中。要注意

5、将字符转为数字的方法为用数字字符的ASCII与零的相减即得。3.将数字排序。将a数组里的数字用冒泡法进行升序排列。冒泡法是将前一个数与后一个数进行比较,若前面的数大,则交换。4-1.显示所有字母。用if语句判断字符串是否是字母,是则输出。同时计算字母的个数,若个数为0,则输出“字符串中没有字母!”。4-2.显示大写字母。用for语句循环,若字符串的字符是大写字母,则输出。如果大写字母的个数为0,则输出“字符串中没有大写字母!”。4-3.显示小写字母。方法同显示大写字母。字符为小写字母时输出。4-4.显示元音字母。元音字母有a,e,i,o,u,方法同显示大写字母。字符为元音字母时输出,大小写均要

6、输出。5.显示特殊字符。在二级菜单中按5进入主菜单,用ifelse语句,当字符不是数字,也不是字母,就是特殊字符。当特殊字符的个数为0是,输出“字符串中没有特殊字符!”。6计算字符串的长度。用for语句循环,字符串不是0时字符串个数+1,同时用if语句判断是否是数字或字母,计算个数。特殊字符的个数为字符串的长度减去数字和字母的个数。7-1.字符串的复制。不用字符串函数做字符串的复制。先定义一个字符数组,将原字符串在循环中赋给定义的字符数组,数组的最后加0,就成为复制的字符串。7-2.字符串的连接。定义两个字符数组,一个放输入的要连接的字符串,一个复制原字符串,将输入的要连接的字符串放在该数组后

7、面,数组的最后加0,再输出连接后的字符串。7-3字符串的逆序排列。先计算出字符串的长度,将原字符串的最后一个字符放在定义的数组的第一位,用循环依此类推,定义数组的最后加0,就变成将原字符串逆序排列的字符串,将之输出。7-4.两个字符串的比较。输入一个字符串,定义c为原字符串减去新字符串,若c大于0,则原字符串大,若c小于0,则新字符串大,若c等于0,则两个字符串相等。8.取出字符串。在二级菜单中输入5,返回主菜单。定义一个新数组,输入取出串的位置和取出串的个数,从取出串的位置处开始循环,将指定个数的字符放入新数组中,最后加0即可。9.保存数字文件。将升序排序后的a数组一次存入文件data.ou

8、t中。打开文件,若打不开,输出“不能打开文件!”,用fwrite将数组存入文件中,若不能写入,则输出“文件打开错误!”。写入后,关闭文件,输出“数字已写入文件,文件关闭!”。10.读取数字文件。打开9中保存的文件,若不能打开,输出“不能打开文件!”,将从文件中读出的数输出到屏幕上,关闭文件。11.保存字符串文件。定义文件名,输入文件名并建立文件,将字符串写入文件中,若写入错误,输出“文件打开错误!”。关闭文件,输出“字符串已写入文件,文件关闭!”。12.读取字符串文件。将11中输入的文件名作为全局变量,打开该文件,读出文件里的字符串并输出在屏幕上。13.退出系统。当菜单中选择的数大于该菜单的模

9、块数,则输出“输入错误!请重新输入!”,并跳回选择数字键的地方。退出系统即进入空语句,退回到Windows状态。四、实验结果及分析(源程序代码)#includechar str100,*p;int a100,*pa;int n; /*n为a数组的个数*/int m; /*m为字符串的长度*/char filename10; /*定义字符串文件名为全局变量*/void main()void input(); /*1-输入字符串*/void number(); /*2-显示数字*/void sort(); /*3-将数字排序*/void alphabet(); /*4-显示字母*/void spe

10、cial(); /*5-显示特殊字符*/void length(); /*6-计算字符串长度*/void array(); /*7-字符数组的运算*/void extraction(); /*8-取出字符串*/void save_number(); /*9-保存数字文件*/void read_number(); /*10-读取数字文件*/void save_string(); /*11-保存字符串文件*/void read_string(); /*12-读取字符串文件*/int c;system(cls); /*清屏*/printf(n);printf( 字符串处理 n);printf(n);

11、printf( 1-输入字符串 n);printf( 2-显示数字 n);printf( 3-将数字排序 n);printf( 4-显示字母 n);printf( 5-显示特殊字符 n);printf( 6-计算字符串长度 n);printf( 7-字符数组的运算 n);printf( 8-取出字符串 n);printf( 9-保存数字文件 n);printf( 10-读取数字文件 n);printf( 11-保存字符串文件 n);printf( 12-读取字符串文件 n);printf( 13-退出系统 n);printf(n);printf(谢谢使用本系统n);printf(n);agai

12、n:printf( 【请用数字键选择操作菜单】:);scanf(%d,&c);switch(c)case 1:input();break;case 2:number();break;case 3:sort();break;case 4:alphabet();break;case 5:special();break;case 6:length();break;case 7:array();break;case 8:extraction();break;case 9:save_number();break;case 10:read_number();break;case 11:save_strin

13、g();break;case 12:read_string();break;case 13:goto end;default:printf(输入错误!请重新输入!n);goto again; end: ; /*如果选择项不在111之间则重输*/void input() /*1-输入字符串*/char c;doprintf(n);printf(输入一个字符串(以空字符串结束):n);scanf(%s,str);getchar();printf(是否确定输入?(按y确定,按任意键重新输入));c=getchar();while(c!=y);printf(字符串已成功输入!-n);getch();m

14、ain();void number() /*2-显示数字*/int i,f; /*将字符串中的连续数字作为一个整数,依次存入数组a中并输出*/for(i=f=n=0,p=str;*p!=0;p+)if(*p=0&*p=9)if(f) an-1=an-1*10+*p-0;else f=1;an+=*p-0;elsef=0;printf(n);printf(字符串中的数字有:n);for(pa=a;paa+n;pa+)printf(%d ,*pa);getch();main();void sort() /*3-将数字排序*/int i,j,t;for(i=0;in-1;i+) /*用冒泡法从小到大

15、排序*/for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;printf(n);printf(排序后数字为:n);for(i=0;i=a&*p=A&*p=A&*p=a&*p=0&*p=a&*p=A&*p=0&*p=a&*p=A&*p0)printf(原字符串大n);else if(c0)printf(输入的字符串大n);elseprintf(两个字符串大小相等n);getch();array();void extraction() /*8-取出字符串*/int a,b;char str_out100,*po;printf(n);printf(原字符串为:n);for(p=str

16、;*p!=0;p+)printf(%c,*p);printf(n);printf(输入取出串的位置:n);scanf(%d,&a);printf(输入取出串的个数:n);scanf(%d,&b);for(p=str,po=str_out;p(str+b);p+,po+)*po=*(p+a);*po=0;printf(取出的字符串为:n);for(po=str_out;*po!=0;po+)printf(%c,*po);getch();main();void save_number() /*9-保存数字文件*/FILE *fp;int i;printf(n); /*数组元素按升序排序后一次存入文

17、件data.out中*/if(fp=fopen(data.out,w)=NULL)printf(不能打开文件!n);return;for(i=0;in;i+)if(fwrite(&ai,4,1,fp)!=1)printf(文件打开错误!n);fclose(fp);printf(数字已写入文件,文件关闭!n);getch();main();void read_number() /*10-读取数字文件*/FILE *fp;int i;printf(n); /*从文件读出输出到屏幕*/if(fp=fopen(data.out,r)=NULL)printf(不能打开文件!n);return;print

18、f(读取的数字文件为:n);for(i=0;in;i+)fread(&ai,4,1,fp);printf(%d ,ai);fclose(fp);printf(n);getch();main();void save_string() /*11-保存字符串文件*/FILE *fp;int i;printf(n);printf(输入文件名:);scanf(%s,filename);if(fp=fopen(filename,w)=NULL)printf(不能打开文件!n);return;for(i=0;im;i+)if(fwrite(&stri,1,1,fp)!=1)printf(文件打开错误!n);

19、fclose(fp);printf(字符串已写入文件,文件关闭!n);getch();main();void read_string() /*12-读取字符串文件*/FILE *fp;int i;printf(n);if(fp=fopen(filename,r)=NULL)printf(不能打开文件!n);return;printf(读取的字符串文件为:n);for(i=0;im;i+)fread(&stri,1,1,fp);printf(%c,stri);fclose(fp);printf(n);getch();main();五实验总结通过做C程序设计课程设计,我复习了C语言的知识,加深了对

20、C语言中各种语句的理解和运用,收获很大。在这次程序设计中,我在老师要求的题目外,加入了字符串长度的计算,字符串的复制、连接、逆序排列和比较。然而在做“将字符串中的连续数字作为一个整数,依次存入数组a中并输出”时,遇到了困难,我去网上搜索了资料,并根据自己的理解写出了程序。这让我认识到了自己的不足,让我明白在编程道路上我还有很远的路要走。在调试程序的过程中,我总结出了一些规律,懂得了怎样才能更快更好地发现自己的错误,这给了我很大的收获。在以后的学习中,我会增加对知识的熟练度,尽量用简单明了的方法编写程序,增加知识面,去了解更多的编程语言,使自己在以后的编程道路上走得更加顺利。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:年 月 日 公司印章管理制度一、目的 公司印章是公司对内对外行使权力的标志,也是公司名称的法律体现, 因此,必须对印章进行规范化、合理化的严格管理,以保证公司各项业务的正常运作,由公司指定专人负责管理。二、印章的种类1、 公章,是按照政府规定,由主管部门批准刻制的代表公司权力的印章。2、 专用章,为方便工作专门刻制的用于某种特定用途的印章,如:合同专用章、财务专用章、业务专用章、仓库签收章等。 3、手章(签名章),

温馨提示

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

评论

0/150

提交评论