全国等级考试二级C语言2009上机模拟3 |
一、填空题 函数fun的功能是:从三个形参x、y、z中找出中间的那个数,作为函数值返回。 例如,当x=121,y=456,z=333时,中间的数为333。 请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 # include int fun(int a,int b,int c) { int temp; temp=(a>b) ? (b>c ? b : (a>c ? c : ___1___)) : ((a>c) ? ___2___ : ((b>c) ? c : ___3___)); return temp; } main() { int x=121,y=456,z=333,mid; mid=fun(x,y,z); printf("\nThe middle number is : %d\n",mid); } 二、改错题 下列给定程序中,函数fun和quest的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-50,给n输入30,则函数求得的一个根值为2.000。 请修改程序中的错误,得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 # include # include double quest(double x) { return (2*x*x*x-4*x*x+3*x-6); } double fun(double m,double n) { /********error********/ int r; r=(m+n)/2; /********error********/ while(fabs(n-m)<0.001) { if(quest(r)*quest(n)<0) m=r; else n=r; r=(m+n)/2; } return r; } main() { double m,n,result; printf("Please input m n : \n"); scanf("%lf%lf",&m,&n); result=fun(m,n); printf("result=%6.3f\n",result); } 三、编程题 请编写函数void fun(int y,int b[],int*m),它的功能是:求出能整除y且是奇数的各整数,并按从小到大的顺序放在b所指的数组中,这些除数的个数通过形参m返回。 例如,若y中的值为90,则有4个数符合要求,它们是1、3、5、9、15、45。 请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 # include # include void fun(int y,int b[],int *m) { } main() { int y,a[500],m,j; FILE *out; printf("\nPlease input an integer number:\n"); scanf("%d",&y); fun(y,a,&m); for(j=0;j printf("\n"); fun(730,a,&m); out=fopen("outfile.dat","w"); for(j=0;j fclose(out); } |