资源描述:
《c语言程序设计综合实验77157》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言程序设计综合实验实验题目:文件操作与字符处理实验班级:软件工程学生学号:学生姓名:任课老师:提交时间:2012.12.25一.题目与运行说明(1).程序中所使用的主要变量intflag=0,wflag=0,i,j,k,max,index[5]charwordt[20];(2).数据输入的形式和输入值的范围无(3).数据输出的形式%s或%s_%d(4).程序所能达到的功能以及出错处理存在文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序
2、输出,次数相同时按字典顺序输出,不足5个单词时,按序输出全部单词)。二.程序设计思路用二维数组wordc临时接收文件中的单词,当所输入的字符为字母时,把字母接到wordc后面,把wordc中的单词与单词信息记录c1[]作比较,若此单词已经出现过,则出现频数count++否则新建一个结构空间来记录该单词。最后统计每个单词出现的次数,出现频数高的优先输出,其余降序排列,最后在屏幕中输出结果。三.程序清单#include#include#include#include//定义words中所记录的不
3、同单词的数量,从0开始记录//一开始没有记录单词,当记录一个之前未记录过的单词时,n=n+1intn=-1;//记录单词信息,包括单词的内容和单词出现频数structwords{intcount;charch[20];}word[10000];main(){//index的元素初始化为-1,意为未记录FILE*fp;intflag=0,wflag=0,a,b,c,max,index[5]={-1,-1,-1,-1,-1};charwordc[20];for(a=0;a<=9999;a++)word[a].count=0;fp=fopen("case1.in","r
4、");//以下程序段用wordc临时接收文件中的单词while(!feof(fp)){b=0;c=0;for(a=0;a<=19;a++){fscanf(fp,"%c",&wordc[a-b]);//当所输入的字符为字母时,把字母接到wordt后面//用if来排除非字母的字符if(wordc[a-b]>='A'&&wordc[a-b]<='Z')wordc[a-b]=wordc[a-b]-'A'+'a';if(wordc[a-b]==''){b++;continue;}//若输入字符为非字母时,跳出循环,把数组最后的元素换成' 'if(!(wordc[a-b
5、]>='a'&&wordc[a-b]<='z'
6、
7、wordc[a-b]>='A'&&wordc[a-b]<='Z'
8、
9、wordc[a-b]=='''
10、
11、wordc[a-b]=='-')){break;}}wordc[a-b]=' ';//把wordc中的单词与单词信息记录c1[]作比较//若此单词已经出现过,则出现频数count++//否则新建一个结构空间来记录该单词for(a=0;a<=n;a++){if(strcmp(wordc,c1[a].ch)==0&&wordc!=" "){c1[a].count++;wflag=1;break;}elseif(w
12、ordc==" "){wflag=1;break;}}if(wflag==0){n++;strcpy(c1[n].ch,wordc);c1[n].count++;}wflag=0;}fclose(fp);//以下程序段用来比较记录中各单词的出现频数//出现频数高的优先输出,其余降序排列for(c=0;c<=4;c++){max=0;for(a=0;a<=n;a++){if(c1[a].count>=max){flag=0;for(b=0;b<=4;b++){if(index[b]==a){flag=1;break;}}//以下程序段的功能是当某几个单词的出现频数
13、相同时,把它们按字母表顺序排列if(flag==0){max=c1[a].count;if(c!=0)if(c1[a].count==c1[index[c-1]].count){if(strcmp(c1[a].ch,c1[index[c-1]].ch)<0){index[c-1]=a;}}index[c]=a;}}}}//若单词的字母表优先度高,则把它的index放在同频数单词之前//该index之下的单词和全部向后退一格for(a=0;a<=3;a++)for(c=c+1;c<=4;c++){if(c1[index[a]].count==word[index[c
14、]].co