1、国家二级 C语言机试(操作题)模拟试卷 407及答案与解析 一、程序填空题 1 给定程序的功能是:从键盘输入若干行文本 (每行不超过 80个字符 ),写到文件myfile4 txt中,用 -1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数 ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include string h 3 #include st
2、dlib h 4 void WriteText(FILE *); 5 void ReadText(FTLE *); 6 main() 7 FILE *fp; 8 if(fp=fopen(myfile4 txt, w)=NULL) 9 printf(open fail! n); exit(0); 10 WriteText(fp); 11 fclose(fp); 12 if(fp=fopen(myfile4 txt, r)=NULL) 13 printf(open fail! n); exit(0); 14 ReadText(fp); 15 fclose(fp); 16 17 *found* 18
3、 void WriteText(FTLE _1_ ) 19 char str81; 20 printf( nEnter string with-1 to end: n); 21 gets(sir); 22 while(strcmp(str, -1)!=0) 23 *found* 24 fputs(_2_, fw); fputs( n, fw); 25 gets(str); 26 27 28 void ReadText(FILE *fr) 29 char str81; 30 printf( nRead file and output to screen: n); 31 fgets(str, 81
4、, fr); 32 while(!feof(fr) 33 *found* 34 printf( s, _3_); 35 fgets(str, 81, fr); 36 37 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:将 tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。 例如,若输入 Ab, cD,则输出 AB, CD。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include string h 3 char* fun(char tt) 4
5、5 int i; 6 for(i=0; tti; i+) 7 *found* 8 if(a =tti) (tti =z) 9 *found* 10 tti+=32; 11 return(tt); 12 13 main() 14 15 char tt8 1; 16 printf( nPlease enter a string: ); 17 gets(tt); 18 printf( nThe result string is: n s, fun(tt); 19 三、程序设计题 3 学生的记录由学号和成绩组成, N名学生的数据已 在主函数中放入结构体数组 s中,请编写函数 fun,它的功能是:按分数
6、的高低排列学生的记录,高分在前。 注意:部分源程序在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 #define N 16 3 typedef struct 4 char num10; 5 int s; 6 STREC; 7 void fun(STREC a) 8 9 10 main() 11 STREC sN=GA005, 85, GA003, 76, GA002, 69,GA004, 85, GA001”, 91, GA007, 72, GA008, 64, GA00
7、6,87, GA015, 85, GA013, 91, GA012, 64, GA014, 91,GA011, 66, GA017, 64, GA018, 64, GA016, 72; 12 int i; FILE *out; 13 fun(s); 14 print; f(The data after sorted: n); 15 for(i=0; i N; i+) 16 if(i) 4=0)printf( n); 17 printf( s 4d, si num, si s); 18 19 printf( n); 20 out=fopen(out dat, w); 21 for(i=0; i
8、N; i+) 22 if(i) 4=0 i) fprintf(out, n); 23 fprintf(out, 4d, si s); 24 fprintf(out, n); 25 fclose(out); 国家二级 C语言机试(操作题)模拟试卷 407答案与解析 一、程序填空题 1 【正确答案】 (1)*fw (2)str (3)str 【试题解析】 第一空:此处是补充函数参数名,参数类型 已知是 FILE文件指针, “fputs( n, fw)”是将字符 “ n”写入文件,可知 fw是文件指针名,因此第一空处应该是 “void Write Text(FILE *fw)” 。 第二空: “wh
9、ile(strcmp(str,”-1”)!=0)”循环的结束标志是 str字符串等于 “-1”时循环退出,如果 str不等于 “-1”,执行循环体内容:用 fputs函数将 str字符串写入文件。 fputs函数的调用形式是: “fputs(s, fp)”,其中 s是指向字符串的指针或字符串数组名, fp是指向将要被写入的文件 的文件指针,因此第二处应该是“fputs(str,fw)”。 第三空: “while(!feof(fr)”循环的作用是不断读取文件直到到达文件尾,每次最多读 81个,将读到的数据放在 str字符串里,并用 printf输出到屏幕,因此第三处应该是 “printf( s, str)”。 二、程序修改题 2 【正确答案】 (1)if(a =tti) i N; i+) 4 for(j=i+1; j N; j+) 5 if(ai s aj s) 6 tmp=ai; 7 ai=aj; 8 aj=tmp; 【试题解析】 (1)在 fun函数中,通过循环对成绩记录进行排序。 (2)首次查找到最大的记录,第二次循环查找第二大的记录,依次实现对成绩记录的排序。