国家二级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 /**********found**********/
5 for(2=0 ; i<__1__; i++)
6 {
7 t=a[i];
8 /**********found**********/
9 a[i]=a[n-1- __2__];
10 /**********found**********/
11 __3__=t;
12 }
13 }
14 main()
15 {int b[9]={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’’,b[i]);
19 printf(’’\n’’);
20 fun(b,9);
21 printf(’’\nThe data after invert:\n’’);
22 for(2=0;i<9;i++)
23 printf(’’%4d’’,b[i]);
24 printf(’’\n’’);
25 }
(1)n/2 (2)i (3)a[n-i-1]
解析:函数fun的功能是将数组中的元素倒置。
第一空:由审题分析可知,总共交换n/2次,故循环的终止条件为i等于n/2,故第一空处应为“n/2”。
第二空:a[0]和a[n-1]交换,a[1]和a[n-2]交换…,因此a[i]和a[n-i-1]交换,故第二空处应为“i”。
第三空:“t=a[i];a[i]=a[n-1-i];”所以第三空处是把t值赋值a[n-1-i],故第三空处应为“a[n-1-i]”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:计算
S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,当n为5时,函数值应为:10.407143。
f(x)函数定义如下:
(1)double f(double x) (2)return s;
解析:(1)第一个标识下f函数的定义缺少返回值类型,所以将“f(double x)”改为“double f(double x)”。
(2)第二个标识下返回语句没有分号结束。所以,第二个标识下“return s”应该改为“return s;”。
程序设计题
3.函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将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;
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,&b);
13 fun(a,b,&c);
14 fprintf(wf, ’’a=%d,b=%d,c=%1d\n’’, a, b, c);
15 }
16 fclose(rf);
17 fclose(wf);
18 }
19 main()
2 { int a,b;long c;void NONO();
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=(a/10) *1000+(b%10)*100+(a%10)*10+(b/10);
解析:(1)分解两位数的正整数n的个位和十位数,可用n%10和n/10实现。(2)设x0、x1、x2、x3为一位数,则x0、x1×10、x2×100、x3×1000,可以分别使x0、x1、x2、x3构成个、十、百、千带权数,而x0+x1×10+x2×100+x3×1000构成四位数。本题最多只考虑四位数。
本文档预览:3600字符,共3007字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载