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

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

1、三级信息管理技术机试-224 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.函数 ReadDat()实现从文件 indat 中读取一篇英文文章并将其存入到字符串数组 xx 中。请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组 XX 中,最后调用函数 WriteDat()把结果 xx输出到文件 out.dat 中。例如:原文:You He MeI am s student结果:Me He Youstudent a am I原是数

2、据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序给出如下:请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。试题源程序#includestdio h#includestringh#includeconioh#includectype hchar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void StrOL(void)void main()system(“cls“);if(ReadDat()printf(“数

3、据文件 INDAT 不能打开!/n/007“);return;StrOL();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*P;if(fp=fopen(“IN DAT“,“r“)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)P=strchr(xxi,/n);if(p)*P=0;i+:maxline=i;fclose(fp);return 0;void WriteDat(void)FILE*fp;int i;system(“cls“);fp=fopen(“OUTDAT“,“w“);for(i=0;ima

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

5、出到文件 out.dat 中。例如:原文:You He MeI am s student结果:Me He Youstudent a am I原是数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序给出如下:请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。试题源程序#includestdio h#includestringh#includeconioh#includectype hchar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void Writ

6、eDat(void);void StrOL(void)void main()system(“cls“);if(ReadDat()printf(“数据文件 INDAT 不能打开!/n/007“);return;StrOL();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*P;if(fp=fopen(“IN DAT“,“r“)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)P=strchr(xxi,/n);if(p)*P=0;i+:maxline=i;fclose(fp);return 0;void Wri

7、teDat(void)FILE*fp;int i;system(“cls“);fp=fopen(“OUTDAT“,“w“);for(i=0;imaxline;i+)printf(“%s/n“,xxi);fprintf(fp,“%s/n“,xxi);fclose(fp);(分数:100.00)_正确答案:(void StrOL(void)int i,j;thai:t80=0); /*定义一个 t 作为临时存储单元并初始化为0)*/for(i=o;imaxline;i 十+)/*遍历数组的每一行*/j=strlen(xxi)-1; /*让变量 j 指向字符串 xxi的最后一个字符*/whne(j=

8、0) /*使用 while 循环使 j 从字符串 xxi的最后一个字符遍历到第一个字符*/ while(j=0!isalpha(xxij)xxij=0; /*将连续的非字母字符设为 o*/j-;if(j0)break:else if(t0!=0) /*判断 t 是否为空,为空则说明 t 中没有存储单词,不必插入空格分隔符。反之则应该为下一个单词插入一个空格作为分隔符*/strcat(t,“); while(j=0&isalpha(xxij)j-; /*这个 while 循环用于找到下一个单词的开头*/strcat(t,&xxij+1);/*用 strcat 函数将找到的单词连接到 t 的末尾*

9、/strcpy(xxi,t); /*while 循环结束,整行的单词已经倒排入临时数组 t 中,根据题目要求此时应使用strcpy 函数将 t 复制回数组 xx 的当前行*/t0=0; /*临时存储数组要清空*/)解析:解析 本题主要考查的是字符串排序问题。首先用 for 循环对每一行遍历,对于某一行 xxi来说设置一个变量 j,使用 while 循环从最后一个字符开始遍历该行,在这个循环里再次使用第二个 while循环来判断是不是碰到连续的非字母,碰到则把该位置置为 0,继续往前扫描,若连续碰到字母字符则不作改动,直到碰到非字母字符,这样就找到了一个单词,将此单词存入临时数组变量 t 中,这样一行扫描完就把所有单词倒序存入了 t 中,最后把 t 中的内容复制给 xxi,临时数组 t 清空即可。在对某行倒序扫描的过程中要有以下判断:如果遇到连续的非字母在某行的最前面则跳出该行的扫描直接把 t 中的内容复制回 xxi,如果存入 t 的单词不是第一个单词则要先在 t 中插入一个空格字符。

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

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

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