您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > C语言课程设计-字符串处理
安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity1《C语言程序设计》课程设计报告题目字符串处理学号姓名同组人员年级专业09电子信息工程2班指导教师完成日期2010年6月19日安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity2目录1.C语言程序设计目的要求……………………………………………32.字符串处理设计要求……………...……………………………….33.字符串处理流程图…………………………………………………...34.字符串处理源程序…………………………………...………………55.程序分析………………………………………….…………………95.1头文件应用………………………………………………………95.2函数的应用………………………………………………………95.3库函数的调用…………………………………………………...106.程序调试截图...………………………………………………………117.参考资料……………………………………………………………...138.总结…………………………………………………………………...149.物理与电子信息学院课程设计评定意见…………………………15安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity3C语言程序设计目的要求在教师指导下,学生根据选定的课题,综合运用所学程序设计的知识,完成问题分析、模块设计、代码编写、程序调试和运行等训练任务。通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格,培养在软件开发中相互合作的团队意识字符串处理设计要求1)从键盘输入一个英文句子并保存在字符数组中;2)能删除多余的空格:单词之间只留一个空格,句子前后无空格;3)能统计某单词出现的频度;4)能替换某个单词。法实现也可。字符串处理流程图这个程序调用3个功能函数,分别起处理删除空格、查找某个单词出现频度、用一个单词替换原来的一个单词。最后,在主程序里对这3个函数进行调用,完成函数要求的所有功能。安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity4下面就是总的程序流程图:开始输入英文句子输出英文句子调用Delete(str)函数清除前导和后导空格,中间多余空格输出清除空格后的句子输入要统计个数的单词调用FintCount(str)函数统计其出现次数调用Swap(str)函数替换某个单词输出替换后的英文句子结束安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity5字符串处理源程序#includestdio.h#includestring.h#includectype.hvoidDelete(charstr[]){inti,j,Length,StartBlank=0,EndBlank=0,MiddleBlank=0;Length=strlen(str);for(i=0;iLength;i++)/*删除前导空格*/if(str[i]=='')StartBlank++;elsebreak;for(j=0;jLength;j++)str[j]=str[j+StartBlank];Length-=StartBlank;for(i=Length-1;i=0;i--)/*删除后导空格*/if(str[i]=='')EndBlank++;elsebreak;Length-=EndBlank;while(EndBlank0){str[Length-1+EndBlank]=str[Length+EndBlank];EndBlank--;}i=0;/*删除中间多余空格*/while(iLength){if(str[i]==''){安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity6if(str[i+1]==''){for(j=i+1;jLength;j++)str[j]=str[j+1];MiddleBlank++;Length--;}elsei++;}elsei++;}}voidFindCount(charstr[]){charFindWord[20],*p1,*p2;intcount=0;/*查找单词出现的次数*/printf(EnteraFindword:\n);gets(FindWord);p1=str;p2=FindWord;while(*p1!='\0'){if((*p1==*p2)&&(!isalpha(*(p1-1))))while((*p1==*p2)&&(*p2!='\0')){p1++;p2++;}elsep1++;if((*p2=='\0')&&((*p1=='')||(*p1=='\0')))count++;/*所查找单词完全匹配*/p2=FindWord;/*重置查找单词*/}printf(FindCount:%d\n,count);}voidSwap(charstr[])安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity7{charSwapWord[20],FindWord[20],*p1,*p2;intj,s,k,i=0,SwapWordLength,strLength,FindWordLength,n;printf(EnteraFindWord:\n);gets(FindWord);printf(EnteraSwapWord:\n);gets(SwapWord);p1=str;p2=FindWord;strLength=strlen(str);/*原英文句子长度*/FindWordLength=strlen(FindWord);/*查找单词长度*/SwapWordLength=strlen(SwapWord);/*替换单词长度*/n=SwapWordLength-FindWordLength;/*查找和替换单词长度的差*/while(*p1!='\0'){if((*p1==*p2)&&(!isalpha(*(p1-1))))while((*p1==*p2)&&(*p2!='\0')){p1++;p2++;i++;}else{p1++;i++;}if((*p2=='\0')&&((*p1=='')||(*p1=='\0')))/*所查找单词完全匹配*/{if(n0){j=i-FindWordLength;for(k=0;kSwapWordLength;k++)str[j++]=SwapWord[k];for(s=i;sstrLength;s++)str[j++]=str[s];while(jstrLength)str[j++]='\0';strLength=strlen(str);i+=n;安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity8p1+=n;}else{for(s=strLength+n;si;s--)str[s]=str[strLength--];j=i-FindWordLength;for(k=0;kSwapWordLength;k++)str[j++]=SwapWord[k];strLength=strlen(str);i+=n;p1+=n;}}p2=FindWord;}}voidmain(){charstr[1000];printf(InputaEnglishsentence:\n);gets(str);/*输入一个英文句子*/printf(OutputEnglishsentence:\n);puts(str);Delete(str);/*删除前导空格,后导空格,中间多余空格*/printf(DeleteEnglishsentence:\n);puts(str);FindCount(str);/*统计某个单词出现次数*/Swap(str);/*查找并替换某个单词*/printf(SwapEnglishsentencd:\n);puts(str);}安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity9程序分析一、头文件的应用#includestdio.h#includestring.h#includectype.h二、函数的应用voidDelete(charstr[])voidFindCount(charstr[])voidSwap(charstr[])子函数详细代码,如:voidDelete(charstr[]){inti,j,Length,StartBlank=0,EndBlank=0,MiddleBlank=0;Length=strlen(str);for(i=0;iLength;i++)if(str[i]=='')StartBlank++;elsebreak;for(j=0;jLength;j++)str[j]=str[j+StartBlank];Length-=StartBlank;for(i=Length-1;i=0;i--)if(str[i]=='')EndBlank++;elsebreak;Length-=EndBlank;while(EndBlank0){安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity10str[Length-1+EndBlank]=str[Length+EndBlank];EndBlank--;}i=0;while(iLength){if(str[i]==''){if(str[i+1]==''){for(j=i+1;jLength;j++)str[j]=str[j+1];MiddleBlank++;Length--;}elsei++;}elsei++;}}三、库函数的调用输出函数的调用,如:printf(InputaEnglishsentence:\n);输入函数的调用,如:gets(str);程序调试截图输入一个英文句子:安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity11输入句子:删除空格后的句子:安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity12统计一个单词出现频度:用一个单词替换原来的一个单词:安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity13参考资料[1]谭浩强,C程序设计教程,清华大学出版社,2007年[2]赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年[3]夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年[4]谭浩强编著,《C程序设计》,清华大学出版社,1991年[5]GaryJ.Bronson,AFirstBook
本文标题:C语言课程设计-字符串处理
链接地址:https://www.777doc.com/doc-4954816 .html