1、国家二级 C语言机试(操作题)模拟试卷 380及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.函数 fun的功能是:逆置数组元素中的值。例如:若 a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参 n给出数组中数据的个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。 不得增行或删行,也不得更改程序的结构!1 #includestdioh2 void fun(int a,int n)3 int i
2、,t;4 *found*5 for(2=0 ; i_1_; i+)6 7 t=ai;8 *found*9 ai=an-1- _2_;10 *found*11 _3_=t;12 13 14 main()15 int b9=1,2,3,4,5,6,7,8,9,i ;16 printf(nThe original data:n);17 for(i=0;i9;i+)18 printf(4 d,bi);19 printf(n);20 fun(b,9);21 printf(nThe data after invert:n);22 for(2=0;i9;i+)23 printf(4d,bi);24 prin
3、tf(n);25 (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。例如,当 n为 5时,函数值应为:10407143。f(x)函数定义如下: (分数:2.00)_三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将 a、b 中的两个两位正整数合并形成一个新的整数放在 c中。合并的方式是:将a中的十位和个位数依次放在变量 c的千位和十位上,b 中的十位和个位数依次放在变量 c的个位和百位上。 例如,当 a=45,b=12。调用该
4、函数后,c=4251。 注意:部分源程序存在文件 PROG1C 中。数据文件 INDAT 中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。1 #includestdioh2 void fun(int a,int b,long *c)3 4 5 void NONO()6 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 *7 FILE *rf,*wf;8 int i,a,b;long c ;9 rf=fopen(indat,r);10 wf=fopen(outdat,w);11 for(i=0;i10;i+)12
5、fscanf(rf,d,d,a,21 printf(Input a,b:);22 scanf(dd,a,b);23 fun(a,b,c);24 printf(The result is:1dn,c);25 NONO();(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 380答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.函数 fun的功能是:逆置数组元素中的值。例如:若 a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参 n给出数组中数据的个数。 请在程序的下划线处填
6、入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。 不得增行或删行,也不得更改程序的结构!1 #includestdioh2 void fun(int a,int n)3 int i,t;4 *found*5 for(2=0 ; i_1_; i+)6 7 t=ai;8 *found*9 ai=an-1- _2_;10 *found*11 _3_=t;12 13 14 main()15 int b9=1,2,3,4,5,6,7,8,9,i ;16 printf(nThe original data:n);17 for(i=0;i9;i+)1
7、8 printf(4 d,bi);19 printf(n);20 fun(b,9);21 printf(nThe data after invert:n);22 for(2=0;i9;i+)23 printf(4d,bi);24 printf(n);25 (分数:2.00)_正确答案:(正确答案:(1)n2 (2)i (3)an-i-1)解析:解析:函数 fun的功能是将数组中的元素倒置。 第一空:由审题分析可知,总共交换 n2 次,故循环的终止条件为 i等于 n2,故第一空处应为“n2”。 第二空:a0和 an-1交换,a1和 an-2交换,因此 ai和 an-i-1交换,故第二空处应为“i
8、”。 第三空:“t=ai;ai=an-1-i;”所以第三空处是把 t值赋值 an-1-i,故第三空处应为“an-1-i”。二、程序修改题(总题数:1,分数:2.00)2.给定程序 MODI1C 中函数 fun的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。例如,当 n为 5时,函数值应为:10407143。f(x)函数定义如下: (分数:2.00)_正确答案:(正确答案:(1)double f(double x) (2)return s;)解析:解析:(1)第一个标识下 f函数的定义缺少返回值类型,所以将“f(double x)”改为“double
9、f(double x)”。 (2)第二个标识下返回语句没有分号结束。所以,第二个标识下“return s”应该改为“return s;”。三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将 a、b 中的两个两位正整数合并形成一个新的整数放在 c中。合并的方式是:将a中的十位和个位数依次放在变量 c的千位和十位上,b 中的十位和个位数依次放在变量 c的个位和百位上。 例如,当 a=45,b=12。调用该函数后,c=4251。 注意:部分源程序存在文件 PROG1C 中。数据文件 INDAT 中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun
10、的花括号中填入你编写的若干语句。1 #includestdioh2 void fun(int a,int b,long *c)3 4 5 void NONO()6 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 *7 FILE *rf,*wf;8 int i,a,b;long c ;9 rf=fopen(indat,r);10 wf=fopen(outdat,w);11 for(i=0;i10;i+)12 fscanf(rf,d,d,a,21 printf(Input a,b:);22 scanf(dd,a,b);23 fun(a,b,c);24 printf(The result is:1dn,c);25 NONO();(分数:2.00)_正确答案:(正确答案:*c=(a10) *1000+(b10)*100+(a10)*10+(b10);)解析:解析:(1)分解两位数的正整数 n的个位和十位数,可用 n10 和 n10 实现。(2)设x0、x1、x2、x3 为一位数,则 x0、x110、x2100、x31000,可以分别使 x0、x1、x2、x3 构成个、十、百、千带权数,而 x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。