【计算机类职业资格】初级程序员下午试题-67及答案解析.doc

上传人:arrownail386 文档编号:1330126 上传时间:2019-10-17 格式:DOC 页数:11 大小:49.50KB
下载 相关 举报
【计算机类职业资格】初级程序员下午试题-67及答案解析.doc_第1页
第1页 / 共11页
【计算机类职业资格】初级程序员下午试题-67及答案解析.doc_第2页
第2页 / 共11页
【计算机类职业资格】初级程序员下午试题-67及答案解析.doc_第3页
第3页 / 共11页
【计算机类职业资格】初级程序员下午试题-67及答案解析.doc_第4页
第4页 / 共11页
【计算机类职业资格】初级程序员下午试题-67及答案解析.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、初级程序员下午试题-67 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.说明下面的流程图,用来完成求字符串 t在 s中最右边出现的位置。其思路是:做一个循环,以 s的每一位作为字符串的开头和 t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到 t的最后一个字符也相同,则说明在 s中找到了一个字符串 t;如果还没比较到 t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在 s中找到一个字符串 t时,不应停止寻找(因为要求的是求 t在 s中最右边出现位置),应先记录这个位置 pos,然后开始新一轮的寻找

2、,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果 s为空或不包含 t,则返回-1。注:返回值用 pos表示。问题将流程图的(1)(5)处补充完整。(分数:15.00)填空项 1:_二、试题二(总题数:1,分数:15.00)2.阅读以下函数说明和 C语言函数,回答问题。说明 1函数 void convelt(chal *a,int n)是用递归方法将一个正整数 n按逆序存放到一个字符数组 a中,例如,n=123,在 a中的存放为3、2、1。C函数 1void convert(char *a,int n)int i;if(i=n/10)!=0; convert(

3、 (1) ,i);*a= (2) ;说明 2函数 int index(char *s,char *t)检查字符串 s中是否包含字符串 t,若包含,则返回 t在 s中的开始位置(下标值),否则返回-1。C函数 2int index(char *s,char *t)int i,j=0;k=0;for(i=0;si!:/0;i+)( for( (3) ;(tk!=/0)if( (5) ) return(i);return(-1);(分数:15.00)填空项 1:_三、试题三(总题数:1,分数:15.00)3.阅读以下函数说明和 C语言函数,回答问题。说明函数 Node *difference(A,B

4、)用于求两个集合之差 C=A-B,即当且仅当 e是 A中的一个元素,但不是 B中的元素时,e 是 C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行 C=A-B之后,表示集合 A和 B的链表不变,若结果集合 C非空,则表示其链表根据元素之值按递增排列。函数 append()用于在链表中添加节点。C函数typedef struct nodeint element;struct node *link;Node;Node *A,*B,*C;Node *append(last,e)Node *last;int e;last-link=(Node

5、*)malloc(sizeof(Node);last-link-element=e;return(last-link);Node *difference(A,B)Node *A,*B;Node *c,*last;C=last=(Node *)malloc(sizeof(Node);while( (1) )if(A-elementB-element)last=append(last,A-element);A=A-link:else if( (2) )A:A-link;B:B-link;elSe(3) ;while( (4) )last=append(last,A-element);A=A-lin

6、k:(5) ;last=c;c=c-link;free(last);return(c);(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.阅读以下函数说明和 C语言函数,回答问题。说明为参加网球比赛的选手安排比赛日程。设有 n(n=2k)位选手参加网球循环赛,循环赛共进行 n-1天,每位选手要与其他 n-1位选手赛一场,且每位选手每天赛一场,不轮空。试按此要求为比赛安排日程。设 n位选手被顺序编号为 1,2,n。比赛的日程表是一个 n行 n-1列的表,i 行 j列的内容是第 i号选手第 j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2 m-1位)的比赛曰

7、程,导出全体(2 m位)选手的比赛日程。从只有 2位选手的比赛日程出发,反复这个过程,直到为 n位选手安排好比赛日程为止。C函数#includestdio.h#define MAXN 64int aMAxN+1MAXN;void main()int twoml,twom,il,j,m,k;printf(“指定 n(n=2的 k次幂)位选手,清输入 k。/n“);scanf(“%d“,a11=2; /*预设 2位选手的比赛日程*/a21=1;m=1;twoml=1;while(mk)(1) ;twoml+=twoml; /*为 2m位选手安排比赛日程*/(2) ;/*填日程表的左下角*/for(

8、il=twoml+l;il=twom;i1+)for(j=1;j=twoml-1; j+)ai1J=ai1-twomlj+twoml;(3) ;for(i1=2;i1=twom;i1+)ai1twoml=ai1-1twom1+l;for(j=twoml+1;jtwom;j+)for(i1=1;i1twoml;i1+) ai1j=ai1+1j-1;(4) ;/*填日程表的右下角*/for(j=twoml;jtwom;j+)for(ii=i;i1=twoml;i1+)(5) ;for(i1=1;i1=twom;i1+)for(j=1;Jtwom;j+)printf(“%4d“,ai1J);prin

9、tf(“/n“);printf(“/n“);(分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)5.阅读以下说明和 C+代码,回答问题。说明已知类 SubClass的 getSum方法返回其父类成员 i与类 SubClass成员 i的和,类 SuperClass中的getSum为纯虚拟函数,程序中的第 23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第 15行且尚未执行第 15行的语句时成员变量 j的值,最后给出程序运行后的输出结果。C+代码01 #inclUdeiostream02 using namespace std;03 c

10、lass SuperClass 04 private:05 int i;06 publiC:07 SuperClass()(i=5;)08 virtual iht getValueO(return i ;)09 virtual int getSum()=0;10 ;11 class SubClass:public SuperClass12 int J ;13 public:14 SubClass(int j):j(0)15 (1) =j; /用参数 j的值更新数据成员16 ;17 int getValue()return j;)18 int getSum()19 return (2) getV

11、alue()+j;20 21 ;22 void main(void)23 SuperClass s=new SubClass(-3);24 couts-getValue()“;25 touts-getSum()endl;26 delete s;27 (分数:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.阅读以下说明和 Java代码,回答问题。说明已知类 SubClass的 getSum方法返回其父类成员 i与类 SubClass成员 j的和;类 SuperClass中的getSum为抽象函数,程序中的第 14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中

12、的空缺,当程序运行到第 22行且尚未执行第 22行语句时成员变量 i的值,最后给出程序运行后的输出结果。Java代码行号 代码01 public class UainJava02 public static void main(Stringargs)03 SuperClass s=new SubClass();04 Systemoutprintin(s.getValue();05 System.out.printIn(s.getSum():06 07 08 abstract class SuperClass 09 private int i;10 public SuperClass()i=5;

13、11 public int getValue()12 return i:13 14 public final abstract int getSum():15 16 class SubClass extends SuperClass17 int j;18 public SubClass()19 this(-3);20 21 public SubClass(int j)22 (1) .j=j;23 24 publiC int getValue()(return j;25 public int getSum()26 return (2) getValue()+j;27 28(分数:15.00)填空

14、项 1:_初级程序员下午试题-67 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.说明下面的流程图,用来完成求字符串 t在 s中最右边出现的位置。其思路是:做一个循环,以 s的每一位作为字符串的开头和 t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到 t的最后一个字符也相同,则说明在 s中找到了一个字符串 t;如果还没比较到 t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在 s中找到一个字符串 t时,不应停止寻找(因为要求的是求 t在 s中最右边出现位置),应先记录这个位置 pos,然后开始新一

15、轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果 s为空或不包含 t,则返回-1。注:返回值用 pos表示。问题将流程图的(1)(5)处补充完整。(分数:15.00)填空项 1:_ (正确答案:(1) pos=-1 (2) si!=/0 (3) sj=tk (4) k0 (5) pos=i;)解析:二、试题二(总题数:1,分数:15.00)2.阅读以下函数说明和 C语言函数,回答问题。说明 1函数 void convelt(chal *a,int n)是用递归方法将一个正整数 n按逆序存放到一个字符数组 a中,例如,n=123,在 a中的存放为3、2

16、、1。C函数 1void convert(char *a,int n)int i;if(i=n/10)!=0; convert( (1) ,i);*a= (2) ;说明 2函数 int index(char *s,char *t)检查字符串 s中是否包含字符串 t,若包含,则返回 t在 s中的开始位置(下标值),否则返回-1。C函数 2int index(char *s,char *t)int i,j=0;k=0;for(i=0;si!:/0;i+)( for( (3) ;(tk!=/0)if( (5) ) return(i);return(-1);(分数:15.00)填空项 1:_ (正确答

17、案:(1) A+1 (2) n%10+/0 (3) j=i,k=0 (4) tk=sj (5) tk=/0或!tk)解析:解析 函数 1采用递归方法将一个正整数 n按逆序存放到一个字符数组 a中,递归调用为convert(a+1,i),所以(1)“a+1”。按逆序输出字符保存在数组 a中为*a=n%10+/0,即(2)填“n%10+/0”。函数 2检查字符串 s中是否含有字符串 t是在 for循环中实现的。空(3)应填“j=i,k=0”。如果两个字符串中含有相同的字符,则字符串 s和字符串 t都指向下一个字符,循环继续,直到字符串 t结束。所以空(4)应填“tk=sj”,空(5)应填“tk=/

18、0”或“!tk”。三、试题三(总题数:1,分数:15.00)3.阅读以下函数说明和 C语言函数,回答问题。说明函数 Node *difference(A,B)用于求两个集合之差 C=A-B,即当且仅当 e是 A中的一个元素,但不是 B中的元素时,e 是 C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行 C=A-B之后,表示集合 A和 B的链表不变,若结果集合 C非空,则表示其链表根据元素之值按递增排列。函数 append()用于在链表中添加节点。C函数typedef struct nodeint element;struct node

19、*link;Node;Node *A,*B,*C;Node *append(last,e)Node *last;int e;last-link=(Node *)malloc(sizeof(Node);last-link-element=e;return(last-link);Node *difference(A,B)Node *A,*B;Node *c,*last;C=last=(Node *)malloc(sizeof(Node);while( (1) )if(A-elementB-element)last=append(last,A-element);A=A-link:else if( (

20、2) )A:A-link;B:B-link;elSe(3) ;while( (4) )last=append(last,A-element);A=A-link:(5) ;last=c;c=c-link;free(last);return(c);(分数:15.00)填空项 1:_ (正确答案:(1) B-link (2) A-element=B-element (3) B=B-link(4) Alink!=NULL (5) last-link=NULL)解析:解析 本题用链表表示集合,通过比较链表的元素值判断集合的元素之间的关系。第一个 while循环的条件是链表 B指针不指向空,即空(1)应填

21、“B-link”。由于 A,B 两集合都是按递增排列的,则如果 A中的元素小于 B中的元素,A 中元素直接放入集合 C中,集合 A指向其下一个元素;如果 A中的元素等于 B中的元素,集合 A,B 分别指向下一个元素,即空(21 填“A-element=B-element”;如果A中的元素大于 B中的元素,集合 B指向其下一个元素,即空(3)填“B=B-link”。第二个循环的条件是链表 A指针不指向空时,将 A中元素直接加入到 C中,即空(4)填“A-link!=NULL”。将链表 C最后节点指针指向空,即空(51 填“last-link=NULL”。四、试题四(总题数:1,分数:15.00)

22、4.阅读以下函数说明和 C语言函数,回答问题。说明为参加网球比赛的选手安排比赛日程。设有 n(n=2k)位选手参加网球循环赛,循环赛共进行 n-1天,每位选手要与其他 n-1位选手赛一场,且每位选手每天赛一场,不轮空。试按此要求为比赛安排日程。设 n位选手被顺序编号为 1,2,n。比赛的日程表是一个 n行 n-1列的表,i 行 j列的内容是第 i号选手第 j天的比赛对手。用分治法设计日程表,就是从其中一半选手(2 m-1位)的比赛曰程,导出全体(2 m位)选手的比赛日程。从只有 2位选手的比赛日程出发,反复这个过程,直到为 n位选手安排好比赛日程为止。C函数#includestdio.h#de

23、fine MAXN 64int aMAxN+1MAXN;void main()int twoml,twom,il,j,m,k;printf(“指定 n(n=2的 k次幂)位选手,清输入 k。/n“);scanf(“%d“,a11=2; /*预设 2位选手的比赛日程*/a21=1;m=1;twoml=1;while(mk)(1) ;twoml+=twoml; /*为 2m位选手安排比赛日程*/(2) ;/*填日程表的左下角*/for(il=twoml+l;il=twom;i1+)for(j=1;j=twoml-1; j+)ai1J=ai1-twomlj+twoml;(3) ;for(i1=2;i

24、1=twom;i1+)ai1twoml=ai1-1twom1+l;for(j=twoml+1;jtwom;j+)for(i1=1;i1twoml;i1+) ai1j=ai1+1j-1;(4) ;/*填日程表的右下角*/for(j=twoml;jtwom;j+)for(ii=i;i1=twoml;i1+)(5) ;for(i1=1;i1=twom;i1+)for(j=1;Jtwom;j+)printf(“%4d“,ai1J);printf(“/n“);printf(“/n“);(分数:15.00)填空项 1:_ (正确答案:(1) m+ (2) twom+=2*twom1 (3) A1twoml

25、=twom1+1(4) Atwom1j=a1j-1 (5) Aai1jj=i1)解析:解析 分别有 2位、4 位、8 位选手参加比赛时的日程表。若 14 号选手之间的比赛日程填在日程表的左上角(4 行 3列),58 号选手之间的比赛日程可填在日程表的左下角(4 行 3列),而左下角的内容可由左上角对应项加上数 4得到。至此剩下的右上角(4 行 4列)是为编号小的 14 号选手与编号大的58 号选手之间的比赛安排日程。程序的思路是:由 2位选手的比赛日程得到 4位选手的比赛日程;依次得到 8位选手的比赛日程。五、试题五(总题数:1,分数:15.00)5.阅读以下说明和 C+代码,回答问题。说明已

26、知类 SubClass的 getSum方法返回其父类成员 i与类 SubClass成员 i的和,类 SuperClass中的getSum为纯虚拟函数,程序中的第 23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第 15行且尚未执行第 15行的语句时成员变量 j的值,最后给出程序运行后的输出结果。C+代码01 #inclUdeiostream02 using namespace std;03 class SuperClass 04 private:05 int i;06 publiC:07 SuperClass()(i=5;)08 virtual iht g

27、etValueO(return i ;)09 virtual int getSum()=0;10 ;11 class SubClass:public SuperClass12 int J ;13 public:14 SubClass(int j):j(0)15 (1) =j; /用参数 j的值更新数据成员16 ;17 int getValue()return j;)18 int getSum()19 return (2) getValue()+j;20 21 ;22 void main(void)23 SuperClass s=new SubClass(-3);24 couts-getValu

28、e()“;25 touts-getSum()endl;26 delete s;27 (分数:15.00)填空项 1:_ (正确答案:(1) this-j (2) *错误更正结果为:SuperClass *s=new SubClass(-3);变量 j的值为 0运行结果为-3,2)解析:解析 本题主要考查了 C+程序语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。(1)处要求用参数 j的值更新数据成员,为避免与同名变量 j冲突,应加 this前缀,所以(1)处应为“this-j”;(2)处要求调用父类方法 getValue(),但为了和子类方法相区别,应加前缀,所以(2)处应为“*”

29、。23 行中,SuperClass s 已经定义了一个对象,后面不能再使用 new再分配一个指针。程序运行到第 15行之前 j的值应为 0,最后程序输出的结果应为-3 和 2。六、试题六(总题数:1,分数:15.00)6.阅读以下说明和 Java代码,回答问题。说明已知类 SubClass的 getSum方法返回其父类成员 i与类 SubClass成员 j的和;类 SuperClass中的getSum为抽象函数,程序中的第 14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第 22行且尚未执行第 22行语句时成员变量 i的值,最后给出程序运行后的输出结果。Ja

30、va代码行号 代码01 public class UainJava02 public static void main(Stringargs)03 SuperClass s=new SubClass();04 Systemoutprintin(s.getValue();05 System.out.printIn(s.getSum():06 07 08 abstract class SuperClass 09 private int i;10 public SuperClass()i=5;11 public int getValue()12 return i:13 14 public final

31、 abstract int getSum():15 16 class SubClass extends SuperClass17 int j;18 public SubClass()19 this(-3);20 21 public SubClass(int j)22 (1) .j=j;23 24 publiC int getValue()(return j;25 public int getSum()26 return (2) getValue()+j;27 28(分数:15.00)填空项 1:_ (正确答案:(1) this (2) super错误更正结果为:public abstract,

32、int getSum();变量 i的值为 5运行结果为:-32)解析:解析 本题主要考察了 Java程序语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。(1)处要求用参数 j的值更新数据成员,为避免与同名变量 j冲突,应加 this前缀,所以(1)处应为this,(2)处要求调用父类方法 getValue(),但为了和子类方法相区别,应加前缀 super,所以(2)处应为super。程序 14行 getSum函数是一个抽象函数,在 SubClass子类中将被继承实现,所以该函数不可以被定义为 final类型,因此应该去掉 final关键字;当程序运行到 22行之前时父类构造函数已执行,所以i值为 5。最后程序输出的结果应为-3 和 2。

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

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

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