1、国家二级 C语言机试(操作题)模拟试卷 320及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。 例如,输入一个整数 27638496,函数返回值为 64862。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh unsigned long fun(unsigned long n) un
2、signed long x=0;int t; while(n) t=n10; *found* if(t2= 【1】 ) *found* x= 【2】 +t; *found* n= 【3】 ; return x; main() unsigned long n=1; while(n99999999n0) printf(“Please input(0n100000000):“);scanf(“ld“,n); printf(“nThe result is:ldn“,fun(n); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:将主函数中两个变
3、量的值进行交换。例如,若变量 a中的值为8,b 中的值为 3,则程序运行后,a 中的值为 3,b 中的值为 8。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #includeStdioh2 *found*3 void fun(int x,int y)4 int t;5 *found*6 t=x;x=y;y=t;7 8 void main()9 int a,b;10 a=8;11 b=3;12 fun(a,b);13 printf(“ddn“,a,b);14 (分数:2.00)_三、
4、程序设计题(总题数:1,分数:2.00)3.请编函数 fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用 strlen函数求字符串的长度。例如:在键盘输入字符串 2345210,函数返回长整型数 2345210。注意:部分源程序存在PROG1C 中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。试题程序:#includestdioh#includestringhvoid NONO();long fun(char*s)main() char s10;long r; printf(“请输入一个长度不超过 9个字符的数字字符串:“
5、); gets(s);r=fun(s); printf(“r=ldn“,r); NONO();void NONO()(*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。* FILE* fp,*wf; int i;long r; Char s10,*p; fp=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i10;i+) fgets(s,10,fP);P=strchr(s,n); if(p)*p=0; r=fun(s); fprintf(wf,“ldn“,r); fclose(fp); fclose(wf);(分数:2.00)
6、_国家二级 C语言机试(操作题)模拟试卷 320答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.下列给定程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。 例如,输入一个整数 27638496,函数返回值为 64862。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh unsigned long fun(unsigned long n) un
7、signed long x=0;int t; while(n) t=n10; *found* if(t2= 【1】 ) *found* x= 【2】 +t; *found* n= 【3】 ; return x; main() unsigned long n=1; while(n99999999n0) printf(“Please input(0n100000000):“);scanf(“ld“,n); printf(“nThe result is:ldn“,fun(n); (分数:2.00)_正确答案:(正确答案:(1)0 (2)10*x (3)n10)解析:解析:填空 1:定义变量 t用来存
8、放某数的各个位数值,此处判断 t是否为偶数,即对 2求余结果是否为 0。 填空 2:将 t作为 x的个位数,原来 x的各个位上升 1位,即 x=10*x+t。 填空 3:每循环一次,通过除法运算,去掉数值最后一位。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:将主函数中两个变量的值进行交换。例如,若变量 a中的值为8,b 中的值为 3,则程序运行后,a 中的值为 3,b 中的值为 8。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #inclu
9、deStdioh2 *found*3 void fun(int x,int y)4 int t;5 *found*6 t=x;x=y;y=t;7 8 void main()9 int a,b;10 a=8;11 b=3;12 fun(a,b);13 printf(“ddn“,a,b);14 (分数:2.00)_正确答案:(正确答案:(1)void fun(int*x,int*y) (2)t=*x; *x=*y; *y=t;)解析:解析:(1)本题考查指针变量作函数参数。一般变量作参数时,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中 fun函数的调用方式表明 fun函数的参
10、数应当为指针类型。 (2)此处是一个变量交换操作错误,可知 x、y 是指针类型,变量类型不同,因而 x、y 不能与 t进行值的交换。三、程序设计题(总题数:1,分数:2.00)3.请编函数 fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用 strlen函数求字符串的长度。例如:在键盘输入字符串 2345210,函数返回长整型数 2345210。注意:部分源程序存在PROG1C 中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。试题程序:#includestdioh#includestringhvoid NONO();lon
11、g fun(char*s)main() char s10;long r; printf(“请输入一个长度不超过 9个字符的数字字符串:“); gets(s);r=fun(s); printf(“r=ldn“,r); NONO();void NONO()(*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。* FILE* fp,*wf; int i;long r; Char s10,*p; fp=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i10;i+) fgets(s,10,fP);P=strchr(s,n); if(p)*p=0; r=fun(s); fprintf(wf,“ldn“,r); fclose(fp); fclose(wf);(分数:2.00)_正确答案:(正确答案:long fun(char*s) int i,len ; long sum=0; len=strlen(s); for(i=0;ilen;i+) sum=sum*10+*s0; s+; return sum; )解析:解析:要把一个数字字符转为相应的数字,只要用它的,ASCII 码减去 48即可。要把数字字符串转为相应的数字,则要从左到右依次取出字符转为相应数字,乘 10再加上下一位数字。