1、国家二级 C语言机试(操作题)模拟试卷 565及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是: 将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include Stdio h void fun(char*s, int a, double f) *found* 【 1】 fp; char ch; fp=fopen(“filel txt“, “w“); fprintf(
2、fp, “ s d f n“, s, a, f); fclose(fp); fp=fopen(“filel txt“, “r“); printf(“ nThe result: n n“); ch=fgetc(fp); *found* while(!feof(【 2】 ) *found* putchar(【 3】 ); ch=fgetc(fp); ) putchar( n); fclose(fp); main() char a10=“Hel20!“; int b=12345; double c=98 76; fun(a, b, c); 二、程序修改题 2 下列给定程序中,函数 fun的功能是:依
3、次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。 请改正程序中的错误,使它能 得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include stdio h #include conio h void fun(char*s) int i, j; for(i=0, j=0; si!= 0; i+) if(si =0&si =9) *found* Sj=si; *found* sj=“ 0“; void main() char item80; system(“CLS“); printf (“
4、nEnter a string: “), gets(item); printf, “n nThe string is: s n“, item); fun(item); printf (“ n nThe string of changing is: s n“, item); 三、程序设计题 3 请编写函数 fun,其功能是:将 M行 N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,若二维数组中的数据为 W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSHWSH。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,
5、仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #define M 3 #define N 4 void fun(char(*s)N, char*b) void main() char ai00, wMN: f W, W, W, W, S, S, S, S, H, H, H, H; int i, j; printf(“The matrix: n“); for(i=0; i M; i+) for(j=0; j N; j+) printf(“ 3c“, wij); printf(“ n“); fun(W, a); printf(“The A stri
6、ng: n“); puts(a); printf(“ n n“); 国家二级 C语言机试(操作题)模拟试卷 565答案与解析 一、程序填空题 1 【正确答案】 (1)FILE* (2)fp (3)eh 【试题解析】 填空 1:由语句 fopen(“filel txt“, “r“)可知, fp应该是文件类型指针,因此本 空应该填写 FILE*。 填空 2: feof函数只能对文件类型数据进行操作,因此本空应填写 fp。 填空 3: putchar()代表输入一个字符,从 ch=fgetc(fp)可以看出本题应该填写 ch。 二、程序修改题 2 【正确答案】 (1)sj+=si; (2)sj= 0
7、; 【试题解析】 题目要求依次取出字符串中所有的数字字符,因此将元素 si存入sj后要使 j加 1,为下次存储做准备。 sj=“ 0“;是一个语法错误。 三、程序设计题 3 【正确答案】 void fun(char(*s)N, cha r*b) int i, j, k=0; for(i=0; i N; i+) * 按列的顺序依次放到一个字符串中 * for(j=0; j M; j+) bk+=sji; bk=0; 【试题解析】 看到程序后,很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。 注意:第 1个循环条件为 i N(即列 );第 2个循环条件为 j M(即行 ),因为在循环的嵌套中越在内层,循环变化就越快。