欢迎来到天天文库
浏览记录
ID:38363119
大小:32.50 KB
页数:5页
时间:2019-06-11
《C语言综合性实验A报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言综合性实验报告学院:专业:姓名:学号:指导老师:时间:2011年12月8号1、需求分析1.1程序概述本程序实现对当前目录下英文文章中单词出现次数进行统计并输出。1.2程序运行环境Windows环境下运行1.3:功能需求描述1.读取当前目录中文件名为"case1.in"的一篇英文文章内容。2.统计文章中每个单词出现的次数。3.按出现次数由多到少以小写形式输出出现次数最多的前5个单词及出现次数,次数相同时则按字典顺序输出。2、总体设计2.1:设计思想本程序采用单模块设计,主要在main()函数中实现单词的读取、单词
2、数量的统计、特殊情况下单词的判别以及处理等功能。2.2:主要数据结构描述本程序使用结构体数组word储存文章中各单词信息,其中包括两个元素:①各单词中的字母数组charc[30];②各单词个数intn。3、详细设计main()函数首先打开当前目录中的文件"case1.in",并以只读形式读取文件中的内容,利用while循环读取文件中的每一个字母,并将其赋予字符变量ch,让后对ch进行判别,若ch是大写字母A~Z中其中一个,根据要求先将其转换为响应的小写字母。若ch是小写字母a~z中其中一个,则将其储存到字符数组b[]
3、中,当读取到的ch并非字母时,则分为两种情况:①读取到非字母时,作为判别是否分隔单词的标志,若分隔单词,则认为当前单词已完整录入;②考虑到在文章中一行的末尾可能出现连字符“-”,当出现连字符时,并不认为分隔单词,而是将下一行的字母并到当前的字符数组中,直到出现下一个分隔单词标志。当前单词完整读取到b后,将b与结构体数组word中的单词进行比较,若结构体数组中未存在该单词,则将该单词添加进charc[],并记录对应的单词个数intn为1.若结构体中已存在该单词,则再对应单词个数上增加1,以此统计单词的个数。然后继续读入
4、另外一个单词的字母直到文章结束。最后根据单词统计个数选择个数最多的5个单词并依次按要求输出。4、程序:#include"stdio.h"#include"math.h"#include"string.h"#include"stdlib.h"structword{charc[30];intn;}w[10000];main(){FILE*fp;charb[30],ch;inti=0,m=1,j=0,k=0,t=0,flag=0;fp=fopen("case1.in","r");while((ch=fgetc(fp))!=
5、EOF){if('A'<=ch&&ch<='Z')ch=ch+32;if('a'<=ch&&ch<='z'){b[i]=ch;i++;flag=1;}else{if(ch=='-'&&(ch=fgetc(fp))==''){flag=0;}else{if(flag==1){b[i]=' ';i=0;flag=0;m=0;for(j=0;j6、;k++;}}}}}for(i=0;iw[t].n)t=j;elseif(w[j].n==w[t].n){if(strcmp(w[j].c,w[t].c)<0)t=j;}}printf("%s%d",w[t].c,w[t].n);w[t].n=0;}return0;}5、总结:在本次实验中,综合应用了课本上所学到的关于C语言编程的各种知识,经过多次修改调试,最终得到了较为满意的程序,实现7、了文章单词的读取、统计及输出功能,达到了实验的要求。本程序优点:1.程序编写清晰有条理。2.解释详细通俗易懂。缺点:1.解释专业性低。2.程序编写不够精炼。改进:1.多上机实践,提高自身编程能力。2.多浏览高级书籍或程序,提升自身算法及编程思想。3.多注重细节,提高程序效率。
6、;k++;}}}}}for(i=0;iw[t].n)t=j;elseif(w[j].n==w[t].n){if(strcmp(w[j].c,w[t].c)<0)t=j;}}printf("%s%d",w[t].c,w[t].n);w[t].n=0;}return0;}5、总结:在本次实验中,综合应用了课本上所学到的关于C语言编程的各种知识,经过多次修改调试,最终得到了较为满意的程序,实现
7、了文章单词的读取、统计及输出功能,达到了实验的要求。本程序优点:1.程序编写清晰有条理。2.解释详细通俗易懂。缺点:1.解释专业性低。2.程序编写不够精炼。改进:1.多上机实践,提高自身编程能力。2.多浏览高级书籍或程序,提升自身算法及编程思想。3.多注重细节,提高程序效率。
此文档下载收益归作者所有