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