【计算机类职业资格】三级信息管理技术机试-265及答案解析.doc

上传人:progressking105 文档编号:1320736 上传时间:2019-10-17 格式:DOC 页数:4 大小:28.50KB
下载 相关 举报
【计算机类职业资格】三级信息管理技术机试-265及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】三级信息管理技术机试-265及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】三级信息管理技术机试-265及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】三级信息管理技术机试-265及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、三级信息管理技术机试-265 及答案解析(总分:100.00,做题时间:90 分钟)1.函数 ReadDat()的功能是实现从文件 IN67.DAT 中读取一篇英文文章并存入到字符串数组 xx 中。请编制函数 StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx 中,最后调用函数 WriteDat()把结果xx 输出到文件 OUT67.DAT 中。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。请勿改动主函数 main()、读函数 Rea

2、dDat()和写函数 WriteDat()的内容。试题程序#include stdio.h#include string.h#include stdlib.h#include memory.h#include ctype.hchar xx5080;int maxline = 0;/* 文章的总行数 * /int ReadDat(void);void WriteDat(void);void StrOL(void)void main()system(“CLS“);if (ReadDat ()printf(“数据文件 IN67.DAT 不能打开! /n/007“);return;StrOL();Wr

3、iteDat();int ReadDat(void)FILE * fp;int i = 0;char * p;if(fp = fopen(“IN67.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;system(“CLS“);fp = fopen(“OUT67.DAT“, “w“);for(i = 0

4、; i maxline; i + +)printf(“% s /n“, xxi);fprintf(fp, “% s /n“, xxifclose(fp) ;(分数:100.00)_三级信息管理技术机试-265 答案解析(总分:100.00,做题时间:90 分钟)1.函数 ReadDat()的功能是实现从文件 IN67.DAT 中读取一篇英文文章并存入到字符串数组 xx 中。请编制函数 StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx 中,最后调用函数 WriteDat()把结果xx 输

5、出到文件 OUT67.DAT 中。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序#include stdio.h#include string.h#include stdlib.h#include memory.h#include ctype.hchar xx5080;int maxline = 0;/* 文章的总行数 * /int ReadDat(void);void WriteDat(void);void StrOL(void)void

6、 main()system(“CLS“);if (ReadDat ()printf(“数据文件 IN67.DAT 不能打开! /n/007“);return;StrOL();WriteDat();int ReadDat(void)FILE * fp;int i = 0;char * p;if(fp = fopen(“IN67.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

7、0;void WriteDat(void)FILE * fp;int i;system(“CLS“);fp = fopen(“OUT67.DAT“, “w“);for(i = 0; i maxline; i + +)printf(“% s /n“, xxi);fprintf(fp, “% s /n“, xxifclose(fp) ;(分数:100.00)_正确答案:(void StrOL(void)int i,j,k; /*定义数组下标变量*/char t80,t180; /*定义数组暂存取得的单词*/for(i=0;imaxline;i + + /*逐行获取字符串数据*/j=k=strlen

8、(xxi)-i; /*将每行末尾字符的下标保存在 j 和 k 中*/t0 =t10 =/0; /*初始化两个字符数组*/while(1) /*无条件循环,循环体内有结束循环的语句*/while(isalpha(xxij = =Owhile(isalpha(xxij) /*当退出这个循环时,xxij+1和 xxik分别是同一个单词的第一个和最后一个字母*/memcpy(t1, /*将该单词保存到字符数组 t1 中*/t1k-j =/0; /*为 t1 中的单词添加字符串结束标志*/strcat(t,t1); /*将单词保存到数组 t 中*/strcat(t,“ “); /*单词之间用空格分隔*/if(j0) /*如果以 j 为下标的字符不在数组 xx 中*/break; /*则退出外层 while 循环*/strcpy(xxi,t); /*按行将处理完的字符串重新保存到数组 xx 中*/)解析:本题的主要算法是先让两字符指针都指向每一行字符的串尾,然后使其中一指针(p1)往前移动,当出现 p1 指向的不是字母时,则表示在 p1+1 与 p2 之间是一个单词,将该单词存人字符数组 t1 中,最后将t1 连接到新串 t 中;接着再往前找第二个单词,依次类推直到 p1 越过字符串的起始位置。再将处理完的字符串重新存储到数组 xx 中,然后进入下一行的处理过程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1