【计算机类职业资格】三级数据库技术机试-175及答案解析.doc

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

1、三级数据库技术机试-175 及答案解析(总分:100.00,做题时间:90 分钟)1.函数 ReadDat()的功能是实现从文件 IN2.DAT中读取一篇英文文章存入到字符串数组 xx中;请编制函数 StrOL(),该函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 xx中,最后调用函数 WriteDat()把结果 xx输出到文件 OUT2.DAT中。例如,原文:You He Melam a student结果: Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于 80个

2、字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#include stdio.h#include string.h#include conio.h#include ctype.hchar xx50 80;int maxline=0;/* 文章的总行数 */int ReadDat (void);void WriteDat(void);void StrOL(void)main ( )clrscr ( );if (ReadDat ()printf(“数据文件 IN2.DAT不能打开! /n/007

3、“);return;StrOL ( );WriteDat ( );int ReadDat (void)FILE *fp;int i = 0;char *p;if(fp = fopen(“IN2.DAT“, “r“) = NULL) return 1;while(fgets(xxi, 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;clrscr();fp = fopen(“OUT2.DAT“, “w“);for

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

5、 OUT2.DAT中。例如,原文:You He Melam a student结果: Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于 80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#include stdio.h#include string.h#include conio.h#include ctype.hchar xx50 80;int maxline=0;/* 文章的总行数 */int ReadDat (void);void Write

6、Dat(void);void StrOL(void)main ( )clrscr ( );if (ReadDat ()printf(“数据文件 IN2.DAT不能打开! /n/007“);return;StrOL ( );WriteDat ( );int ReadDat (void)FILE *fp;int i = 0;char *p;if(fp = fopen(“IN2.DAT“, “r“) = NULL) return 1;while(fgets(xxi, 80, fp) != NULL)p = strchr(xx i, /n);if(p) *p = 0;i+;maxline = i;fc

7、lose(fp);return 0;void WriteDat(void)FILE*fp;int i;clrscr();fp = fopen(“OUT2.DAT“, “w“);for(i = 0; i maxline; i+)printf(“%s/n“, xxi );fprintf(fp, “%s/n“, xxi );fclose(fp);(分数:100.00)_正确答案:(void StrOL(void)int i, j, k, strl, 1; char c;for (i=0; imaxline; i+) /*把各行中多余的标点符号去掉*/for (j=0; jstrlen(xx ii )

8、; j+)c=xxi j;if(c=Aj=0;j-)/*从当前行的最后一个实际情况符开始取字符,直到遇到穿空格*/ppj+1=ppj;ppO=xxl i;k+;i-;strcat (ch,pp); /*把该单词存放到数组 ch中*/strcpy(pp, “ “); /*清空数组 pp*/k=1;if(i=-1)break; /*如果处理完了一行,则退出循环*/while(xxl i0 | (xxl i9 j=O;j-)ppj+1=ppj;ppO=xxl i;k+;i-;strcat (ch,pp); /*把空格加到数组 ch中*/strcpy (pp, “ “); /*清空数组 pp*/k=0

9、;if(i=-1)break; /*如果处理完了一行,则退出循环*/strcpy(xxl ,ch); /*把已处理的字符串数组 xx中/)解析:解析 本题是有关字符串的处理问题。首先利用二重循环来按照先行后列的顺序取得 xx数组中的各个字符元素,这里用到了 strlen()函数,用来求字符串长度。对依次取得的字符做一些处理,即把多余的标点符号去掉,使新的字符数组中只含有字母和空格。准备工作做完后,从当前行的最后一个字符开始取,不断的取每一个字符前面的字符,直到取得一个完整的单词后(即遇到空格分隔时),就把该单词存放到数组 ch中(用到了 strcat()函数来连接两个字符串,用 strlen()函数来对字符串求取串长度),还要把分隔符也放到 ch中去。接着去取该行中其他的字符组成的单词,重复上面的操作,对其他行同样处理。这样最终得到的字符串就是各行中单词出现的顺序的逆序了,但单词本身的字符顺序没有发生变化。

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

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

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