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