[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc

上传人:postpastor181 文档编号:498310 上传时间:2018-11-28 格式:DOC 页数:6 大小:32.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷368及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 368及答案与解析 一、程序填空题 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、夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 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(min aj) 15 min=aj; pn=j; 16

3、17 if(px!=i) 18 t=ai; ai=max;apx=t; 19 if(pn=i)pn=px; 20 21 if(pn!=i+1) 22 t=a2+1; ai+1=min; apn=t; 23 24 25 main() 26 int bN=1, 4, 2, 3, 9, 6, 5, 8, 7, i; 27 printf( nThe original data: n); 28 for(2=0; i N; i+)printf( 4d, bi); 29 printf( n); 30 fun(b, N); 31 printf( nThe data after moving: n); 32 f

4、or(2=0; i N; i+)printf( 4d, bi); 33 printf( n); 34 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:从 n(形参 )个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参 aver所指的存储单元中。 例如,若输入 8名学生的成绩: 80 5 60 72 90 5 98 51 5 88 64 则低于平均分 的学生人数为: 4(平均分为: 75 5625)。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdi

5、o h 2 #define N 20 3 int fun(float *s, int n, float* aver) 4 float ave, t=0 0; 5 int count=0, k, i; 6 for(k=0; k n ; k+) 7 *found* 8 t=sk; 9 ave= t n; 10 for(i=0; i n; i+) 11 if (si ave) count+ ; 12 *found* 13 *aver=Ave ; 14 return count ; 15 16 main() 17 float s30, aver; 18 int m, i; 19 printf ( nP

6、lease enter m: ); scanf( d, m); 20 printf( nPlease enter d mark: n, m); 21 for(i=0; i m; i+)scanf( f, s+i); 22 printf( nThe number of students: d n, fun(s, m, 15 16 Void NONO() 17 *本函数用于打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * 18 int m, n, zz1000, i; 19 FILE *rf, *wf; 20 rf=fopen(in dat, r); 21 wf=fopen(ou

7、t dat, w); 22 for(i=0; i 10; i+) 23 fscanf(rf, d d, m, m+)fprintf(wf, d, zzm); 26 fprintf(wf, n); 27 28 fclose(rf); 29 fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 368答案与解析 一、程序填空题 1 【正确答案】 (1)*a (2)2 (3)i+1 【试题解析】 第一空:主函数内 fun函数的调用 “fun(b, N); ”,其中 b为整型数组名,故 fun函数的第一参数为整型指针,又根据 “max=aj”可知第一个参数名为 a,故第一空处为 “*a”。

8、第二空:根据题意 a所指数组中的最大值放在 a0中,接着求出 a所指数组中的最小值放在 a1中 ;再把 a所指数组元素中的次大值放在 a2中,把 a数组元素中的次小值放在 a3中,升序排序和降序排序的下标变化是每次在前一次的基础上+2,即 a0、 a2、 a4 降序排序, a1、 a3、 a5 升序排序,故第二空应为“2”。 第三空:选择排序法中的升序排序,首先从数组中挑选一个最小的元素,把它和第一元素交换,接着从剩下的 n-1个元素中再挑出一个最小的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。故内层循环变量 i应该从 i+1开始,因此第三空处应为 “i+1”。 二、

9、程序修改题 2 【正确答案】 (1)t+: sk; (2)*aver=ave; 【试题解析】 程序功能是统计出低于平均分的学生人数。 (1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的 “t=sk; ”应改为 “t+=sk; ”。 (2)根据题目可知,比较的结果中低于平均分的分数 ave放入指针 aver所指的地址单元中,而变量 Ave没有定义,因此第二标识下应将 “*aver=Ave; ”改为“*aver=ave; ”。 三、程序设计 题 3 【正确答案】 1 int r=0, temp, p, sign=1; 2 for(temp=m+1; t

10、emp m*m; temp+) 3 从 temp开始循环,判断紧靠 temp的整数 4 (for(p=2; p temp; p+) 5 if(temp p!=0)判断 temp是否为素数 6 sign=1;若是素数,标志设为 1 7 else 8 sign=0;若不是素数,标志设为 0 9 break; 10 11 if(sign=1 &p =temp) 12 if(k =0) 判断已有的素数个数是否已经满足 sum个 13 xxr+=temp;将素数 temp存入数组 select 14 k-;将题目中要求的素数个数减 1 15 16 else 17 break; 18 【试题解析】 进入 fun函数,根据前面的分析:首先,定义、初始化变量 sign,作为素数的标志;定义 r,初始化为存储素数数组的起始位。然后,每判断一次temp中的值是否为素数后,使 temp的值增 1,再次对 temp中新的值进行判断其是否为素数,不断循环此过程,直到 m的值等于指定的个数,即函数中的 k个数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1