1、二级 C语言机试-87 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:30.00)1.请补充 main 函数,该函数的功能是:求 n!例如 7!=5040。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。试题程序:# includestdio. h#includeconio. hmain()int i,n;long f=1;clrscr ();printf(“Input n: “);scanf (“%d“, 【1】 );for( 【2】 ;i=n; i+)【3】 ;pri
2、ntf (“%d!=%1d/n“, n, f);(分数:30.00)填空项 1:_二、改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun()的功能是:从 3个红球,5 个白球,6 个黑球中任意取出 8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是 15。程序中 i的值代表红球数, j 的值代表白球数,k 的值代表黑球数。请改正程序中的错误,使它能得出正确的结果。注童:不要改动 main 函数,不得增行或删行,也不得更改程序的蛄构。试题程序:#include stdio. hint fun ()int i,j,k,
3、 sum=0;printf (“/nThe result : /n/n “);/*found*/for (i=0; i=3; i+)for (j=1;j=5;j+)k=8-i-j;/*found */if (k=1printf (“red: %4d white: %4dblack: %4d/n “, i, j, k);)return sum;main ()int sum;sum=fun ();printf (“sum=%4d/n/n “, sum);(分数:30.00)填空项 1:_三、编程题(总题数:1,分数:40.00)3.请编写函数 fun(),它的功能是计算下列级数和,和值由函数值返回
4、。S=1+x+x2/2!3/3!+/xn/n!例如,当 n=10,x=0.3 时,函数值为 1349859。注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includeconio.h#includestdio.h#includemath.hdouble fun(double x, int n)main ()clrscr ();printf (“%f “,fun(0,3,10);(分数:40.00)_二级 C语言机试-87 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:1,分数:3
5、0.00)1.请补充 main 函数,该函数的功能是:求 n!例如 7!=5040。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。试题程序:# includestdio. h#includeconio. hmain()int i,n;long f=1;clrscr ();printf(“Input n: “);scanf (“%d“, 【1】 );for( 【2】 ;i=n; i+)【3】 ;printf (“%d!=%1d/n“, n, f);(分数:30.00)填空项 1:_ (正确答案:1 print
6、f (“/nThe result : /n/n “);/*found*/for (i=0; i=3; i+)for (j=1;j=5;j+)k=8-i-j;/*found */if (k=1printf (“red: %4d white: %4dblack: %4d/n “, i, j, k);)return sum;main ()int sum;sum=fun ();printf (“sum=%4d/n/n “, sum);(分数:30.00)填空项 1:_ (正确答案:错误:for(i=0;i=3;i+) 正确:for(i=1;3;i+)(2)错误:if(k1printf (“%f “,fun(0,3,10);(分数:40.00)_正确答案:(double fun(double x,int n)int i;double s=1.0s1=1.0;for(i=1;i=n;i+)s1=s1*i; /*各项中的阶乘*/s=s+ pow(x,i)/s1; /*按公式求出*/return s;)解析:解析本程序中用 s1来表示每项的分母(即各项中的阶乘),要注意本程序中 s和 s1的初值都为1。