【计算机类职业资格】初级程序员下午试题-5及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-5及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-5及答案解析.doc(6页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-5 及答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【说明】 为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R1.n进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设 R中的元素互不相同)。 【算法】 1变量声明 X:DataType i,j,low,high,mid,R0n) 2每循环一次插入一个 Ri 循环:i 以 1 为步长,从 2 到 n,反复执行 准备 X-Ri;U (1) /U;high-i-1; 找插入位置
2、循环:当U (2) /U时,反复执行 U (3) /U; 若 X.keyRmid.key 则 high-mid-1 否则U (4) /U 后移 循环:j 以-1 为步长,从U (5) /U,反复执行 Rj+1-Rj 插入 Rlow-X 3算法结束(分数:15.00)填空项 1:_二、B试题二/B(总题数:1,分数:15.00)2.1 说明】 【函数 2.1 说明】 函数 stremp()是比较两个字符串 s 和 t 的大小。若 st 函数返回负数;若 s=t 函数返回 0;若 st,函数返回正数。 【函数 2.1】 int strcmp(char * s,char * t) while(* s
3、t+; returnU (2) /U; 【程序 2.2 说明】 在 n 行 n 列的矩阵中,每行都有最大的数,本程序求这 n 个最大数中的最小一个。 【程序 2.2】 #includestdio.h #define N 100 int 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(U (3) /U)max=arowcol; if(U (4) /U)min=max;
4、else if(U (5) /U)min=max; printf(“The min of max numbers is %d/n“,min); (分数:15.00)填空项 1:_三、B试题三/B(总题数: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(初始为空)。 【函数】
5、 move(int*a ,int n) int i,low,high,t; low=i=0;high=n-1; while(U (1) /U) if(ai0) t=ai;ai=alow;alow=t; U (2) /U;i+; else if(U (3) /U) t=ai;ai=ahigh;ahigh=t; U(4) /U; elseU (5) /U; (分数:15.00)填空项 1:_四、B试题四/B(总题数:1,分数:15.00)4.【说明】 从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 XX 中;请编写程序,其功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移到该串
6、的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组 XX 中,最后调用函数 WRITEDAT(),把结果 XX 输出到文件 OUT5.DAT 中。 例如:原文:You can create an index on any field you have the correct record. 结果:n any fieldYu can create an index rd. yu have the crreet res 原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。 【函数】 #include “
7、stdio.h“ #include “string.h“ #include “conio.h“ #include “ctype.h“ #include “mem.h“ unsigned char xx50 80 int 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;
8、 while(*p2) /*找到最后一个别o*/ if(U (1) /U)p1=p2; p2+; strcat(t,p1+1); *p1=/0; strcat(t,xxi); p1=xxi; p2=t; while(*p2) /*删去字符o*/ if(U (2) /U)U (3) /U=*p2; p2+; U(4) /U; void main() clrscr(); if(readdat() printf(“Cant open the file IN. DAT!/n“); return; StrOR(); writedat(); int readdat(void) FILE * fp; int
9、 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:U (5) /U; 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(f
10、p); (分数:15.00)填空项 1:_五、B试题五/B(总题数:1,分数:15.00)5.【说明】 在窗体上画一个名称为 Combo1 的组合框,画两个名称分别 Labe11、Labe12 及 Caption 属性分别为“城市名称”和空白的标签。程序运行后,当在组合框中输入一个新项后按回车键 (ASCII 码为 13)时,如果输入的项在组合框的列表中不存在,则自动添加到组合框的列表中,并在 Labe12 中给出提示“已成功添加输入项”;如果存在,则在 Labe12 中给出提示“输入项已在组合框中”。 【程序】 Private Sub Combo1U (1) /U(KeyAscii As I
11、nteger) If KeyAscii=U (2) /UThen For i=0 ToU (3) /U If Combo1. Text=U (4) /UThen Labe12. Caption =“输入项已在组合框中“ Exit Sub End If Next i Label2. Caption =“已成功添加输入项“ Combo1.U (5) /UCombo1.Text End If End Sub(分数:15.00)填空项 1:_六、B试题六/B(总题数:1,分数:15.00)6.【说明】 以下程序的功能是计算三角形、矩形和正方形的面积并输出。 程序由 4 个类组成:类Triangle、R
12、ectangle 和 Square 分别表示三角形、矩形和正方形;抽象类 Figure 提供了一个纯虚拟函数getArea(),作为计算上述 3 种图形面积的通用接口。 【C+程序】 #includeiostream.h #includemath.h class Figure public: virtual double getArea()=0; /纯虚拟函数 ; class Rectangle:U (1) /U protected: double height; double width; public: Rectangle() ; Rectangle(double height,doubl
13、e width) this-height=height; this-width=width; double getArea() returnU (2) /U; ; class Square:U (3) /U public: Square(double width) U (4) /U; ; class Triangle:U (5) /U double la; double lb; double lc; Public: Triangle(double la, double lb, double lc) This-la=la; this-lb=lb; this-lc=lc; double getAr
14、ea() double s = (la+lb+c)/2.0; return sqrt(s,(s-la)*(s-lb)*(s-Ic); ; 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:_七、B试题七/B(总题数:1,分数:15.00)7.【说明】 下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于该
15、数本身的三位数并显示。在程序的每条横线处填写一个适当的词或语句,使程序的功能完整。 publicU (1) /Uclass cube_Root public static voidU (2) /Umain(String args) System. out. println (“个、十、百位数字的立方和等于该数本身的三位数有:“); for(int n=100;n1000;n+) int a,b,c; U (3) /U b=n/10%10; U (4) /U if(U (5) /U) System.out.println(n); (分数:15.00)填空项 1:_八、B试题八/B(总题数:1,分
16、数:15.00)8.【说明】 本程序是一个可进行数制转换的应用程序,图 1 所示是其运行界面。txtDec 为 TextBox 控件名,Lblkes 为转换结果 label 控件名。 (分数:15.00)填空项 1:_初级程序员下午试题-5 答案解析(总分:120.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:15.00)1.【说明】 为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R1.n进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置(假设 R中的元素互不相同)。 【算法】 1变量声
17、明 X:DataType i,j,low,high,mid,R0n) 2每循环一次插入一个 Ri 循环:i 以 1 为步长,从 2 到 n,反复执行 准备 X-Ri;U (1) /U;high-i-1; 找插入位置 循环:当U (2) /U时,反复执行 U (3) /U; 若 X.keyRmid.key 则 high-mid-1 否则U (4) /U 后移 循环:j 以-1 为步长,从U (5) /U,反复执行 Rj+1-Rj 插入 Rlow-X 3算法结束(分数:15.00)填空项 1:_ (正确答案:low-1 (2) lowhigh (3)mid-int(low+high)/2) (4)
18、low-mid+1)解析:(5)i-1 到 low 解析 这是一个通过自然语言描述二分插入排序的过程。整个过程由一个大循环来完成,在大循环中又包含两个循环,第一个循环是一个二分查找过程,第二循环是后移过程。 查找过程是在有序序列 R1Ri-1中查找 Ri的过程,这是一个典型的折半查找过程。初始时指针 low 指向第一个元素,即 R 1,指针 hish 指向第后一个元素,因此(1)空处应填写“low-1”。要查找 Ri,先与中间元素进行比较,中间元素使用 mid 指向,因此,(3)空处应填入“mid-int(low+high)/2)”。当RiRmid时,则在前半部分查找,将 high-mid-1
19、,如果 RiRmid时,则在后半部分查找,因此(4)空处应填“low-mid+1”。那什么时候结束呢?显然,一种情况是已经找该元素,由于题目中已经假设元素互不相同,这种情况不会发生,二是没有找到该元素,即指针 low 和指针 high 之间的没有元素了,所以(2)空处应填写“lowhigh”。(5)空所在循环是进行数据移动,结合下面语句,可以判断循环是从 i-1 开始,到什么时候结束呢?通过分析,可以知道,最终要把 Ri放在 Rlow的位置,循环要到low 时结束,因此(5)空处应填写“i-1 到 low”。二、B试题二/B(总题数:1,分数:15.00)2.1 说明】 【函数 2.1 说明】
20、 函数 stremp()是比较两个字符串 s 和 t 的大小。若 st 函数返回负数;若 s=t 函数返回 0;若 st,函数返回正数。 【函数 2.1】 int strcmp(char * s,char * t) while(* st+; returnU (2) /U; 【程序 2.2 说明】 在 n 行 n 列的矩阵中,每行都有最大的数,本程序求这 n 个最大数中的最小一个。 【程序 2.2】 #includestdio.h #define N 100 int aN N; void main() int row ,col,max,min,n; /* 输入合法 n(n100),和输入 nn
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 答案 解析 DOC
