- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计综合实验
实验题目:文件操作与字符处理
实验班级:软件工程
学生学号:
学生姓名:
任课老师:
提交时间:2012.12.25
题目与运行说明
(1). 程序中所使用的主要变量
int flag=0,wflag=0,i,j,k,max,index[5] char wordt[20];
(2).数据输入的形式和输入值的范围
无
(3).数据输出的形式
%s或%s_%d
(4).程序所能达到的功能以及出错处理
存在文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典顺序输出,不足5个单词时,按序输出全部单词)。
程序设计思路
用二维数组wordc临时接收文件中的单词,当所输入的字符为字母时,把字母接到wordc后面,把wordc中的单词与单词信息记录c1[]作比较,若此单词已经出现过,则出现频数count++
否则新建一个结构空间来记录该单词。最后统计每个单词出现的次数,出现频数高的优先输出,其余降序排列,最后在屏幕中输出结果。
程序清单
#includestdio.h
#includemath.h
#includestring.h
#includestdlib.h
//定义words中所记录的不同单词的数量,从0开始记录
//一开始没有记录单词,当记录一个之前未记录过的单词时,n=n+1
int n=-1;
//记录单词信息,包括单词的内容和单词出现频数
struct words
{
int count;
char ch[20];
}word[10000];
main()
{
//index的元素初始化为-1,意为未记录
FILE *fp;
int flag=0,wflag=0,a,b,c,max,index[5]={-1,-1,-1,-1,-1};
char wordc[20];
for(a=0;a=9999;a++)
word[a].count=0;
fp=fopen(case1.in,r);
//以下程序段用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]==\n)
{
b++;
continue;
}
//若输入字符为非字母时,跳出循环,把数组最后的元素换成\0
if(!(wordc[a-b]=a wordc[a-b]=z || wordc[a-b]=A wordc[a-b]=Z || wordc[a-b]==\ || wordc[a-b]==-))
{
break;
}
}
wordc[a-b]=\0;
//把wordc中的单词与单词信息记录c1[]作比较
//若此单词已经出现过,则出现频数count++
//否则新建一个结构空间来记录该单词
for(a=0;a=n;a++)
{
if(strcmp(wordc,c1[a].ch)==0 wordc!=\0)
{
c1[a].count++;
wflag=1;
break;
}
else if(wordc==\0)
{
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;
}
}
//以下程序段的功能是当某几个单词的出现频数相同时,把它们按字母表顺序排列
if(flag==0)
您可能关注的文档
- c语言程序设计D.doc
- C语言程序设计答案(黄保和编)第5章.pdf
- C语言程序设计答案(黄保和编)第7章.pdf
- C语言程序设计答案(黄保和编)第8章.pdf
- C语言程序设计练习.docx
- C语言程序设计试题-A卷.doc
- C语言程序调试.docx
- C语言程序调用汇编程序的步骤.ppt
- C语言程序重点.docx
- C语言基础与C51程序设计电脑.ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)