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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷39及答案与解析.doc

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 39 及答案与解析 1 阅读以下说明和流程图回答问题,将解答填入对应栏。 说明 “直接插入法 ”排序是一种 N2运算量的例程,只能用在 N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前两个数中,如此下去,一直到最后一个也插入。 注:流程中循环开始的说明按照 “循环变量:循环初值,循环终值,增量 ”格式描述。 问题 将流程图的 (1) (5)处补充完整。 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 1 函数 int function(int a)的功

2、能是判断指定的正整数是否为素数,若是,返回 1,否则返回 0。 C函数 1 int function(int a) int yes,i; i=2;yes=1; while(i =a/2 i+; return yes; 说明 2 函数 int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。 C函数 2 int deleteARR(int*arr,int n) int k,j; k=0;j=1; while(j n) if( (3) ) (4)=arrj; j+; return

3、(5); 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 已知一棵二叉树用二叉链表存储, t指向根结点, p指向树中任一结点。下列算法为输出从 t到 P之间路径上的结点。 C程序 #define Maxsize 1000 typedef struct node TelemType data; struct node*1child,*rchild; BiNode,*BiTree; void Path(BiTree t,BiNode*P) BiTree*stackMaxsize,*stacklMaxsize,*q; int tagMaxsize,top=0,top

4、l; q=t; /*通过先序遍历发现 P*/ do(while(q!=NULL stacktop=q; tagtop=0; (2); if(top 0) if(stacktop=P) break; /*找到 P,栈底到栈顶为 t到 P*/ if(tagtop=1)top-; elseq=stacktop; q=q- rchild; tagtop=1; (3); top-; topl=0; while(top 0) q=stacktop; /*反向打印准备 */ topl+; (4); top-; while(5) /*打印栈的内容 */ q=stackltopl; printf(q- data

5、); topl-; 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 某银行共发出 M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的 N笔 “存款 ”或 “取款 ”业务。程序中用数组 cardMN+3中的每一行存放一张储蓄卡的有关信息,其中: cardi0存放第 i张卡的卡号; cardi1存放第 i张卡的余额; cardi2存放第 i张卡的当日业务实际发生笔数; cardi3 cardiN+2存放第 i张卡的当日存取款金额,正值代表存款,负值代表取款。 当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,

6、程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。 C程序 #include stdio.H #define M 6 #define N 5 long cardMN+3=9801,2000,0,9812,2000,2,9753,3000,1, 8750,500,0,9604,2800,3,),(8901,5000,5,; int locate(long cardN+3,int m,long no) int i; for(i=0;i m;i+) if(1)=no) return i; (2); main() long cardNo,money; int k; while(1

7、) printf(“请输入卡号 :n“); scanf(“%1d“, if(cardNo 0) break; k=locate(card,M,cardNo); if(k=-1) printf(“不存在 %id号的储蓄卡 n“,cardNo); continue; printf(“请输入金额 (正 值代表存款,负值代表取款 ):n“); scanf(“%id“, if(cardk1+money 0) printf(“存款余额不足,不能完成本次的取款业务 n“); continue; if(cardk2=N) printf(“已完成本卡的当日业务 n“); continue; /*处理一笔业务的数

8、据 */ cardk (3)=money; (4); (5); 5 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 说明 下面程序是为汽车市场编制的一个程序的一部分。其中 automobile是基类。 C+程序 /Auto.h #ifndef AUTO_H #define AUTO_H class automobile (1): int miles_per_gallon; /汽车每加仑行驶公里数 float fuel_capacity; /油箱容积 public: void initialize(int in_mpg,int in_fuel); int get_mpg(voi

9、d); float get_fuel(void); float travel_distance(void); #endif /Auto.cpp #include“auto.h“ void automobile:initialize(int in_mpg,float in fuel) miles_per_gallon=in_mpg; fuel_capacity=in_fuel; ) int automobile:get_mpg() /提供一辆特定汽车每加仑公里数 return miles per_gallon; float automobile:get_fuel() /提供油箱容积 return

10、 fuel_capacity; float automobile:travel_distance() return (2) /car.h #ifndef CAR_H #define CAR_H #include“auto.h“ class car: (3) int Total_doors; public: void initialize(int in_mpg,float in_fuel,int doors=4); int doors(void); ; #endif /car.cpp #include“car.h“ void car:initialize(int in_mpg,float in_

11、fuel,int door) Total_doors=door; miles_per_galion=in_mpg; fuel_capacity=in_fuel; int car:doors(void) return Total doors; /Allauto.cpp #include #include“auto.h“ #include“car.h“ int main() car sedan; sedan.initialize(24, 20.0, 4); tout “The sedan can travel“ (4) “miles.n“; cout “The sedan has“ (5) “do

12、ors.n“; return 0; 6 阅读以下说明和 Java程序,将应填入 (n)处的字句写在对应栏内。 说明 下面程序实现十进制向其它进制的转换。 Java程序 ClasS Node int data; Node next; class Transform private Node top; public void print() Node p; while(top!=null) P=top; if(P.data 9) System.out.print(char)(P.data+55); else System.out.print(p.data); top=p.next; public

13、void Trans(int d,int i)/d为数字 ;i为进制 int m; (1) n=false; Node p; while(d 0) (2); d=d/i; p=new Node(); if( (3) ) p.data=m; (4); top=P; n=true; else p.data=m; (5); top=P; 软件水平考试(初级)程序员下午(应用技术)模拟试卷 39 答案与解析 1 【正确答案】 (1)1, n-1, 1; (2) aj; (3) aj ai; (4) ai+1=ai; (5) ai+1=a; 【试题解析】 本题目考查流程图。 题目中已经给出了直接插入法排

14、序的算法,由于该算法是从数组中第二个数起,取出并与前面的数进行排序,直到数组中最后一个数排序完成,所以,循环变量初值为 1,终值为 N-1,增量为 1,按照题目中要求的格式,则为 “1, N-1, 1”。 由题目中的算法可知,我们要将取出来的数同排在其前面的数做比较,并插入,所以,首先要把取出来的数赋给一个变量,即 (2)填入 “aj”。然后从第 j-1个数开始,如果 ai aj,那么我们就将 aiN移一位,以便空出一个位 置来插入 aj,所以 (4)填入 “ai+1=ai”这样一直进行到 ai aj或者 i 0,这时,我们就找到了 aj要插入的位置,可以将 aj插入,即 (3)填入 “aj

15、ai”, (5)填入“ai+1=a”。 2 【正确答案】 (1) yes 或 yes=1或 yes !=0 (2) a/ii=a或 a%i=0或 !(a%i) (3) arrk!=arrj (4) arr+k (5) k+1或 +k 【试题解析】 对于函数 1,增加了一个判断的标志 yes,开始进入素数判别循 环时置yes=1,则 (1)应填 “yes”或 “yes=1”或 “yes !=0”;一旦数 n能被某个不等于零的真因子整除,退出循环,则 (2)应填 “a/ii=a”或 “a%i=0” 或 “!(a%i)” 。 对于函数 2,用k 记录数组 arr中不同元素的个数,同时设置工作指针 j

16、,将 arrj与已得到的互不相同元素的最后一个元素进行比较,若不相等,则将其作为已比较的互不相同元素的最后一个元素,所以 (3)填 “arrk!=artj”, (4)填 “arr+k”。最后返回互不相同的元素个数 k+1,即 (5)填 “k+1”或 “+k”。 3 【正确答案】 (1) top+ (2) q=q- 1child (3) while(top 0) (4) stackltop1=q (5) top1 0 【试题解析】 本题本质上是对二叉树的先序遍历进行考核,但不是简单地进行先序遍历,而是仅遍历从根结点到给定的结点 p为止。本题采用非递归算法来实现,其主要思想是: 初始化栈: 根结点

17、进栈,栈不空则循环执行以下步骤直到发现结点 p; 当前结点不为空且不为 P进栈; 栈顶为 p,则结束,否则转 ; 若右子 树访问过,则栈顶的右孩子为当前结点,转 。 扫描左孩子,当相应的结点不为 P时进栈,所以 (1)填 “top+”, (2)填 “q=q-1child”。在栈不为空时则一直在 do while循环中查找,因此 (3)填 “while(top0)”。在进行反向打印准备时,读取 stacktop的信息放到 stackltop中,即 (4)填“stackltop1=q”。打印栈中所有内容,所以 (5)填 “top1 0”。 4 【正确答案】 (1) cardi0 (2) retur

18、n-1 (3) cardk2+3 (4) cardk1+=money (5) cardk2 【试题解析】 按照程序的说明,函数 Locate是对用户输入的卡号进行比较,当找到对应的卡号,则返回持卡者对应的记录号,否则返回 -1。 cardi0中存放着第 i张卡的卡号,所以 (1)填 “cardi0”, (2)填 “return-1”。当找到持卡者的卡号为k 时,由于 cardk2存放实际的交易次数,因此这次发生的交易数应该存放的位置为 cardkcardk2+3,即 (3)填 “cardk2+3”。在交易发生后,存款额要发生改变,即 (4)填 “cardk1+=money”,同时其交易次数增

19、1, (5)填 “cardk2”。 5 【正确答案】 (1) protected (2) fuel_capacity/miles_per_gallon (3) public automobile (4) sedan.travel_distance() (5) sedan.doors() 【试题解析】 本题以 C+语言为载体,考查面向对象程序设 计中的关于类的几个概念,包括继承以及基类和派生类中函数的调用。 本题的功能是定义了一个 automobile基类,并由其派生出了 car类,主函数中定义了 car的对象,并通过该对象调用了基类和派生类中的函数。 首先,通过整体阅读该题目,我们发现类 ca

20、r中的 initialize函数直接对基类中的两个成员函数赋值,所以基类中的两个成员函数应该是被保护的, (1)处应填入“protected”。在基类中提供了这样一个成员函数 travel_distance,它返回的是该交通工具的可能行驶距离,根据题目中给 出的数据, (2)处应填入“fuel_capacity/miles_per_gallon”。 其次,本题还考查了派生类继承的方式,由于在主函数中直接通过 car的对象调用了基类的公有函数,所以派生方式应为公有, (3)处应填入 “public automobile”。 最后,通过定义 car的对象 sedan,分别调用了基类和派生类中的一个

21、函数, (4)处应填入 “sedan.travel_distance()”, (5)处应填入 “sedan.doors()”。 6 【正确答案】 (1) boolean (2) m=d%i (3) !n (4) top- next=null (5) p- next=top 【试题解析】 本题考查 Java编程,主要考查了链表的使用。 所有的问题只出在函数 Trans 中,它的功能是完成将十进制数 d 转换为任意进制i的数,并存在数组中。变量 n 被赋值为 false,说明 n是布尔型变量, Java中布尔型变量关键字为 boolean。故 (1)应填 “boolean”。函数中首先定义了一个指向链表结点的指针 (实为链栈 ),然后开始进行转换,进制转换应该是一个很常见的问题,就是不 断地求模运算,所以 (2)处应填入 “m=d%i” 。然后,我们要把求模的结果保存到链栈中。对于链栈,第一个结点比较特殊,需要特殊处理,从 if块中的语句 “n=true”可知,此处正是处理第一个结点的特殊情况,故 (3)应填 “!n”, (4)处应填入 “top- next=null”。这里采用的链栈,所以 (5)处应填入 “p- next=top”。

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