王明贤—综合性实验报告格式

更新时间:2023-05-19 08:07:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计综合实验

实验题目: 文件操作与字符处理综合实验 实验班级: 学生学号: 学生姓名: 任课教师: 提交时间:

2011级软工R1班 201131000421

王明贤 陈湘骥

2012年3月12日

华南农业大学 信息学院

一、题目与运行说明

(1) 题目描述

在当前目录中存在文件名为"case1.in"(其中case后为数字1,不是字母l,写错提交后会判错)的文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现要求读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典顺序输出,不足5个单词时,按序输出全部单词)。程序中注意如下细节:

(1) 空格、标点符号与回车符起到分隔单词的作用。 (2) 文章一行的末尾可能有连字符,出现连字符时,该行最末的字符串与下行最先出现的字符串

构一个单词;

(3) 名词缩写算一个单词; (4) 数字不算单词; (5) 单词不区分大小写; (6) 输出时单词全使用小写;

(2) 数据输入的形式和输入值的范围

单词以文件形式读入 总个数不超过10000 每个单词不多少20个字符

(3) 数据输出的形式

输出 单词及其它的个数以字符逐行输出

(4) 程序中所使用的主要变量

程序所用变量有:数组b,循环变量i、j、t,计数变量m、k,判断变量h

(5) 程序所能达到的功能以及出错处理

将文件中的大写字母转换为小写,并找出文章中不同的英文单词,且把它们出现的个数计出来;最后把使用频率最高的五个按出现次数从多到少的个数输出。其中可比较英文单词的大小,并将其排序。

二、程序设计思路

读入单词→检验是否单词→标记单词并计其个数→排序单词→输出前五个单词

三、程序清单 #include "stdio.h" #include "math.h" #include "string.h" #include "stdlib.h" struct word main() {

FILE *fp;

char b[30],ch;

int i=0,m=1,j=0,k=0,t=0,h=0; fp=fopen("case1.in","r"); if(!fp)

//定义文本标志h用来标志读到字符为单词 //以"读"方式打开文件 //判断文件是否正常打开

//定义文件指针

{

char c[30]; int n;

//在结构体里定义一个字符数组

//在结构体中定义记录出现相同单词次数的变量n

//创建一个结构体

}w[10000];

return 0;

//如果读入的字符不是文件结尾标志

while((ch=fgetc(fp))!=EOF) {

if('A'<=ch&&ch<='Z') ch=ch+32; //如果读到的字符为大写字母,将其转为小写字母 if('a'<=ch && ch<='z') {b[i]=ch;i++;h=1;}

//通过改变数组下标将读到的完整单词放入到字符数组,单词标志

赋值为1 时

else {

if(ch=='-'&&(ch=fgetc(fp))=='\n') //当读到的字符是标点符号和回车符

{

h=0;

//把单词标志赋值为0

} else {

//如果单词标志为1

if(h==1) { b[i]='\0';i=0;h=0;m=0; for(j=0;j<k;j++) {

if(strcmp(b,w[j].c)==0)

组单词相同

{m=1;break;}

} if(m) w[j].n++;

else

{w[k].n=1;strcpy(w[k].c,b);k++;}

}

} }

}

for(i=0;i<k&&i<5;i++) { t=0;

while(w[t].n==0) t++; for(j=1;j<k;j++) { if(w[j].n>w[t].n) t=j; else

if(w[j].n==w[t].n)

//如果数组中单词和结构体中对应数

//m赋值为1,跳出循环

//如果m不为0,相同单词个数自加

//单词出现次数为1,

//如果单词出现次数相同,使用字典排

}

}

}

{ }

if(strcmp(w[j].c,w[t].c)<0)

t=j;

//比较单词首字符大小 //交换下标把字符按大小排列

printf("%s %d\n",w[t].c,w[t].n); w[t].n=0;

//输出对应单词与其对应出现的次数 //每循环完一次把单词的次数赋值为0

return 0;

四、小结(收获和体会)

经过该综合性实验,涉及文件的操作,结构体的应用,循环有合理使用,数组的应用,字母的排序。这些都综合的体现了C的基本知识。这使得我对所学知识的应用。

评分表 题目:文件操作与字符处理学号: 评分项目 1.实现情况(40) :完成设计要求的情况 4.程序规范(10) :程序的结构与格式规范程度等等 5.报告情况(35) :报告内容是否详实,总结内容是否深刻等等 6.报告规范(15) :撰写的规范性、合理性等等 总成绩: 评语: 姓名: 分数

评阅老师:

评阅时间:

本文来源:https://www.bwwdw.com/article/1nl4.html

Top