1、三级网络技术机试-65 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.函数 ReadDat()的功能是实现从文件 IN73.DAT 中读取一篇英文文章存入到字符串数组 xx 中。请编制函数 CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母 a,则改成字母 z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组 XX 中,最后调用函数 WriteDat()把结果 XX 输出到文件 OUT73.DAT中。例如:原文 Adb Bcdz
2、aabck LLHj结果 Aca Bbcyz, Zabj LLgi原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#includestdio.h#includestring.h#includeconio.hchar xx5080; int maxline=0; int ReadDat (void);void WriteDat (void);void CovertCharD()void main()clrscr();if(ReadDat()p
3、rintf(“数据文件 IN7.DAT 不能打开/n/007“);return;CovertCharD();WriteDat();int ReadDat()FILE *fp;int i=0;char *p;if (fp=fopen(“IN73.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:clrscr(); fp=fopen(“OUT7
4、3.DAT“, “N“);for(i=0; imaxline; i+)printf(“%s/n“, xxi);fprintf(fp,”%s/n“, xxi);fclose (fp);(分数:100.00)_三级网络技术机试-65 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.函数 ReadDat()的功能是实现从文件 IN73.DAT 中读取一篇英文文章存入到字符串数组 xx 中。请编制函数 CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母 a,则改成字母 z。大写字母仍为大写
5、字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组 XX 中,最后调用函数 WriteDat()把结果 XX 输出到文件 OUT73.DAT中。例如:原文 Adb Bcdzaabck LLHj结果 Aca Bbcyz, Zabj LLgi原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序:#includestdio.h#includestring.h#includeconio.hchar xx5080; int
6、maxline=0; int ReadDat (void);void WriteDat (void);void CovertCharD()void main()clrscr();if(ReadDat()printf(“数据文件 IN7.DAT 不能打开/n/007“);return;CovertCharD();WriteDat();int ReadDat()FILE *fp;int i=0;char *p;if (fp=fopen(“IN73.DAT“, “r“)=NULL) return 1; while(fgets (xxi, 80, fp)!=NULL)p=strchr(xxi, /n)
7、;if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat (void)FILE;fp;int i:clrscr(); fp=fopen(“OUT73.DAT“, “N“);for(i=0; imaxline; i+)printf(“%s/n“, xxi);fprintf(fp,”%s/n“, xxi);fclose (fp);(分数:100.00)_正确答案:(void CovertCharD() iht i;char *pf;for (i=0; imaxline; i+) pf=xx i; /*指针 pf 指向各行的首地址*/whil
8、e (*pf)if(*pf=a) /*如果是字母 a,则改成字母 z*/ *pf=z;pf+; /*指向下一个字符*/else if(*pf=bpf+; /*指向下一个字符*/else pf+; /*如果不满足条件,则不变字符,指向下一个字符*/)解析:解析 本题考查的知识点如下:(1)字符串的计算。(2)循环结构的使用。(3)使用指针实现对数组的访问。本题中,将字符存放在二维数组中,以行为字符处理的基本单位,可以定义一个指针,指向每一行字符。初始时,指针指向每一行的第一个元素,增加指针地址就可以实现对一行数据的完全访问。要将所有小写字母改成它的前一个字母,小写字母的 ASC码是连续的,可直接将其 ASC码减 1,则得要求的字符。注意;字母 a 要单独处理,其他字符保持不变。