【计算机类职业资格】计算机水平考试初级程序员2006年上半年下午真题及答案解析.doc
《【计算机类职业资格】计算机水平考试初级程序员2006年上半年下午真题及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】计算机水平考试初级程序员2006年上半年下午真题及答案解析.doc(7页珍藏版)》请在麦多课文档分享上搜索。
1、计算机水平考试初级程序员 2006 年上半年下午真题及答案解析(总分:114.00,做题时间:90 分钟)1.B试题一/B 阅读以下说明和流程图,回答问题 1 至问题 3。 说明 信息处理过程中经常需要将图片或汉字点阵做旋转处理。一个矩阵以顺时针方向旋转 90后可以形成另一个矩阵,如下图所示: 流程图 2-1 描述了对 n*n 矩阵的某种处理。流程图 2-2 是将矩阵 A 顺时针旋转 90形成矩阵 B 的具体算法。 (分数:3.00)_2.问题 2 如果以下 3*3 矩阵沿顺时针方向旋转 90后所形成的矩阵就是原来的矩阵: (分数:3.00)_3.问题 3 在上述流程图 2-1 和图 2-2
2、的算法中, (1)矩阵 A 第 i 行第 j 列的元素 A(i,j)被复制到矩阵B 中的哪个位置? (2)A(i,j)后来又被复制到矩阵 C 中的哪个位置? (3)填补流程图 2-2 中的空缺。(分数:3.00)_二、B试题二/B(总题数:1,分数:15.00)4.C 语言函数 long change(int num) ind,m=num; long result mul; if (num=0|U (1) /U /*若 num 不大于 0 或 num 的位数大于 4,则返回-1*/ retum-1; mul=1; U(2) /U while(m0) d=m%10; m=U (3) /U; re
3、sult=result+(U (4) /U) *mul; mul=U (5) /U; return result; (分数:15.00)_三、B试题三/B(总题数:1,分数:15.00)5.C 语言函数 bool Del_elem(STACK*s,char para_ch) STACK s_bgk; /*定义临时工作栈 s_bak,*/ char ch; bool tag=FALSE; U (1) /U /*初始化临时工作栈 s_bak*/ /*,将栈*s 中所有比para_ch 更接近栈顶的元素暂时存放在临时工作栈 s bak 中*/ while(!IsEmpty(*s) ch=U (2)
4、/U; /*取栈顶元素*/ Pop(s); if(chpara_ch) tag=TRUE; break; U (3) /U; /*将暂存于临时工作栈 s_bak 中的元素存回栈*s*/ while(U (4) /U) ch=Top(s_bak); U (5) /U Push(s,ch) return tag; (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)6.C 语言函数 intB_sDAYS+1; /*记录成本最小的生产计划,B_s0不用,DAYS 定义为天数*/ double find_a_plan(FILE *int) iht P_nmDAYS+1,acc_req
5、DAYS+1; int i,tag = 0,acc_qty = 0; double mincost = 1.0e20,cost_Produce,cost_Keep; for(i = 1;i = DAYS; i+) /*第 i 天时的累计零件需求量存入 acc rcqi */ acc_qty += datai.Qty_req; acc_reqi = acc qty; while (!feof(int) for(i = 1; i = DAYS; i+ )/*读入一个生产计划,第 i 天的产量存入 P_numi*/ if (!feof(inf) fseantinf,“%d“, tag = 0; co
6、st_Produce = 0; cost_Keep = 0; for(i = 1,U (1) /U;i = DAYS; i+) /*考查当前的生产计划*/ acc qty += P_numi; /* acc_qty 计录到第 i 天时的累计零件生产量*/ if (acc_qty acc_reqi) /*当前生产计划不能满足需求*/ tag = 1; break; /*if*/ cost_Produce += U(2) /U; /*计算当前生产计划的总需件价格*/ cost_Keep += (U (3) /U) * datai,Keeping_fee; /*for*/ if(U (4) /U)
7、/* 若当前生产计划不可行,则继续读取下一计划*/ continue; if(U (5) /U) /*记录成本更小的生产计划*/ mincost = costProduce + cost_Keep; for(i = 1; i =DAYS; i+) B_si = P numi; /*if*/ /*while*/ return mincost; (分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)7.Vsual Basic 程序代码 Private Sub CmdSelect_Cliek() For i = O To List2.ListCount - 1 If Listl.Te
8、xt = List2.List(i) Then Exit Sub 不要重复选择 Next i List2.AddltemU (1) /U 在 List2 中增添 List1 中所选的项 End Sub Private Sub CrndSelAll_Click() List2.Clear 先删除List2 中的已有项 For i = 0 To U(2) /U 对 List1 中所有各项做循环处理 List2.Addltem U(3) /U 将该项增添到 List2 中 Next i End Sub Private Sub CmdDelete_Cliek() If List2.Listlndex
9、= O Then 如果 List2 中有选中的项, List2.Removeltem U (4) /U 则删除所选的项 End If End Sub Private Sub CmdDelAll_Cliek() U(5) /U End Sub(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)8.C+代码 (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)9.DimU (2) /U 声明全局变量 Private Sub Form_Load() Scale(0,0)-(20,6) 定义窗体的坐标系统 End Sub Private Sub CmdStart_C
10、lick() x=0 MMC.DevkeType=WaveAudio 设置多媒体设备类型 MMC.FileName=两只蝴蝶.wav 确定声音文件名 MMCCornmand=Open 打开多媒体设备 MMCCommand=P1ay 启动声音的播放 Timer1.Enabled=True 打开定时器 End Sub Private Sub Timer1_Timer() Ifx20 Thenx=x-20 蝴蝶飞到右边界后再回到左边界 Image1.Left=x 动态调整蝴蝶框的位置 Imagel.Top=U (3) /U Image2.Len=x lmage2.Top= U(4) /U x=x+0
11、.1 确定蝴蝶下一步飞行位置 End Sub Private Sub CmdStop_Click() U (5) /U Image1.Left=0 蝴蝶位置初始化 Image1Top=2 Image2Left=0 Imagc2.Top=3 MMlC.Command=Stop 停止播放 MMCCommand=Ciosc 关闭多媒体设备 End Sub(分数:15.00)_八、B试题八/B(总题数:1,分数:15.00)10.Java 代码 (分数:15.00)_计算机水平考试初级程序员 2006 年上半年下午真题答案解析(总分:114.00,做题时间:90 分钟)1.B试题一/B 阅读以下说明和
12、流程图,回答问题 1 至问题 3。 说明 信息处理过程中经常需要将图片或汉字点阵做旋转处理。一个矩阵以顺时针方向旋转 90后可以形成另一个矩阵,如下图所示: 流程图 2-1 描述了对 n*n 矩阵的某种处理。流程图 2-2 是将矩阵 A 顺时针旋转 90形成矩阵 B 的具体算法。 (分数:3.00)_正确答案:()解析: 分析 试题一 信息处理过程中经常需要将图片点阵或汉字点阵做旋转处理。这种方法可以简化为对 n*n 矩阵的旋转处理。其中,n 应该是一个变量,运行时由该程序模块外部导入具体的值。编程技术的一个基本要点就是对通用的情况找出规律,再按规律进行处理。 试题中给出了“按顺时针方向旋转9
13、0”的例子。在这种场合,用案例说明比叙述定义更为简单。人们也不难在案例的基础上推广理解。 对于问题 1,人们不难获得另一个案例: 对于问题 2,根据按顺时针方向旋转 90保持矩阵不变,可以逐步推断出一些元素的值: 对于问题 3,矩阵 A 按顺时针方向旋转 90得到矩阵 B,矩阵 B 按顺时针方向旋转 90得到矩阵 C。 矩阵 A 的第 1 行复制到矩阵 B 的第 n 列。 矩阵 A 的第 2 行复制到矩阵 B 的第 n-1 列。 矩阵 A 的第 3 行复制到矩阵 B 的第 n-2 列。 按照上述规律,矩阵 A 的第 i 行应复制到矩阵 B 的第 n-i+1 列。 A(i,j)是矩阵 A 的第
14、i 行第 j 列的元素,它应复制到矩阵 B 的第 n-i+1 列中,第j 行元素。即 A(i,j)B(j,n-i+1)。 矩阵 B 的第 1 行复制到矩阵 C 的第 n 列。 矩阵 B 的第 2 行复制到矩阵 C 的第 n-1 列。 按照上述规律,矩阵 B 的第 j 行应复制到矩阵 C 的第 n-j+1 列。 B(j,n-i+1)是矩阵 B 的第 j 行第 n-i+1 列的元素,它应复制到矩阵 C 的第 n-j+1 列中,第 n-i+l 行元素。即 B(j,n-i+1)C(n-i+l,n-j+1)。 反之,矩阵 B 的第 1 列来自矩阵 A 的第 n 行。 矩阵 B 的第 2 列来自矩阵 A
15、的第 n-1 行。 按照上述规律,矩阵 B 的第 j 列来自矩阵 A 的第 n-j+1 行。 B(i,j)是矩阵 B 的第 j 列中第 i 行元素,它来自矩阵 A 的第 n-j+1 行中第 i 列的元素,即 B(i,j)A(n-j+1,i)。 另一种更理性的方法是:在导出按顺时针方向旋转 90的变换 A(i,j)B(j,n-i+1) 后,就能通过推导再导出其他多次变换。可以将上述变换写成: A(x,y)B(u,v) 从而,B(j,n-i+1)可以直接变换到 C(n-i+l,n-j+1)。而且,可以直接导出 A(n-j+1),i)B(i,j)。2.问题 2 如果以下 3*3 矩阵沿顺时针方向旋转
16、 90后所形成的矩阵就是原来的矩阵: (分数:3.00)_正确答案:()解析:3.问题 3 在上述流程图 2-1 和图 2-2 的算法中, (1)矩阵 A 第 i 行第 j 列的元素 A(i,j)被复制到矩阵B 中的哪个位置? (2)A(i,j)后来又被复制到矩阵 C 中的哪个位置? (3)填补流程图 2-2 中的空缺。(分数:3.00)_正确答案:()解析:问题 3 (1)B(j,n-i+1),或矩阵 B 的第 j 行第 n-i+1 列 (2)C(n-i+l,n-j+1),或矩阵 C 的第 n-i+1 行第 n-j+1 列 (3)A(n-j+1,i)二、B试题二/B(总题数:1,分数:15.
17、00)4.C 语言函数 long change(int num) ind,m=num; long result mul; if (num=0|U (1) /U /*若 num 不大于 0 或 num 的位数大于 4,则返回-1*/ retum-1; mul=1; U(2) /U while(m0) d=m%10; m=U (3) /U; result=result+(U (4) /U) *mul; mul=U (5) /U; return result; (分数:15.00)_正确答案:()解析:num/100000,或 num9999,或 num=10000,或其等价形式 (2)result
18、=0 (3)m/10,或(m-d)/10,或其等价形式 (4)d*10 +d,或其等价形式 (5)mul*100,或其等价形式 分析试题二 本题考查简单运算的程序实现。对于这类题目,应将题干部分描述的运算过程理解透彻。 函数 change(int num)的功能是对四位以内(含四位)的十进制正整数 num 的每一位重复一次。显然,num 的位数大于 4 的直接表示是 num9999 或 nam10000,或 num/100000。 从题干部分给出的变换公式看,最后的结果是累加获得的,而且代码中用于保存累加结果的变量是 result,该变量的初值应为 0。所以空(2)处应填入“result=O”
19、。分析对 5234 的变化过程可知,首先取出个位,其次是十位上的数字,以此类推,并且将每次取出的数字 d 乘以 10 再加上该数字 d,因此空(4)处应填入“d*10 +d” 。显然 mul 的值以 100 进行累乘,因此空(5)处填入“mul*100“。由于跳出循环的条件为“m=0”,所以结合“d=m%10”可知,空(3)处应填入“m/10”。三、B试题三/B(总题数:1,分数:15.00)5.C 语言函数 bool Del_elem(STACK*s,char para_ch) STACK s_bgk; /*定义临时工作栈 s_bak,*/ char ch; bool tag=FALSE;
20、U (1) /U /*初始化临时工作栈 s_bak*/ /*,将栈*s 中所有比para_ch 更接近栈顶的元素暂时存放在临时工作栈 s bak 中*/ while(!IsEmpty(*s) ch=U (2) /U; /*取栈顶元素*/ Pop(s); if(chpara_ch) tag=TRUE; break; U (3) /U; /*将暂存于临时工作栈 s_bak 中的元素存回栈*s*/ while(U (4) /U) ch=Top(s_bak); U (5) /U Push(s,ch) return tag; (分数:15.00)_正确答案:()解析:InitStack( /*记录成本最
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 计算机水平 考试 初级 程序员 2006 上半年 下午 答案 解析 DOC
