1、国家二级 C语言机试(操作题)模拟试卷 349及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi和 atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #include stdlib h 3 void fun(char *s, int a, doub
2、le f) 4 5 *found* 6 _1_ fp; 7 char str100, str1100, str2100; 8 int a1; double f1; 9 fp=fopen(filel txt, w); 10 fprintf(fp, s d f n, s, a, f); 11 *found* 12 _2_; 13 fp=fopen(file1 txt, r); 14 *found* 15 fscanf(_3_, s s s, str, str1, str2); 16 fclose(fp); 17 a1=atoi(str1); 18 f1=atof(str2); 19 printf(
3、 nThe result: n n s d f n, str, a1, f1); 20 21 main() 22 char a10=Hello!; int b=12345; 23 double c=98 76; 24 fun(a, b, c); 25 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:求整数 x的 y次方的低 3位值。例如,整数 5的 6次方为 15625,此值的低 3位值为 625。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 l
4、ong fun(int x, int y, long *p) 3 int i; 4 long t=1; 5 *found* 6 for(i=1 ; i y; i+) 7 t=t* x; 8 *p=t; 9 *found* 10 t=t 1000; 11 return t; 12 13 main() 14 long t, r; int x, y; 15 printf( nTnput x and y: ); scanf( 1d 1d, int s; ) STU; 6 void fun(STU a, STU *s) 7 8 9 main() 10 STU aN=A01, 81, A02”, 89,
5、A03, 66, A04, 87,A05, 77, A06, 90, A07, 79, A08, 61, A09, 80, A10,71, m; 11 int i; void NONO(); 12 printf(* The original data * n); 13 for(i=0; i N; i+)printf(No= s Mark= d n, ai num, ai s); 14 fun(a, 18 19 void NONO() 20 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 21 FILE *rf, *wf; 22 STU aN, m; 23 int i; 24
6、 rf=fopen(in dat, r); 25 wf=fopen(out dat, w); 26 for(i=0; i 10; i+)fscanf(rf, s d, ai mum, ai s); 27 fun(a, m); 28 fprintf(wf, The lowest: s, d n, m num, m s); 29 fclose(rf); 30 fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 349答案 与解析 一、程序填空题 1 【正确答案】 (1)FILE* (2)fclose(fp) (3)fp 【试题解析】 第一空: “fp=fopen(filel txt,
7、w); ”可知 fp是文件型指针,故第一空处 fp的定义应为 “FILE*”。 第二空:第二处的后面一句是 “fp=fopen(filel txt“, r); ”再次打开filel txt,因此在第二次打开 filel txt之前必须将文件关闭,故第二处是关闭文件,即 “fclose(fp)”。 第三空: fscanf的调用形式是: fscanf(fp,格式字符串,输入列表 ),因此第三空处应为 “fp”,从文件中读出字符串、整数、浮点数。 二、程序修改题 2 【正确答案】 (1)for(i=1; i =y; i+) (2)t=t 1000; 【试题解析】 函数的功能是求整数 x的 y次方的低
8、 3位值。 (1)第一个标识下的“for (i=1; i y; i+)”说明进行了 y-1次方,而不是 y次方,所以将 “for(i=1;iy;i+)”改为 “for(i=1; i =y; i+)”。 (2)题目中要求截取前面求得结果的低三 位,因此,第二个标识下 “t=t 1000; ”应该改为 “t=t 1000; ”。 三、程序设计题 3 【正确答案】 1 int i, min=a0 s, j=0; 2 for(i=1; i N; i+) 3 if(min ai s) *如果最低分 min仍大于当前分 * 4 j=i; *记住位置 + 5 min=ai s; *把当前分赋值给 min* 6 7 *s=aj; 【试题解析】 (1)首先指定第一个成绩为最低分数。 (2)再使用一个 for循环把所有的成绩进行比较,找出最低的分数来。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1