1、国家二级 C语言机试(操作题)模拟试卷 223及答案与解析 一、程序填空题 1 下列给定程序中,函数 fun的功能是:把形参 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中,再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中,依此类推。 例如,若 a所指数组中的数据最初排列为: 1、 4、 2、 3、 9、 6、 5、 8、 7,按规则移动后,数据排列为: 9、 1、 8、 2、 7、 3、 6、 4、 5。形参 n中存放 a所指数组中数据的个数。 请在程序的下画线处填入正 确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源
2、程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #include stdio h 2 #define N 9 3 *found* 4 void fun (int 【 1】 , int n) 5 int i , j , max , min , px , pn, t; 6 *found* 7 for(i=0 ; i n-1; i+=【 2】 ) 8 max=min=ai; 9 px=pn=i; 10 *found* 11 for(j=【 3】 ; j n ; j+) 12 if(max aj 13 max=aj; px=j; 14 if(minaj) 15 min=aj;
3、 pn=j; 16 17 if(px!=i) 18 t=ai; ai=max; 19 apx=t ; 20 if(pn=i)pn=px; 21 22 if(pn!=i+1) 23 t=ai+1; ai+1=min; 24 apn=t; 25 26 27 main() 28 int bN=1, 4, 2, 3, 9, 6, 5, 8, 7, i; 29 printf( nThe original data: n); 30 for(i=0; i N ; i+) 31 printf( 4 d, bi); 32 printf( n); 33 fun(b, N); 34 printf( nThe dat
4、a after movincj: n); 35 for(i=0; i N; i+) 36 printf( 4 d, bi); 37 printf( n); 38 二、程序修改题 2 下列给定程序中,函数 fun的功能是:传入一个整数 m,计算如下公式的值。例如,若输入 5,则应输出 -0 283333。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不要改动main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: 1 #includestdlib h 2 #include conio h 3 #include stdio h 4 double
5、fun(int m)5 6 double t=1 0 ;7 int i; 8 for(i=2; i 三、程序设计题 3 编写函数 int fun(int lim, int aaMAX),其功能是求出小于或等于 lim的所有素数并放在 aa数组中,并返回所求出的素数的个数。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: 1 #include conio h 2 #include stdio h 3 #include stdlib h 4 #define NAX 100 5 int fun(
6、int lim, int aaMAX) 6 7 8 9 void main() 10 11 FILE * wf; 12 int limit, i, sum; 13 int aaMA; 14 system(CLS); 15 printf(输入一个整数: ); 16 scanf( d, limit); 17 sum=fun(limit, aa); 18 for(i=0; i=i) 8 aak+=i; *将求出的素数放入数组 aa中 * 9 10 return k; *返回所求出的素数的个数 * 11 【试题解析】 本程序如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。使用 for循环语句查找小于 lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法: for(j=2; jsqrt(i); j+) if(i j=0)break;
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1