1、国家二级 C语言机试(操作题)模拟试卷 332及答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。 例如,若形参 s所指的字符串为“abcdef35adgh3kjsdf7”,则输出结果为 4。 请在程序的下画线处填入正确内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh void fun(char*s,int*t) in
2、t i,n; n=0; *found* for(i=0; 【1】 !1=0;i+) *found* if(si=0si= 【2】 )n +; *found* 【3】 ; main() char s80=“abcdef35adgh3kjsdf7“; int t; printf(“nThe original string is:sn“,s); fun(s,&t); printf(“nThe result is:dn“,t); (分数:2.00)_二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。(分数:2.00
3、)_三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 c数的千位和十位上,b 数的十位和个位数依次放在 c数的百位和个位上。例如,当 a=45,b=12 时,调用该函数后 C=4152。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includeconioh#includestdiohvoid fun(int a,int b,long*c)main() int a,b; long c;
4、printf(“Input a,b:“); scanf(“dd“,a,b); fun(a,b,C); printf(“The result is:dn“,c);(分数:2.00)_国家二级 C语言机试(操作题)模拟试卷 332答案解析(总分:6.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:2.00)1.给定程序中,函数 fun的功能是:统计形参 s所指的字符串中数字字符出现的次数,并存放在形参 t所指的变量中,最后在主函数中输出。 例如,若形参 s所指的字符串为“abcdef35adgh3kjsdf7”,则输出结果为 4。 请在程序的下画线处填入正确内容并将下画线删除,使程序
5、得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh void fun(char*s,int*t) int i,n; n=0; *found* for(i=0; 【1】 !1=0;i+) *found* if(si=0si= 【2】 )n +; *found* 【3】 ; main() char s80=“abcdef35adgh3kjsdf7“; int t; printf(“nThe original string is:sn“,s); fun(s,&t); printf(“nThe result is:dn“,t)
6、; (分数:2.00)_正确答案:(正确答案:(1)si (2)9 (3)*t=n)解析:解析:本题考查:for 循环语句;if 语句条件表达式;指针变量。 填空 1:通过 for循环语句来判断是否到字符型结尾,变量 i用来存放字符型数组下标,则应填入 si。 填空 2:题目要求判断数字字符,所以此处应填入9。 填空 3:将数字字符个数存入变量 t中,此处需注意变量 t是指针变量。 if语句的条件表达式一般会考查三方面的内容: (1)条件判断,即与=、与=、=与!=的区别,需要仔细分析题干的意思,确定条件表达式的内容。 (2)逻辑判断,即&(逻辑与)与(逻辑或)的区别,需要根据题干确定 if条
7、件中若干个条件表达式的并存关系。 (3)=(赋值号)与=(等于号)的区别,注意在if条件中不会出现=(赋值号)。二、程序修改题(总题数:1,分数:2.00)2.下列给定程序中,函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。(分数:2.00)_正确答案:(正确答案:(1)double fun(int n) (2)s=s+(double)ab;)解析:解析:本题考查:函数定义,函数定义的一般形式为“类型标识符函数名(形式参数表列)”,其中类型标识符用来说明函数值的类型,函数的类型实际上是函数返回值的类型。 (1)由语句“return(s);”和变量 s定义为 doubl
8、e型可知,该函数定义时其类型标识符为 double类型。 (2)注意数据类型double的书写格式。 确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为 void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为 int型。三、程序设计题(总题数:1,分数:2.00)3.函数 fun的功能是:将两个两位数的正整数 a、b 合并成一个整数放在 c中。合并的方式是:将 a数的十位和个位数依次放在 c数的千位和十位上,b 数的十位和个位数依次放在 c数的百位和个位上。例如,当 a=45,b=12 时,调用该函数后 C=4152。注意:
9、部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includeconioh#includestdiohvoid fun(int a,int b,long*c)main() int a,b; long c; printf(“Input a,b:“); scanf(“dd“,a,b); fun(a,b,C); printf(“The result is:dn“,c);(分数:2.00)_正确答案:(正确答案:void fun(int a,int b,long*c) *b10 获取 b的个位,a10 获取 a的十位,a10 获取 a的个位,b10 获取 b的十位* *c=b10+(a10)*10+(b10)*100+(a10)*1000; )解析:解析:本题中主要的问题是如何取出 a和 b的个位数和十位数,取出后如何表示成 c中相应的位数。由于 a和 b都是只有两位的整数,所以分别对它们除 10可得到它们的十位数,分别用 10对它们求余可得到它们的个位数。得到后对应乘以 1000、100、10、1,就可得到 c的千位数、百位数、十位数和个位数。注意使用 c时要进行指针运算。