1、国家二级 C语言机试(操作题)模拟试卷 473及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:计算如下公式直到 10一 3,并且把计算结果作为函数值返回。 例如,若形参 e的值为 1e一 3,则函数返回值为 0 551690。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序:#include stdio h double fun(double e) int i, k; double s, t, x; s=0 ; k=1;i=2; /*found*/ x=【 1】 /4
2、; /*found*/ while(x【 2】 e) s=s+k*x; k=k*(一 1); t=2*i; /*found*/ X=【 3】/(t*t); i+; return s; main()double e=1e一 3; printf(“nThe result is: fn“,fun(e); 二、程序修改题 2 下列给定程序中 ,函数 fun的功能是:求出如下分数序列的前 n项之和,和值通过函数值返回。 例如,若 n=5,则应输出 8 391667。 请改正程序中的错误,使其得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #inclu
3、de stcllib 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 main() int n=5; system(“CLS“); printf(“nThe value of function is: 1 fn“, fun(n); 三、程序设计题 3 请编写函数 fun,其功能是:找出 2M整型二
4、维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序给出如下 。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #define M 4 #include stdio h int fun(int aM) void main() int arr2M=5, 8, 3, 45, 7 6,一 4, 12, 82; printf(“max= dn“, fun (arr); 国家二级 C语言机试(操作题)模拟试卷 473答案与解析 一、程序填空题 1 【正确答案 】 (1)3 0或 ( double)3 (2) (3)(t+1) 【试
5、题解析】 本题考查:基本算术运算的类型转换。其转换规则如下:如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边运算数的类型达到一致后,再进行运算。其类型转换规律见下表。while循环语句,一般考查如何根据题意确定循环条件,以及如何通过循环变量的变化实现循环操作。填空 1:变量 x定义为 double类型,而运 算符 “/”后面是整型数,因此给 x赋值时,需要注意数据类型,此处不能将 3 0写成 3。填空 2: while循环语句的循环条件。根据题意确定循环变量应大于 le 一 3,因此此处应填 “
6、”。填空 3:表达式的通项是( 2 *1+1) /( 2*i) 2,由于程序中已定义 t=2*i,所以此处应该填写 (t+1)。本题填空 1还可以运用强制类型转换来实现。强制类型转换是通过类型转换运算来实现的,其一般形式为 “(类型说明符)(表达式) ”。其功能是:把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float)a 把 a转换为实型 (int)(x+y) 把 x+y的结果转换为整型 二、程序修改题 2 【正确答案】 (1)double fun( int n) (2)s=s+(double) a/b; 【试题解析】 本题考查:函数定义,函数定义的一般形式为 “类型标识符
7、函数名(形式参数表列) ”,其中类型标识符用来说明函数值的类型,函数的类型实际上是函数返回值的类型。 (1)由语句 “return(s); ”和变量 s定义为 double型可知,该函数定义时其类型标识符为 double类型。 (2)注意数据类型 double的书写格式。 确定 函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为 void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为 int型。 三、程序设计题 3 【正确答案】 int fun (int aM) int i,j,max =a0l0; /*对二维数组进行遍历 */
8、 for( i=0; i 2; i+) for(j=0; j M; j+) if (max aij) /*将最大值保存在 max中 */ max=aij; return max; 【试题解析】 本题考查:求数组的最大值,需运用循环语句。 因为数组是二维数值,所以应使用二层加 for循环嵌套。使用 for循环语句时需注意循环变量的取值范围。 此类求最大值或最小值的问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量 max用来存放数组的第一个元素的值,然后利用 for循环逐个找出数组中的元素,并与 max比较,如果元素值大于 max,则将该值赋予 max,循环结束后 max的值即为数组最大值,最后将该值返回。 该类题目考查 较多,需要掌握逐个比较的方法。 对于 m*n=维数组,如果采用逐个查找方法,代码实现如下: for(i=0; i m; i+) for(j=0; j n; j+)
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1