![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
全國等級考試二級C語言2009上機模擬3 |
一、填空題 函數(shù)fun的功能是:從三個形參x、y、z中找出中間的那個數(shù),作為函數(shù)值返回。 例如,當(dāng)x=121,y=456,z=333時,中間的數(shù)為333。 請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在fun函數(shù)的橫線上填寫所需的若干表達式或語句。 注意:部分源程序給出如下。 # 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); } 二、改錯題 下列給定程序中,函數(shù)fun和quest的功能是:用二分法求方程2x3-4x2+3x-6=0的一個根,并要求絕對誤差不超過0.001。例如,若給m輸入-50,給n輸入30,則函數(shù)求得的一個根值為2.000。 請修改程序中的錯誤,得出正確的結(jié)果。 注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu)。 # 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); } 三、編程題 請編寫函數(shù)void fun(int y,int b[],int*m),它的功能是:求出能整除y且是奇數(shù)的各整數(shù),并按從小到大的順序放在b所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參m返回。 例如,若y中的值為90,則有4個數(shù)符合要求,它們是1、3、5、9、15、45。 請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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); } |