【计算机类职业资格】初级程序员下午试题-83及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-83及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-83及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-83 及答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 下面的流程图,用来完成求字符串 t在 s中最右边出现的位置。其思路是:做一个循环,以 s的每一位作为字符串的开头和 t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到 t的最后一个字符也相同,则说明在 s中找到了一个字符串 t;如果还没比较到 t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在 s中找到一个字符串 t时,不应停止寻找(因为要求的是求 t在 s中最右边出现位
2、置),应先记录这个位置 pos,然后开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果 s为空或不包含 t,则返回-1。 注:返回值用 pos表示。 * 问题 将流程图的(1)(5)处补充完整。(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.阅读以下函数说明和 C语言函数,将应填入 (n) 处的字句写在对应栏内。 说明 1 函数 void fun(char*w,char x,int*n)用来在 w数组中插入 x,w 数组中的数已按由小到大顺序存放,n 指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。 C函数 1 v
3、oid fun(char*W,char x,int*n) int i,P; p=0; w*n=x; while(xwp) (1) ; for(i=*n,ip;i-)wi= (2) ; wp=x; +*n; 说明 2 函数 void revstr(char*s)将字符串 s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。 C函数 2 void revstr(char*s) char*p,c; if(s=NULL)return; p= (3) ; /*p指向字符串 s的最后一个有效字符 */ while(sp) / *交换并移动指针 */ C=*s; (4) =*p; (5) =c
4、; (分数:15.00)填空项 1:_三、试题三(总题数:1,分数:15.00)3.阅读以下函数说明和 C语言函数,将应填入 (n) 处的字句写在对应栏内。 说明 已知 r1.n是 n个记录的递增有序表,用折半查找法查找关键字为 k的记录。若查找失败,则输出“failure“,函数返回值为 0;否则输出“success”,函数返回值为该记录的序号值。 C函数 int binary search(struct recordtype r,int n,keytype k) intmid,low=1,hig=n; while(low=hig) mid= (1) ; if(krmid.key) (2)
5、; else if(k=rmid.key) printf(“succesS/n“); (3) ; else (4) ; printf(“failure/n“); (5) ; (分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.阅读以下函数说明和 C语言函数,将应填入 (n) 处的字句写在对应栏内。 说明 本程序实现对指定文件内的单词进行计数。其中使用二叉树结构来保存已经读入的不同单词,并对相同单词出现的次数进行计数。此二叉树的左孩子结点的字符串值小于父结点的字符串值,右孩子结点的字符串值大于父结点的字符串值。函数 getword(char*filename,char
6、 *word)是从指定的文件中得到单词。char*strdup(char*S)是复制 S所指向的字符串,并返回复制字符串的地址。 C程序 #include stdio.h#include ctype.h#include string.h#define MAXWORD 100 struct node char*word; int count; struct node*left; struct node*right; struct node*addtree(struct node*P,char*w) int cond; if(p=NULL) /*向树中插入结点 */ P=(struct node*
7、)malloc(sizeof(struct node); P-word=strdup(w); P-count=1; (1) ; elseif(oond=strcmp(w,p-word)=0) (2) ; else if(cond0)p-left= (3) ; else p-right= (4) ; return p; main() Struct node*root; char wordMAXWORD; root=NULL; filename=“example.dat“; while(getword(filename,word)!=EOF) root= (5) ; (分数:15.00)填空项 1
8、:_五、试题五(总题数:1,分数:15.00)5.阅读以下说明和 C+程序,将应填入 (n) 处的字句写在对应栏内 说明 以下程序的功能是计算三角形、矩形和正方形的面积并输出。 程序由 4个类组成:类 Triangle,Rectangle 和 Square分别表示三角形、矩形和正方形;抽象类 Figure提供了一个纯虚拟函数 getArea(),作为计算上述三种图形面积的通用接口。 C+程序 #includeiostream.h #includemath.h class Figure public: virtual double getArea()=0; /纯虚拟函数 ; class Rect
9、angle: (1) protected: double height; double width; public: Rectangle(); Rectangle(double height,double width) This-height=height; This-width=width; double getarea() return (2) ; ; class Square: (3) public: square(double width) (4) ; ; class triangle: (5) double la; double lb; double lc; public: tria
10、ngle(double la,double lb,double lc) this-la=la;thiS-ib;this-lc; double getArea() double s=(la+lb+lc)/2.0; return sqrt(s*(s-l a)*(s-l b)*(s-l c); ; viod main() figure*figures3= new triangle(2,3,3),new Rectangle(5,8),new Square(5); for(int i=0; i3;i+) cout“figures“i“area=“(figures)-getarea()endl; ;(分数
11、:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.阅读以下说明和 Java程序,将应填入 (n) 处的字句写在对应栏内 说明 以下程序的功能时三角形、矩形和正方形的面积输出。 程序由 5个类组成:areatest 是主类,类 Triangle,Rectangle 和 Square分别表示三角形、矩形和正方形,抽象类 Figure提供了一个计算面积的抽象方法。 Java程序 public class areatest public static viod main(string args) FigureFigures= New triangle(2,3,3),new re
12、ctangle(5,8),new square(5) ; for(int i=0; iFigures.length;i+) system.out.println(Figures+“area=“+Figures.getarea(); public abstract class figure public abstract double getarea(); public class rectangle extends (1) double height; double width; public rectangle (double height,double width) this.height
13、=height; this.width=width; public string tostring() return“rectangle:height=“+height+“,width=“+width+“:“; public double getarea() return (2) public class square exends (3) public square(double width) (4) ; public string tostring() return“square:width=“+width“:“; public class triangle entends (5) dou
14、ble la; double lb; double lc; public triangle(double la,double lb,double lc) this.la=la;this.lb=lb;this.lc=lc; public string tostring()( return“triangle:sides=“+la+“,“+lb+“,“+lc+“:“; public double get area() double s=(la+lb+lc)/2.0; return mathsqrt(s *(s-l a)*(s-l b)*(s-l c); (分数:15.00)填空项 1:_初级程序员下
15、午试题-83 答案解析(总分:90.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.阅读以下说明和流程图,回答问题将解答填入对应栏。 说明 下面的流程图,用来完成求字符串 t在 s中最右边出现的位置。其思路是:做一个循环,以 s的每一位作为字符串的开头和 t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到 t的最后一个字符也相同,则说明在 s中找到了一个字符串 t;如果还没比较到 t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在 s中找到一个字符串 t时,不应停止寻找(因为要求的是求 t在 s中最右边出现位置),应先记录
16、这个位置 pos,然后开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果 s为空或不包含 t,则返回-1。 注:返回值用 pos表示。 * 问题 将流程图的(1)(5)处补充完整。(分数:15.00)_正确答案:(pos=-1; (2) si!=/0; (3) sj=tk; (4) k0; (5) pos=i;)解析:解析 本试题考查流程图。 题目中说明,如果 s中不包含 t,则返回-1,由流程图可以看出,如果(2)的条件不满足,流程图会直接跳到最后 Returnpos,所以,在开始进行查找之前,就要先将 pos置-1,所以(1)填入“pos=
17、-1”。循环开始,(2)保证的条件应该是 si不是空的,即(2)填入“si!=/0”。下面就开始进行比较,由于要输出的是最右边出现的位予,所以当第一次比较到相同的字符时不能输出,只要暂时把保存着,即(5)填入“pos=i”,然后进行下一次循环,当又出现相同的字符串时,就将 pos的值更新,如果一直到最后都没有再次出现相同的字符串,就把 pos输出。当比较到第一个相同的字符时,要继续比较下去,看是不是t和 s的每一个字符全相同,所以(3)应填入“sj=tk”。在什么情况下能说明 t和 s完全相同呢?就是当 t一直比较到最后一个字符即空格时,并且 k大于 0(因为如果 k等于 0,则说明第一个字母
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 83 答案 解析 DOC
