1、国家二级 C语言机试(操作题)模拟试卷 380及答案与解析 一、程序填空题 1 函数 fun的功能是:逆置数组元素中的值。例如:若 a所指数组中的数据依次为: 1、 2、 3、 4、 5、 6、 7、 8、 9,则逆置后依次为: 9、 8、 7、 6、 5、 4、 3、 2、1。形参 n给出数组中数据的个数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 void fun(int a, int n) 3 int i, t; 4 *
2、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; i 9; i+) 18 printf( 4 d, bi); 19 printf( n); 20 fun(b, 9); 21 printf( nThe data after invert: n); 22 for(2=0;
3、 i 9; i+) 23 printf( 4d, bi); 24 printf( n); 25 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n) 的值。例如,当 n为 5时,函数值应为:10 407143。 f(x)函数定义如下: 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !1 #include stdio h 2 #include math h 3 *found* 4 f(double x)5 6 if(x=0 0 x=2 0
4、)7 return 0 0; 8 else if(x 0 0)9 return(x-1) (x-2); 10 else11 return(x+1) (x-2); 12 13 double fun(int n)14 int i; double s=0 0, y; 15 for (i= -n; i =n; i+)16 y=f(1 0*i); s+=y; )17 *found* 18 return s19 20 main()21 22 printf( f n, fun(5); 23 三、程序设计题 3 函数 fun的功能是:将 a、 b中的两个两位正整数合并形成一个新的整数放在 c中。合并的方式是:
5、将 a中的十位和个位数依次放在变量 c的千位和十位上, b中的十位和个位数依次放在变量 c的个位和百位上。 例如,当 a=45, b=12。调用该函数后, c=4251。 注意:部分源程序存在文件 PROG1 C中。数据文件 IN DAT中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 void fun(int a, int b, long *c) 3 4 5 void NONO() 6 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 7 FILE *rf, *wf
6、; 8 int i, a, b; long c ; 9 rf=fopen(in dat, r); 10 wf=fopen(out dat, w); 11 for(i=0; i 10; i+) 12 fscanf(rf, d, d, a, 21 printf(Input a, b: ); 22 scanf( d d, a, b); 23 fun(a, b, c); 24 printf(The result is: 1d n, c); 25 NONO(); 国家二级 C语言机试(操作题)模拟试卷 380答案与解析 一、程序填空题 1 【正确答案】 (1)n 2 (2)i (3)an-i-1 【试题
7、解析】 函数 fun的功能是将数组中的元素倒置。 第一空:由审题分析可知,总共交换 n 2次,故循环 的终止条件为 i等于 n2,故第一空处应为 “n 2”。 第二空: a0和 an-1交换, a1和 an-2交换 ,因此 ai和 an-i-1交换,故第二空处应为 “i”。 第三空: “t=ai; ai=an-1-i; ”所以第三空处是把 t值赋值 an-1-i,故第三空处应为 “an-1-i”。 二、程序修改题 2 【正确答案】 (1)double f(double x) (2)return s; 【试题解析】 (1)第一个标识下 f函数的定义缺少返回值类型,所 以将 “f(double x
8、)”改为 “double f(double x)”。 (2)第二个标识下返回语句没有分号结束。所以,第二个标识下 “return s”应该改为 “return s; ”。 三、程序设计题 3 【正确答案】 *c=(a 10) *1000+(b 10)*100+(a 10)*10+(b 10); 【试题解析】 (1)分解两位数的正整数 n的个位和十位数,可用 n 10和 n 10实现。 (2)设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使 x0、 x1、 x2、 x3构成个、十、百、千带权数,而x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1