1、国家三级(网络技术)机试模拟试卷 32及答案与解析 一、程序设计题 1 函数 ReadDat()的功能是实现从文件 IN32 DAT中读取一篇英文文章存入到字符串数组 xx中。请编数 StrOR(),该函数的功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移至该串的右边 存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,最后把已处理的字符串仍按行重新存入字符串数组 xx中。最后调用函数 WriteDat()把结果输出到文件 OUT32.DAT中。 例如 , 原文 : You can create an index on any field you have th
2、e correct record 结果 : n any field Yu can create an index rd yu have the crrect rec 原始数据文件存放的格式是 :每行的宽度均小于 80个字符 ,含标点符号和空格 . 注意 :部分源程式序已给出 请勿改动主函 main(),读函数 ReadDat( )和写函数 WriteDat( )的内容。 试题程序: #include stdio. h # include string, h # include conio, h char xx50 80; int maxline=0; int ReadDat (void); v
3、oid WriteDat (void); void StrOR (void) void main () clrscr ( ); if (ReadDat () printf (“数据文件 IN32.DAT 不能打开 !n007“); return; StrOR (); WriteDat (); int ReadDat (void) FILE *fp; iht i=0; char *p; if (fp=fopen(“IN32.DAT“,“r“)=NULL) return 1; while (fgets (xx i, 80, fp) !=NULL) p=strchr (xx i, In ); if
4、(p) *p=0; i+; maxline=i; fclose (fp); return 0; void WriteDat (void) FILE *fp; int i; clrscr (); fp=fopen ( “OUT32. DAT“, “w“ ); for (i=0;i printf (“%sn“, xx i ); fprintf (fp, “%sn“, xxi ); fclose (fp); 国家三级(网络技术)机试模拟试卷 32答案与解析 一、程序设计题 1 【正确答案】 void StrOR(void) int I, j, k, index, strl; char ch; for
5、 (I=O; I maxline; I+) Strl=strlen (xx I ); /*求各行的长度 */ index=strl; for (j=O; j strl; j+) /*将一行中所以小写字母 o右边的字符依次 向左移一位 ,并删除字母 .*/ if (xxI j=o) for (k=j; k xxI k=xxI k+l; xxI strl-1= ; index=j; /*记录下最后一个 o所在的位置 * / for (j=strl-1; j =index; j-) /*最后一个 o右侧 的所有字符都移到已处理字 符串的左边 */ ch=xxI strl-1; for (k=strl-1; kO; k-) xxI k=xxI k-l; xxI O=ch; 【试 题解析】 本题考查的知识点如下: (1)循环结构与选择结构的嵌套使用。 (2)字符数组中的元素的移动。 (3)字符串处理函数的使用。 在本题中,以行作为字符串处理的基本单位。首先,要确定该行字符串的长度。然后使用循环结构依次对字符进行处理。先找到字符 o,将 o右侧的字符依次向左移。这个操作同时能够删除字符 o。记录下最后一个。所在的位置,在这个。右侧的所有字符都要移到已处理字符串的左边,这个过程也是使用循环来完成的。最后,对文章中的每一行都进行这一操作即可。