【计算机类职业资格】初级程序员下午试题-75及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-75及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-75及答案解析.doc(7页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-75 及答案解析(总分:90.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数值的个数,以及小于等于被比较数的数值的个数,如果两数都大于 n/2,则已经找到了中值,否则继续之前的步骤。 注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述; 问题 将流程图的(1)(5)处补充完整。(分数:15.00)填空项 1:_二、B试题二/B(总题数:1,分数:15.0
2、0)2.阅读以下函数说明和 C语言函数,将应填入U (n) /U处的字句写在对应栏内。 说明 1 L为一个带头结点的循环链表。函数 LinkList deletenode(LinkList L,int c)的功能是删除 L中数据域 data的值大于 C的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。C函数 1 LinkList deletenode(LinkList L,int c) LinkList Lc,P,pre; pre=L; p=U (1) /U;Lc=(LinkList)malloc(sizeof(Listnode); Lc-next=Lc; w
3、hile(P!=L) if(p-dataC) U (2) /U; U (3) /U; Lc-next=p; p=pre-next; else pre=p; p=pre-next; return Lc; 说明 2 递归函数 dec_to_k_2(int n,int k)的功能是将十进制正整数 n转换成进制数,并打印。 C函数 2 dec to k 2(int n,int k) if(n!=O) dec to k 2(U (4) /U,k); printf(“%d“, U(5) /U); (分数:15.00)填空项 1:_三、B试题三/B(总题数:1,分数:15.00)3.阅读以下函数说明和 C语
4、言函数,将应填入U (n) /U处的字句写在对应栏内。 说明 函数int psort(int a,int n)实现将含 n个整数的数组 a的不同元素按从小到大顺序存于数组 a中。实现方法是从未确定的元素列中找到最小元素并将 a的第 i最小元素交换至 ai位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。 C 函数 int psort(int a,int n) int i,J,k,P; for(i=0,k=0;iU (1) /U;i+) for(j=i+1, U(2) /U;jn; j+) if(apaj) p=j; if(p!=i) t=ap;
5、 ap=ai; ai=t; if(U (3) /U) k+; else if(U (4) /Uai) U (5) /U=ai; return k; int a=5,7,5,6,4,3,4,6,7; main() int k,n; for(k=0;k(Sizeof a)/Sizeof(int);k+) printf(“%5d“,ak); printf (“/n/n“); n=psort(a,(sizeof(a)/sizeof(int); for(k=0;kn;k+) printf(“%5d“,ak); printf(“/n/n“); (分数:15.00)填空项 1:_四、B试题四/B(总题数:1
6、,分数:15.00)4.阅读以下函数说明和 C语言函数,将应填入U (n) /U处的字句写在对应栏内。 说明 这是一个求解 Josephus问题的函数。用整数序列 1,2,3,n 表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus 问题描述,设 n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第 m个人,让他出局;然后从出局的下一个人重新开始报数,数到第 m个人,再让他出局,如此反复直到所有的人全部出局为止。 C函数 void Josephus(int A,int n,s,m) (int i,j,k,temp; if(m=O) printf(“m=0
7、是无效的参数!/n“); return; for(i=0;in;i+) Ai=i+1; / *初始化,执行 n次 */ i=U (1) /U /*报名起始位置 */ for(k=n;k1;k-) if(U (2) /U) i=0; i=U (3) /U /*寻找出局位置 */ if(i!=k-1) tmp=Ai; for(j=i;Jk-1;j+)U (4) /U; U(5) /U; for(k=0;kn/2;k+) tmp=Ak;Ak=An-k+1;An-k+1=tmp; (分数:15.00)填空项 1:_五、B试题五/B(总题数:1,分数:15.00)5.阅读以下说明和 C+程序,将应填入U
8、 (n) /U处的字句写在对应栏内。 说明 下面程序实现十进制向其它进制的转换。 C+程序 #include“ioStream.h“ #include“math.h“ #include typedef struct node int data; node*next; Node; Class Transform DUDlic: void Trans(int d,int i); /d为数字;i 为进制 void print(); private: Node*top; ; void Transform:Trans(int d,int i) int m,n=0; Node*P; while(d0) U
9、 (1) /U; d=d/i; p=new Node; if(!n) p-data=m; U (2) /U; U (3) /U; n+; else p-data=m; U (4) /U; U (5) /U; void Transform:print() Node*P; while(top!=NULL) p=top; if(p-data9) coutdata+55; else coutdata; top=p-next; delete p; (分数:15.00)填空项 1:_六、B试题六/B(总题数:1,分数:15.00)6.阅读以下说明和 Java程序,将应填入U (n) /U处的字句写在对应栏
10、内。 说明 下面程序实现十进制向其它进制的转换。 Java 程序 ClasS Node int data; Node next; class Transform private Node top; public void print() Node p; while(top!=null) P=top; if(P.data9) System.out.print(char)(P.data+55); else System.out.print(p.data); top=p.next; public void Trans(int d,int i)/d为数字;i 为进制 int m; U (1) /Un=
11、false; Node p; while(d0) U (2) /U; d=d/i; p=new Node(); if(U (3) /U) p.data=m; U (4) /U; top=P; n=true; else p.data=m; U (5) /U; top=P; (分数:15.00)填空项 1:_初级程序员下午试题-75 答案解析(总分:90.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 下面的流程图,用来完成计算一组数组中的中值,其方法是:将数组中的一个值与其他值比较,并计算大于等于被比较数的数
12、值的个数,以及小于等于被比较数的数值的个数,如果两数都大于 n/2,则已经找到了中值,否则继续之前的步骤。 注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述; 问题 将流程图的(1)(5)处补充完整。(分数:15.00)填空项 1:_ (正确答案:j=-1; (2) xj!=xi; (3) count_lower+;)解析:(4) count_lower(n/2.0)|count higher(n/2.0); (5) xj; 解析 本题目考查流程图。 算法描述在题目中已经详细给出,通过阅读题目可知 j用来定位数组中一个被比较的数,i 用来循环遍历数组中所有的数。j 应
13、该从第 0个数开始,又由于要执行一步 j=j+1,所以(1)中应填入“j=-1”,counUligher+说明遍历的数比被比较的数大,即(2)中应填入“xj!=xi”相应的,(3)中就应填入“count_lower+”,题目说明中已经指出,当 count_lower和 count_higher都大于 n/2时,就说明找到了中值,所以(4)应当填入“count_lower(n/2.0)count_higher(n/2.0)”,最后,如果循环结束,则xi就应该是中值,(5)中应填入“xj”。二、B试题二/B(总题数:1,分数:15.00)2.阅读以下函数说明和 C语言函数,将应填入U (n) /U
14、处的字句写在对应栏内。 说明 1 L为一个带头结点的循环链表。函数 LinkList deletenode(LinkList L,int c)的功能是删除 L中数据域 data的值大于 C的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。C函数 1 LinkList deletenode(LinkList L,int c) LinkList Lc,P,pre; pre=L; p=U (1) /U;Lc=(LinkList)malloc(sizeof(Listnode); Lc-next=Lc; while(P!=L) if(p-dataC) U (2) /U;
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 75 答案 解析 DOC
