1、三级信息管理技术机试-258 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.函数 ReadDat()的功能是实现从文件 IN73.DAT 中读取一篇英文文章并存入到字符串数组 xx 中。请编制函数 SortCharA(),该函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组 xx 中。最后调用函数 WriteDat()把结果 xx 输出到文件 OUT73.DAT 中。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。请勿改动主函数 main()、读
2、函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#include stdio.h#include string.h#include stdlib.hchar xx5080;int maxline=0;int ReadDat(void);void WriteDat(void);void SortCharA()void main()system(“CLS“);if(ReadDat();printf(“数据文件 IN73.DAT 不能打开! /n/007“);return;SortCharA();WriteDat();int ReadDat(void);FILE * fp;i
3、nt i=0;char * p;if(fp=fopen(“IN73.DAT“,“r“)=NULL)return1;while(fgets(xx1,80,fp)!=NULL)p=strchr(xxi,/n);if(p) * p=0;i + +;maxline=i;fclose(fp);return 0;void WriteDat()FILE * fp;int isystem(“CLS“);fp=fopen(“IN73.DAT“,“w“);for(i=0,imaxline;i + +)printf(“% s/n“,xxi);fprintf(fp,“% s/n“,xxi);fclose(fp);(分
4、数:100.00)_三级信息管理技术机试-258 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.函数 ReadDat()的功能是实现从文件 IN73.DAT 中读取一篇英文文章并存入到字符串数组 xx 中。请编制函数 SortCharA(),该函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组 xx 中。最后调用函数 WriteDat()把结果 xx 输出到文件 OUT73.DAT 中。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。请勿改动主函数
5、 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#include stdio.h#include string.h#include stdlib.hchar xx5080;int maxline=0;int ReadDat(void);void WriteDat(void);void SortCharA()void main()system(“CLS“);if(ReadDat();printf(“数据文件 IN73.DAT 不能打开! /n/007“);return;SortCharA();WriteDat();int ReadDat(void);FI
6、LE * fp;int i=0;char * p;if(fp=fopen(“IN73.DAT“,“r“)=NULL)return1;while(fgets(xx1,80,fp)!=NULL)p=strchr(xxi,/n);if(p) * p=0;i + +;maxline=i;fclose(fp);return 0;void WriteDat()FILE * fp;int isystem(“CLS“);fp=fopen(“IN73.DAT“,“w“);for(i=0,imaxline;i + +)printf(“% s/n“,xxi);fprintf(fp,“% s/n“,xxi);fclo
7、se(fp);(分数:100.00)_正确答案:(void SortCharA()int i,j,k; /*定义循环控制变量*/int str; /*存储字符串的长度*/char temp; /*数据交换时的暂存变量*/for(i=0;imaxline;i + +) /*以行为单位获取字符*/str=strlen(xxi); /*求得当前行的字符串长度*/for(j=0;jstr-1;j + +) /*对字符按从小到大的顺序进行排序*/for(k=j+1;kstr;k + +)if(xxijxxik)temp=xxij;xxij=xxik;xxik=temp;)解析:解析 本题主要考查数组的访问及排序问题。通过双重循环结构逐行获取字符进行处理,首先使用字符串处理函数 strlen()来求出每一行的字符串长度。然后运用选择法逐行对字符按照从小到大的顺序进行排序。