所属年份:2010.9;2011.3;2012.3;
【程序填空题】
下列给定程序中,函数fun的功能是:计算如下公式
直到 ,并且把计算结果作为函数值返回。
例如,若形参e的值为1e-3,则函数返回值为0.551690。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********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: %f\n",fun(e)); } |
【参考答案】
(1)3.0或(double)3 (2)> (3) (t+1)
【解题思路】
填空1:变量x定义为double类型,而运算符"/"后面是整型数,所以给x赋值时,需要注意数据类型,此处不能将3.0写成3。
填空2:while循环语句的循环条件,根据题意确定循环变量应大于1e-3,因此此处应填">"。
填空3:表达式的通项是(2*i+1)/(2*i)2 ,由于程序中已定义t=2*i,所以此处应该填写(t+1)。
【程序修改题】
下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。
例如,若n=5,则应输出8.391667。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h> /************found************/ void fun ( int n ) { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } |
【参考答案】
(1)double fun(int n)
(2)s=s+(double)a/b;
【考点分析】
本题考查:函数定义,函数定义的一般形式为:"类型标识符 函数名(形式参数表列)",其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。
【解题思路】
(1)由语句"return(s)"和变量s定义为double数据类型可知,该函数定义时其类型标识符为double类型。
(2)注意数据类型double的书写格式。
【解题宝典】
确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为int型。
【程序设计题】
请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> #define M 4 int fun (int a[][M]) { } main( ) { int arr[2][M]= {5,8,3,45,76,-4,12,82} ; printf("max =%d\n", fun(arr)) ; } |
【参考答案】
1 2 3 4 5 6 7 8 9 10 | int fun (int a[][M]) { int i, j; int max = a[0][0]; for (i=0; i<2; i++) for (j=0; j<M; j++) if (a[i][j]>max) max = a[i][j]; return max; } |
【考点分析】
本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数值,所以应使用二层加for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。
【解题思路】
此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋于max,循环结后max的值即为数组最大值,最后将该值返回。
【解题宝典】
该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:
for(i=0;i