2009年计算机网络技术三级上机试题练习127.doc

2009年计算机网络技术三级上机试题练习127.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2009年计算机网络技术三级上机试题练习127

2009年计算机网络技术三级上机试题练习127 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数CountWord(),找出重复出现次数最多的十个单词,并按它们的出现次数从大到小存入字符串数组yy中,它们各自出现的次数也将依次存放在整数数组nn中,最后调用函数WriteDat()把结果yy和nn输出到文件OUT.DAT中,单词和出现次数之间用“:”分开。 原始数据文件的存放格式是:每行的宽度均小于80个字符,每一个单词的长度不大于20,含标点符号和空格。 注意:部分源程序存放在文件prog1.c中。请勿改动主函数Main()、读数据函数ReadDat()和输出函数 WriteDat()的内容 /*参考答案*/ #include <stdio.h> #include <string.h> #include <conio.h> char xx[50][80]; char yy[10][20]; int maxline = 0,nn[10]; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); /*这个函数用于统计某个单词出现的次数*/ int Count(char* word) { int i,j,n = 0; if(*word == '\0') return 0; for(i = 0; i < maxline; i++) { for(j = 0; j < 80; j++) { if((j == 0) || ((xx[i][j] != '\0') && (xx[i][j - 1] == '\0'))) { if(strcmpi(&xx[i][j],word) == 0) { n++; /*为了避免重复统计,每统计一个单词 就将这个单词清除*/ memset(&xx[i][j],0,strlen(word)); } } } } return n; } void CountWord(void) { int i,j,k,m,count; char word[20],*p; for(i = 0; i < 10; i++) { nn[i] = 0; yy[i][0] = '\0'; } /*将所有非字母的字符全部清零*/ for(i = 0; i < maxline; i++) { p = strchr(xx[i],'\0'); if(p) memset(p,0,(80-(p-xx[i]))*sizeof(char)); for(j = 0; j < (p-xx[i]); j++) if(xx[i][j] < 'A' || (xx[i][j] >'Z' && xx[i][j] < 'a') || xx[i][j] > 'z') xx[i][j] = '\0'; } for(i = 0; i < maxline; i++) { for(j = 0; j < 80; j++) { if((j == 0) || ((xx[i][j] != '\0') && (xx[i][j - 1] == '\0'))) { strcpy(word,&xx[i][j]); count = Count(word); if(count == 0) continue; /*插入排序*/ for(k = 0; k < 10; k++) { if(count > nn[k]) { /*所有出现次数小于当前单词的全部下移 排在第十位的将被丢弃*/ for(m = 9; m > k; m--) { if(nn[m - 1]) { nn[m] = nn[m - 1]; strcpy(yy[m],yy[m - 1]); } } nn[k] = count; strcpy(yy[k],word); break; } } } } } } void main() { if(ReadDat()){ printf("数据文件IN.DAT不能打开!\n\007"); return; } CountWord(); WriteDat(); } int ReadDat(void) { FILE* fp; int i = 0; char*p; if((fp = fopen("IN.DAT","r")) == NULL) return 1; while(fgets(xx[i],80,fp) != NULL){ p = strchr(xx[i],'\n'); if(p) *p = 0; i++; } maxline = i; fclose(fp); return 0; } void WriteDat(void) { FILE* fp; int i; fp = fopen("OUT.DAT","w");

您可能关注的文档

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档