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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、2009年下半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1)一 (5),将解答填入答题纸的对应栏内。【说明】 求连续函数 f(x)的根 (方程 f(x)=0的解 )的最简单方法是二分法。为此,首先需要在若干点上检查函数值的符号,如果发现 f(a)与 f(b)符号相反(a 2 阅读以下说明和 c函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明1】 函数 Counter(int n, int w)的功能是计算整数 n的二进制表示形式中 1的个数,同时用数组 w记录该二进制数中 1所在位置的权。例如,十进制数

2、22的二进制表示为 10110。对于该二进制数, l的个数为 3,在 wO中存入 2(即 21)、 w1中存人 4(即 22)、 w2中存入 16(即 24)。 【 C函数 1】 int counter(int n, int w)( int i=0, k=1 ; while( (1) ) if(n 2)wi+ =k; n=n 2; (2) ; ) return i; ) 【说明2】 函数 smove(int A, int n)的功能是将数组中所有 的奇数都放到所有偶数之前。其过程为:设置数组元素下标索引 i(初值为 0)和 j(初值为 n-1),从数组的两端开始检查元素的奇偶性。若 Ai、 A

3、j都是奇数,则从前往后找出一个偶数,再与 Aj进行交换;若 Ai、 Aj都是偶数,则从后往前找出一个奇数,再与 Ai进行交换;若 Ai是偶数而 Aj是奇数,则交换两者,直到将所有的奇数都排在所有偶数之前为止。 【 c函数 2】 void Smove(int A, in七 n)( int temp, i=0, j=n-1 ; if(n 3 阅读以下说明、 C函数 和问题,将解答写入答题纸的对应栏内。 【说明 1】 函数 test_fl(int m, im n)对整数 m、 n进行某种运算后返回一个整数值。 【 c函数 1】 int test_f1 (int m, int n) int k; k=

4、mn?m: n; for(; (k m! =O) I I (k n! =0); k+); return k; ) 【问题 1】 (5分 )(1)请写出发生函数调用 test_fl(9, 6)时,函数的返回值; (2)请说明函数 test_f1的功能。 【说明 2】 设在某 c系统中为每 个字符分配 1个字节,为每个指针分配 4个字节, sizeof(x)计算为 x分配的字节数。 函数 test_12Q用于测试并输出该 c系统为某些数据分配的字节数。 【 c函数 2】 void test_f2() char str =“NewWorld”; char*p=str; char i= 0; VOid

5、*ptr=malloc(50); printf(” d t”, sizeof(str); printf(“ d n”, sizeof(p), printf(” d t”, sizeof(i); printf(” d n”, sizeof(ptr); 【问题 2】 (4分 ) 请写出函数 test_f2()的运行结果。 【说明 3】 函数 test_f3(char S)的功能是:将给定字符串 S中的所有空格字符删除后形成的串保存在字符数组 tstr中 (串 S的内容不变 ),并返回结果串的首地址。 【 C函数 3】 char*test_f3(const char s)( char tstr50=

6、( 0); unslgned int i, k=0; for(i=0; i(strlen(s); i+) if(si!=)tstrk+=si; return tStr ; ) 【问题 3】 (6分 ) 函数 test_f3()对返回值的处理有缺陷,请指出该缺陷并说明修改方法。 4 阅读以下说明和 C函数,将解答填入答题纸的对应栏内。 【说明】 函数 del_substr(S, T)的功能是从头至尾扫描字符串 S,删除其中与字符串 T相同的所有子串,其处理过程为:首先从串 S的第一个字符开始查找子串 T,若找到,则将后面的字符向前移动将子串 T覆盖掉,然后继续查找子串 T,否则从串 S的第二个字

7、符开始查找,依此 类推,重复该过程,直到串 S的结尾为止。该函数中字符串的存储类型 SString定义如下: typedef struct char*ch; *串空间的首地址 * int length; *串长 * SString; 【 c函数】 void del_substr(SString*S, SString T)( int i, j ; if(S-lengthlength(T length) return; i=0: *i为串 S中字符的下标 * for(; ) J=0 ; *j为串 T中字符的下标 * while(ilength jchi=T chj) i+; J+; ) else

8、i= (1) ; j=0; *i值回退,为继续查找 T做准备 * ) ) if( (2) )( *在 S中找到与 T相同的子串 * i= (3 ) ; *计算 S 中子串 T的起始下标 * for(k=i+T 1ength; klength; k+) *通过覆盖子串 T进行删除 * S-ch (4) =S-chk; S-)length= (5; ) ; *更新 S的长度 * ) else break; *串 S中不存在子串 T* ) ) 5 阅读以下说明和 C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 已知类 LinkedList表示列表类,该类具有四个方法: addE

9、lement()、 lastElement()、 numberOfElement()以及 removeLastElement()。四个方法的含义分别为: void addElement(Object):在列表尾部添加一个对象; Object lastElement():返回列表尾部对象; int numberOfElement():返回列表中对象个数; void removeLastElement():删除列表尾部的对象。 现需要借助 LinkedList 来实现一个 Stack栈类, c+代码 1和 c+代码 2分别采用继承和组合的方式实现。 【 C+代码 1】 Class Stack: p

10、ubliC LinkedList public: void push(Object.o)(addElement(o); ); 压栈 Object peek()return (1); ); 获取栈顶元素 bool isEmpty()- 判断栈是否为空 return numberOfElement() =0 ; ); Object pop() 弹栈 Object o=lastElement(); (2) ; return o; ; : 【 c+代码 2】 Class Stack private: (3) ; publiC: void push(Object O) 压栈 list addElemen

11、t(o); ); ObjeCt peek() 获取栈顶元素 return list (4); ); bool isEmpty() 判断栈是否为空 return 1ist numberOfElement()=0; ); Object pop() 弹栈 Object O=list lastElement(); 1ist removeLastElemen七 (); return 0; ); ); 【问题】 若类 LinkedList新增加了一个公有的方法 removeElement(int index),用于删除列表中第 index个元素,则在用继承和组合两种实现栈类 Stack的方式中,哪种方式下

12、Stack对象可访问方法 removeElement(int index)? (5) (A继承 B组合 ) 6 阅读以下说明和 Java代码,将应填入 (n) 处的字句 写在答题纸的对应栏内。 【说明】 已知类 LinkedList表示列表类,该类具有四个方法: addElement()、 lastElemcnt()、 numberOfElement()以及 removeLastElement()。四个方法的含义分别为: void addElement(Object):在列表尾部添加一个对象; Object lastElement():返回列表尾部对象; int numberOfElement

13、():返回列表中对象个数; void removeLastElement():删除列表尾部 的对象。 现需要借助 LinkedList 来实现一个 Stack栈类, Java代码 1和 Java代码 2分别采用继承和组合的方式实现。 【 Java代码 1】 public class Stack extends LinkedList public void push(Object o) 压栈 addElement(O); ) public Object peek() 获取栈顶元素 return (1 ) ; ) public boolean isEmpty()( 判断栈是否为空 return n

14、umberOfElement()=0 ; ) public Object pop()( 弹栈 Object o=lastElement(); (2); return o; ) ) 【 Java代码 2】 public clasB Stack private ( 3) ; public Stack() list=new LinkedList(); public void push(Object o) 1ist addElement(o); public Object peek() 获取栈顶元素 return list (2) ; public boolean isEmpty() t,1断栈是否为

15、空 return 1ist numberOfElement()=0; public Object pop()( 弹栈 Object o=list 1astElement(); 1ist removeLastElement(); return o; 【问题】 若类 LinkedList新增加了一个公有的方法 removeElement(int index),用于删除列表中第 index个元素,则在用继承和组合两种实现栈类 Stack的方式中,哪种方式下Stack对象可访问方法 removeElement(int index)? (5) (A继承 B组合 ) 2009年下半年软件水平考试(初级)程

16、序员下午(应用技术)试题真题试卷答案与解析 1 【正确答案】 (1)(a+b) 2 (2)f(x) (3)fabs(y) (4)b (5)a 【 试题解析】 根据 “说明 ”中对二分法的说明,我们知道当 f(a)*f(b)0”。每执行一次“n=n 2”,二进制的数就增加一位,因为要保存二进制数中 l 所在位置的权,所以 k 的值就需要乘以 2来记录当前位置的权,故空 (2)的答案为 “k=k * 2”或者“k*=2”。空 (3)是满足条件 Ai和 Aj都是奇数时的处理过程,从 “说明 2”中我们知道 这时候需要 “从前往后找出一个偶数 ”,所以空 (3)的答案为 “i+”,向后寻找偶数;空 (

17、4)是满足条件 Ai和 Aj都是偶数时的操作,这时需要 “从后往前找出一个奇数 ”,所以空 (4)的答案为 “j-”,从后面向前寻找奇数;满足空 (5)的条件之后的操作是将 Ai和 Aj进行交换,从 “若 Ai是偶数而 Aj是奇数,则交换两者 ”这句话,可以看出满足将 Ai和 Aj进行交换的条件是 Ai是偶数而 Aj是奇数,即空(5)的答案为 “(Ai 2=0) &(Aj 2=1)”。 3 【正确答案 】 问题 l: (1)18 (2)求 m和 n的最小公倍数 问题 2: 9 4 1 4 问题 3: 局部数组存放字符串作为函数的返回值是不可取的。应使用 malloc 动态分配函数来进行分配空间

18、,存储字符串结果,返回其首指针。 【试题解析】 问题 l: 阅读代码,我们可以看出 k 在的三行取得的是 m和 n 中的最大值, for循环的循环主体为空,可是却要满足 “(k m!=O)I I(k n!=0)”的条件才能退出循环,即要求 k既是 m的倍数也是 n的倍数,而且 k 是通过自增得到的,即遇到第一个满足条件的值就立即退出循 环返回 k 值,所以 k 是 m和 n 的最小公倍数。调用 test_f1(9, 6)时,返回 9和 6的最小公倍数 18。 问题 2: 9 4 1 4 str是 char型数组, sizeof(str)球的是整个数组的长度,数组中总共保存了 8个字符和 1个结

19、束符 O,所以长度为 9; p是 char-型的指针, sizeof(p)求的是指针的长度,而不是 p所指向的字符串的长度,指针的长度是固定的 4个字节; i是char型的字符,系统为每个字符分配一个字节,故长度为 1; ptr是类型为空的指针,虽然类型为空但只能说明 ptr所指向的对象的类型, ptr自身是一个指针,是有固定长度 4的。 问题 3: tstr是一个 char型数组,但它是在函数 test_f3中定义的局部变量,在函数调用结束时内存空间就会被释放掉,返回的指针可能为空,也有可能是乱码,正确的修改方法就是使用 malloc函数来动态地申请内存,然后返回这片内存的首指针,这样就会避

20、免函数返回时内存被释放掉。另外需要注意的是,本大题在一开始就指明是 C函数,所以这里不可以使用 new来动态申请内存。 4 【正确答案】 (1)i-j+l (2)j=T length (3)i-T 1ength (4)i+(5)S-length-T length 【试题解析】 空 (1)处主要实现的功能是当串 s和串 T中有字母不相同时,串 s下标需要返回至上一次串 s和串 T字符不同的位置,为继续查找串 T做准备,串 s的下标 i返回的位置是串 T 的下标走过的长度,所以空 (1)处应填 “i-j+1”。因为 j表示串 s与串 T比较中串 T 的下标,如果 j的值等于串 T的长度,则表示串

21、s中有与串 T相同的子串,所以空 (2)处应该填写 j=T.length。因为串 S和串 T 在比较时,若字符一样, i和 j同时加 1,所以,串 S 在子串 T 的起始下标,应 该为 s的当前下标 i减去串 T 的长度,即 i-T length,所以空 (3)处应填 “i-T length”。删除与串 T 相同的子串的方法是将后面的元素向前移动进行覆盖,应该从串 s在子串 T 的起始下标 i开始,将后面的元素依次向前移动,最终覆盖子串,所以空 (4)处填 i+。每当删除一个与串 T 相同的子串,串 s的长度就减少 T length,所以空 (5)处填 S-length-T length。 5

22、 【正确答案】 (1)lastElement: () (2)removeL,astElement() (3)LinkedList list(4)lastElement() (5)A 【试题解析】 根据代码注释,程序代码中空 (1)处用来获取栈顶元素,而父类L inkedlist提供的成员函数 lastElement()可以实现此功能,因此此处调用该函数即可,所以空 (1)处填写 lastElement ()。空 (2)处主要执行 “弹栈 ”操作,根据 Object pop()函数的要求,元素弹出栈主要有两个步骤,一是获取栈顶元素,即返回队列尾部对象;二是删除栈顶元素,即删除队列尾部的对象,调用

23、removeLastElement()函数即可实现,所以空 (2)处应该填 “removeLast。Element()”。空 (3)处要求定义一个对象,再根据后面程序代码的提示,可以知道该对象名字为 list,类型为 LinkedList,所以空 (3)处应填 ”LinkedList list”。空 (4)处用于获取栈顶元素,即返回队列尾部的对象,类 LinkedlList 的 lastElement()函数即可实现该功能,所以空 (4)处应填 “lastElement()”。类的继承是指子类的对象拥有对父类的成员和属性进行访问的权限,通过继承可以使用父类提供 的removeElement()

24、方法,类的组合描述的是一个类内嵌其他类的对象作为成员的情况,描述的是一种包含和被包含的关系,所以通过组合 Stack 对象并不能访问IinkedList 提供的方法 removeElement(int index),所以空 (5)应填 A。 6 【正确答案】 (1)lastElement() (2)removeLast Element() (3)LinkedList list(4)lastElement() (5)A 【试题解析】 根据代码注释,程序代码中空 (1)处用来获取栈顶元素,而父类LinkedIjst提供的成员函数。 lastElement()可以实现此功能,因此此处调用该函数即可,

25、所以空 (1)处填写 lastElement()。空 (2)处主要执行 “弹栈 ”操作,根据 Object pop()函数的要求,元素弹出栈主要有两个步骤,一是获取栈顶元素,即返回队列尾部对象;二是删除栈顶元素,即删除队列尾部的对象,调用removeLastElement()函数即可实现,所以空 (2)处应该填 “removeLastElemeNt()”。空 (3)处要求定义一个对象,再根据后面 程序代码的提示,可以知道该对象名字为list,类型为 IinkedIjst,所以空 (3)处应填 “LinkedList list”。空 (4)处用于获取栈顶元素,即返回队列尾部的对象,类 LinkedList 的 lastElement()函数即可实现该功能,所以空 (4)处应填 “lastElement()”。类的继承是指子类的对象拥有对父类的成员和属性进行访问的权限,通过继承可以使用父类提供的 removeElement()方法,类的组合描述的是一个类内嵌其他类的对象作为成员的情况,描述的是一种包含和被包含的关系,所以通 过组合 Stack 对象并不能访问 LinkedList 提供的方法removeElement(int index),所以空 (5)应填 A。

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