ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:57.50KB ,
资源ID:1330123      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1330123.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】初级程序员下午试题-63及答案解析.doc)为本站会员(dealItalian200)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、初级程序员下午试题-63 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组 R1.n进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设 R中的元素互不相同)。【算法】1变量声明X:DataTypei,j,low,high,mid,R0n)2每循环一次插入一个 Ri循环:i 以 1为步长,从 2到 n,反复执行准备X-Ri; (1) ;high-i-1;找插入位置循环:当 (2) 时,反复执行(3

2、) ;若 X.keyRmid.key则 high-mid-1否则 (4) 后移循环:j 以-1 为步长,从 (5) ,反复执行Rj+1-Rj插入Rlow-X3算法结束(分数:15.00)填空项 1:_二、试题二(总题数:1,分数:15.00)2.1说明】【函数 2.1说明】函数 stremp()是比较两个字符串 s和 t的大小。若 st 函数返回负数;若 s=t函数返回 0;若 st,函数返回正数。【函数 2.1】int strcmp(char * s,char * t)while(* st+;return (2) ;【程序 2.2说明】在 n行 n列的矩阵中,每行都有最大的数,本程序求这 n

3、个最大数中的最小一个。【程序 2.2】#includestdio.h#define N 100int aN N;void main()int row ,col,max,min,n;/* 输入合法 n(n100),和输入 nn个整数到数组 a的代码略*/for (row =0;rown;row+) for(max=arow 0,col=1;coln;col+)if( (3) )max=arowcol;if( (4) )min=max;else if( (5) )min=max;printf(“The min of max numbers is %d/n“,min);(分数:15.00)填空项 1

4、:_三、试题三(总题数:1,分数:15.00)3.【说明】函数 move(int*a,int n)用于整理数组 a的前 n个元素,使其中小于 0的元素移到数组的前端,大于 0的元素移到数组的后端,等于 0的元素留在数表中间。令 a0alow-1)小于 0(初始为空);alow-ai-1等于 0(初始为空);aiahigh还未考察,当前考察元素为 ai。ahigh+1an-1大于 0(初始为空)。【函数】move(int*a ,int n)int i,low,high,t;low=i=0;high=n-1;while( (1) )if(ai0)t=ai;ai=alow;alow=t;(2) ;i

5、+;else if( (3) )t=ai;ai=ahigh;ahigh=t;(4) ;else (5) ;(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.【说明】从文件 IN.DAT中读取一篇英文文章存入到字符串数组 XX中;请编写程序,其功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组 XX中,最后调用函数WRITEDAT(),把结果 XX输出到文件 OUT5.DAT 中。例如:原文:You can create an i

6、ndex on any fieldyou have the correct record.结果:n any fieldYu can create an indexrd. yu have the crreet res原始数据文件存放的格式是:每行的宽度均小于 80个字符,含标点符号和空格。【函数】#include “stdio.h“#include “string.h“#include “conio.h“#include “ctype.h“#include “mem.h“unsigned char xx50 80int maxline=0;int readdat(void);void write

7、dat(void)*将题目要求的字符串中所有小写字母 o左边的字符串内容移到谊串的右边存放,即将串中“最后”一个字母 o左右两侧的内容互换*void StrOR(void)inti;char*p1,* p2,t80;for(i=0;imaxline;i+)t0=/0;p2=xxi;while(*p2) /*找到最后一个别o*/if( (1) )p1=p2;p2+;strcat(t,p1+1);*p1=/0;strcat(t,xxi);p1=xxi;p2=t;while(*p2) /*删去字符o*/if( (2) ) (3) =*p2;p2+;(4) ;void main()clrscr();i

8、f(readdat()printf(“Cant open the file IN. DAT!/n“);return;StrOR();writedat();int readdat(void)FILE * fp;int i=0;char * p;if(fp=fopen(“in.dat“,“r“ )=NULL)return 1;while(fgets(xxi,80, fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline: (5) ;fclose(fp);return 0;void writedat (void)FILE * fp;int i;fp=fopen

9、(“in.dat,“w“);for(i=0;imaxline;i+)printf(“%s/n“,xxi);fprintf(fp,“ %s/n“,xxi);fclose(fp);(分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)5.【说明】在窗体上画一个名称为 Combo1的组合框,画两个名称分别 Labe11、Labe12 及 Caption属性分别为“城市名称”和空白的标签。程序运行后,当在组合框中输入一个新项后按回车键 (ASCII 码为 13)时,如果输入的项在组合框的列表中不存在,则自动添加到组合框的列表中,并在 Labe12中给出提示“已成功添加输入项”;如

10、果存在,则在 Labe12中给出提示“输入项已在组合框中”。【程序】Private Sub Combo1 (1) (KeyAscii As Integer)If KeyAscii= (2) ThenFor i=0 To (3) If Combo1. Text= (4) ThenLabe12. Caption =“输入项已在组合框中“Exit SubEnd IfNext iLabel2. Caption =“已成功添加输入项“Combo1. (5) Combo1.TextEnd IfEnd Sub(分数:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.【说明】以下程序的功

11、能是计算三角形、矩形和正方形的面积并输出。程序由 4个类组成:类 Triangle、Rectangle 和 Square分别表示三角形、矩形和正方形;抽象类 Figure提供了一个纯虚拟函数 getArea(),作为计算上述 3种图形面积的通用接口。【C+程序】#includeiostream.h#includemath.hclass Figure public:virtual double getArea()=0; /纯虚拟函数;class Rectangle: (1) protected:double height;double width;public:Rectangle() ;Rect

12、angle(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:Triangle(double la, double lb, double lc) This-la=la; this-lb=lb; this-lc=lc;double getArea()

13、double s = (la+lb+c)/2.0;return sqrt(s,(s-l a)*(s-l b)*(s-I c);void 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=“(figuresi)-getArea()endl;(分数:15.00)填空项 1:_七、试题七(总题数:1,分数:15.00)7.【说明】下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于该数本身的三位数并显示。在程序

14、的每条横线处填写一个适当的词或语句,使程序的功能完整。public (1) class cube_Root public static void (2) main(String args) System. out. println (“个、十、百位数字的立方和等于该数本身的三位数有:“);for(int n=100;n1000;n+)int a,b,c;(3) b=n/10%10;(4) if( (5) )System.out.println(n);(分数:15.00)填空项 1:_八、试题八(总题数:1,分数:15.00)8.【说明】本程序是一个可进行数制转换的应用程序,图 1所示是其运行界

15、面。txtDec 为 TextBox控件名,Lblkes为转换结果 label控件名。(分数:15.00)填空项 1:_初级程序员下午试题-63 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组 R1.n进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设 R中的元素互不相同)。【算法】1变量声明X:DataTypei,j,low,high,mid,R0n)2每循环一次插入一个 Ri循环:i 以 1

16、为步长,从 2到 n,反复执行准备X-Ri; (1) ;high-i-1;找插入位置循环:当 (2) 时,反复执行(3) ;若 X.keyRmid.key则 high-mid-1否则 (4) 后移循环:j 以-1 为步长,从 (5) ,反复执行Rj+1-Rj插入Rlow-X3算法结束(分数:15.00)填空项 1:_ (正确答案:low-1 (2) lowhigh (3)mid-int(low+high)/2) (4)low-mid+1(5)i-1 到 low)解析:解析 这是一个通过自然语言描述二分插入排序的过程。整个过程由一个大循环来完成,在大循环中又包含两个循环,第一个循环是一个二分查找

17、过程,第二循环是后移过程。查找过程是在有序序列 R1Ri-1中查找 Ri的过程,这是一个典型的折半查找过程。初始时指针low指向第一个元素,即 R 1,指针 hish指向第后一个元素,因此(1)空处应填写“low-1”。要查找Ri,先与中间元素进行比较,中间元素使用 mid指向,因此,(3)空处应填入“mid-int(low+high)/2)”。当 RiRmid时,则在前半部分查找,将 high-mid-1,如果 RiRmid时,则在后半部分查找,因此(4)空处应填“low-mid+1”。那什么时候结束呢?显然,一种情况是已经找该元素,由于题目中已经假设元素互不相同,这种情况不会发生,二是没有

18、找到该元素,即指针 low和指针 high之间的没有元素了,所以(2)空处应填写“lowhigh”。(5)空所在循环是进行数据移动,结合下面语句,可以判断循环是从 i-1开始,到什么时候结束呢?通过分析,可以知道,最终要把 Ri放在 Rlow的位置,循环要到 low时结束,因此(5)空处应填写“i-1 到 low”。二、试题二(总题数:1,分数:15.00)2.1说明】【函数 2.1说明】函数 stremp()是比较两个字符串 s和 t的大小。若 st 函数返回负数;若 s=t函数返回 0;若 st,函数返回正数。【函数 2.1】int strcmp(char * s,char * t)whi

19、le(* st+;return (2) ;【程序 2.2说明】在 n行 n列的矩阵中,每行都有最大的数,本程序求这 n个最大数中的最小一个。【程序 2.2】#includestdio.h#define N 100int aN N;void main()int row ,col,max,min,n;/* 输入合法 n(n100),和输入 nn个整数到数组 a的代码略*/for (row =0;rown;row+) for(max=arow 0,col=1;coln;col+)if( (3) )max=arowcol;if( (4) )min=max;else if( (5) )min=max;p

20、rintf(“The min of max numbers is %d/n“,min);(分数:15.00)填空项 1:_ (正确答案:*s = *t (2) *s - *t (3) arowcolmax (4)row=0 (5) maxmin)解析:解析 *s 和*t 相等才执行循环体。返回二者差值,恰好符合题目要求。当前值比 max大,则把它赋给 max。max 是本行最大值。初始化 min为第一行的 max。该行的 max比 min小,则将 max赋给 min。三、试题三(总题数:1,分数:15.00)3.【说明】函数 move(int*a,int n)用于整理数组 a的前 n个元素,使

21、其中小于 0的元素移到数组的前端,大于 0的元素移到数组的后端,等于 0的元素留在数表中间。令 a0alow-1)小于 0(初始为空);alow-ai-1等于 0(初始为空);aiahigh还未考察,当前考察元素为 ai。ahigh+1an-1大于 0(初始为空)。【函数】move(int*a ,int n)int i,low,high,t;low=i=0;high=n-1;while( (1) )if(ai0)t=ai;ai=alow;alow=t;(2) ;i+;else if( (3) )t=ai;ai=ahigh;ahigh=t;(4) ;else (5) ;(分数:15.00)填空项

22、 1:_ (正确答案:i=high (2)low+ (3)ai0 (4)high- (5)i+)解析:解析 程序的说明已经对程序的功能和相关变量解释得很清楚了,这儿就不再重复了。由变量i、变量 low和变量 high的含义和初值可以判断,i 至 high之间的元素还未处理,因此 while循环条件是“i hish”或其等价形式,这就是(1)空所填写的内容。(2)空所在语句块是处理当 ai0 的情况,显然这时需要将 a i与 alow进行交换,交换后需要将 i和 low都要向后移动,因此(2)空处应填写“low+”或其等价形式。(3)空需要填写执行(4)空所在语句块的条件,由(4)空所在语句块的

23、可以判断,它是处理当 ai0 的情况,因此(3)空处应填写“ai0”或其等价形式。当 ai0 时,需要将 ai与 ahigh进行交换,交换后需要将 high都要向前移动,因此(4)空处应填写“high-”或其等价形式。注意这时 i不能向后移动,因为交换后的 ai还没有处理,需要循环的下一趟进行处理。当 ai=0情况,当 ai=0时,不需要进行元素交换,只需将 i向后移动就可以了,阅此(5)空处应填写“i+”或其等价形式。四、试题四(总题数:1,分数:15.00)4.【说明】从文件 IN.DAT中读取一篇英文文章存入到字符串数组 XX中;请编写程序,其功能是:以行为单位把字符串中所有小写字母。左

24、边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组 XX中,最后调用函数WRITEDAT(),把结果 XX输出到文件 OUT5.DAT 中。例如:原文:You can create an index on any fieldyou have the correct record.结果:n any fieldYu can create an indexrd. yu have the crreet res原始数据文件存放的格式是:每行的宽度均小于 80个字符,含标点符号和空格。【函数】#include “

25、stdio.h“#include “string.h“#include “conio.h“#include “ctype.h“#include “mem.h“unsigned char xx50 80int maxline=0;int readdat(void);void writedat(void)*将题目要求的字符串中所有小写字母 o左边的字符串内容移到谊串的右边存放,即将串中“最后”一个字母 o左右两侧的内容互换*void StrOR(void)inti;char*p1,* p2,t80;for(i=0;imaxline;i+)t0=/0;p2=xxi;while(*p2) /*找到最后

26、一个别o*/if( (1) )p1=p2;p2+;strcat(t,p1+1);*p1=/0;strcat(t,xxi);p1=xxi;p2=t;while(*p2) /*删去字符o*/if( (2) ) (3) =*p2;p2+;(4) ;void main()clrscr();if(readdat()printf(“Cant open the file IN. DAT!/n“);return;StrOR();writedat();int readdat(void)FILE * fp;int i=0;char * p;if(fp=fopen(“in.dat“,“r“ )=NULL)retur

27、n 1;while(fgets(xxi,80, fp)!=NULL)p=strchr(xxi,/n);if(p)*p=0;i+;maxline: (5) ;fclose(fp);return 0;void writedat (void)FILE * fp;int i;fp=fopen(“in.dat,“w“);for(i=0;imaxline;i+)printf(“%s/n“,xxi);fprintf(fp,“ %s/n“,xxi);fclose(fp);(分数:15.00)填空项 1:_ (正确答案:*p2=o (2)*p2!=o (3) *p1+(4)*p1=/0 2(5)i)解析:解析

28、在主函数中,首先调用函数 READDAT(),从文件 IN.DAT中读取一篇英文文章存入到字符串数组 XX中,用变量 maxline表示文章的行数,所以(5)空应填入“i”。函数 STROR()的功能是将字符串中所有小写字母。左边的字符串内容移到该串的右边存放,即先将串中“最后”一个字母。左右两侧的内容互换,再删去所有的小写字母o。第一个 while()循环的作用是让p1指向最后一个字母o,所以(1)空应填入“*p2=o”。第一个 stmat()函数的作用是将 p1以后的字符都放到新串 t中。第二个 strcat()函数的作用是将 p1以前的字符连接到新串 t的后面(注意:在此之前要让 p1所

29、指的单元成为 p1前面字符串的结束位置*p1=/0)。这时完成左右互换。最后个 while()循环的作用是删除新串中的所有小写字母o,采用的删除方法是不是o的字母一律留下,否则不留(即相当于删除),所以(2)空应填入“*p2!=o,而 p1指向这一行的开始,且每次赋值后值必须加 1,所以(3)空应填入“* P1 +”。复制完所有不是o的字母后还要加一个字符串结束标记,所以(4)空应填入“* p1=0”。最后通过调用函数 WRITEDAT()把结果 xx输出到文件中。五、试题五(总题数:1,分数:15.00)5.【说明】在窗体上画一个名称为 Combo1的组合框,画两个名称分别 Labe11、L

30、abe12 及 Caption属性分别为“城市名称”和空白的标签。程序运行后,当在组合框中输入一个新项后按回车键 (ASCII 码为 13)时,如果输入的项在组合框的列表中不存在,则自动添加到组合框的列表中,并在 Labe12中给出提示“已成功添加输入项”;如果存在,则在 Labe12中给出提示“输入项已在组合框中”。【程序】Private Sub Combo1 (1) (KeyAscii As Integer)If KeyAscii= (2) ThenFor i=0 To (3) If Combo1. Text= (4) ThenLabe12. Caption =“输入项已在组合框中“Exi

31、t SubEnd IfNext iLabel2. Caption =“已成功添加输入项“Combo1. (5) Combo1.TextEnd IfEnd Sub(分数:15.00)填空项 1:_ (正确答案:KeyPress (2) 13 (3) Combol.ListCount-1(4) Combol. List (i) (5) AddItem)解析:解析 根据题意,“在组合框中输入一个新项后按回车键(ASCII 码为 13)时”,因此 Combol的事件名称应是 Combol_KeyPress,即(1)空填“KeyPress”;(2)空判断按键是否是回车键,填“13”;如果是,再穷举组合框

32、的所有列表项(即、(3)空填“CombolListCount-1”),查看是否有等于输入项CombolText(即(4)空填“CombolLisL(i)”),有则在 Labe12 中给出提示“输入项已在组合框中”,否则在 Labe12中给出提示“已成功添加输入项”,并将输入项(Combol.Text)添加到组合框中,即 (5)空填“AddItem”。六、试题六(总题数:1,分数:15.00)6.【说明】以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由 4个类组成:类 Triangle、Rectangle 和 Square分别表示三角形、矩形和正方形;抽象类 Figure提供了一个纯

33、虚拟函数 getArea(),作为计算上述 3种图形面积的通用接口。【C+程序】#includeiostream.h#includemath.hclass Figure public:virtual double getArea()=0; /纯虚拟函数;class Rectangle: (1) protected:double height;double width;public:Rectangle() ;Rectangle(double height,double width) this-height=height;this-width=width;double getArea() retu

34、rn (2) ;class Square: (3) public:Square(double width)(4) ;class Triangle: (5) double la;double lb;double lc;Public:Triangle(double la, double lb, double lc) This-la=la; this-lb=lb; this-lc=lc;double getArea() double s = (la+lb+c)/2.0;return sqrt(s,(s-l a)*(s-l b)*(s-I c);void main() Figure*figures3=

35、new Triangle(2,3,3), new Rectangle(5,8), new SqUare(5);for(int i=0;i3;i+)cout“figures“i“area=“(figuresi)-getArea()endl;(分数:15.00)填空项 1:_ (正确答案:public Figure (2) height * width (3) public Rectangle(4)this-height=this-width=width (5)public Figure)解析:解析 类 Triangle、Rectangle 和 Square分别表示三角形、矩形和正方形,它们都需要

36、求各自的面积,而抽象类 Figure提供了一个纯虚拟函数 getArea(),所以类 Rectangle以类 Figure为基类,公有继承,所以(1)空应填入“public Figure”。(2)空处为类 Rectangle中求面积函数的返回值,所以根据长方形面积公式应填入“height*width”。类 Square表示正方形,它是特殊的长方形,所以可以从代表长方形的类 Rectangle公有继承它的成员,所以(3)空应填入“public Rectangle”。(4)空处为类 Square的构造函数的函数休,显然是长等于宽,所以应填入“this-height=this-width=width

37、”。最后类 Triangle同样从虚基类公有继承,所以(5)空应填入“public Figure”。七、试题七(总题数:1,分数:15.00)7.【说明】下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于该数本身的三位数并显示。在程序的每条横线处填写一个适当的词或语句,使程序的功能完整。public (1) class cube_Root public static void (2) main(String args) System. out. println (“个、十、百位数字的立方和等于该数本身的三位数有:“);for(int n=100;n1000;n+)int a,b,c

38、;(3) b=n/10%10;(4) if( (5) )System.out.println(n);(分数:15.00)填空项 1:_ (正确答案:class (2)main (3)a=n%l0(4)c=n/l00% 10(5)a*a*a + b*b*b + c*c*c=n)解析:解析 此处应填类声明的关键字 class。此处应填 Java程序的函数人口名 main。取得整数 n的个位数字。取得整数 n的百位数字。当个、十、百位数字的立方和等于该数本身时输出。八、试题八(总题数:1,分数:15.00)8.【说明】本程序是一个可进行数制转换的应用程序,图 1所示是其运行界面。txtDec 为 T

39、extBox控件名,Lblkes为转换结果 label控件名。(分数:15.00)填空项 1:_ (正确答案:pintDec0 (2) pintDec = pintDec /pintS(3) len(strCov) (4) convert(val(txtDec.Text),2)(5) Hex(Val(txtDec.Text))解析:解析 VB 中,十六进制转换和八进制转换都有相应的函数,分别是 Hex()和 Oct(),而二进制转换没有,故程序中用了一个自定义函数 convert (pintDec,pintS),功能是将十进制数 pintDec转换成pintS进制数,convert 函数中用除 pintS求余法进行数制转换,所以答案如下所示。

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