程序员历年答案分析2005---2011年全部详细答案(10)

时间:2025-04-19

的计算,也就是0与1进行异或运算,所以(5)空的值为1.

●试题二

【试题答案】(1)m!=n (2)return m 或return n (3)i<8 (4)k*10 (5)p++或p=p+1

【考查知识点】本题考查的是算法设计及C语言程序的编写。

【解析】函数2.1通过m和n连续相减,获得两者的最大公约数。所以,(1)空要填循环终

止条件,即连续相减到m=n时,得到最大公约数,所以此空应填“m!=n”。(2)空要填函数

返回值,即最大公约数,此时m=n时,所以此空填return m或return n均可。

函数2.2要完成逐个字符的十进制整数转化,其中变量i用来保存字符的个数;变量k是十

进制整数的中间值和最终结果,*p是一个初始只想字符串首地址的指针。该函数通过一个

while循环来完成。结束的条件有两个:一是到达字符串的结尾符“0”;二是超出题中要求

8位时,停止循环,所以(3)空应填“i<8”。由于是逐个字符的处理,故(5)空应填“p++”。

最后让我们来看(4)空,在生成十进制整数过程中,经过分析,我们发现,先生成的十进

制数字放在高位上,后生成的放在低位上,故每次都需要将前一个数字左移一位,即需要将

该位数字乘以10,所以(4)空应填k*10。

●试题三

【试题答案】(1)p=root->rch(2)pre=root(3)p->lch(4)pre(5)pre->lch

【考查知识点】本题考查的是数据结构二叉树及其程序编写。

【解析】由题意的,如果root指向二叉树的根结点,那么就找出该结点的右子树上的“最

左下”节点*p;经分析发现,root指向的就是根节点,接着判断root指向的是否为空,然

后要找到根结点的右子树,所以(1)空填“p=root->rch”。

然后继续判断根结点的右子树是否为空,如果是返回NULL,反之对指针pre赋初值,

他将保存指向p指针的父节点的指针,完成“从树中删除以*p为根的子树”这一操作。显

然,此时pre的初值为root,即(2)空填“pre=root”。

接下来要做的就是寻找子树,直到左子树为空停止,如不为空,则p指向的结点作为父

节点,即pre=p,p重新指向左子树,所以(3)空填“p->lch”。

寻找“最左下”节点过程结束后,进行删除工作,即如果root右子树根处无左子树,

那么它本身就是“最左下”点,此时需要对它进行删除,也就是说pre仍指向root,故(4)

空填“pre”。

最后让我们来看(5)空,当右子树根有左子树时,要将“最左下”节点为根的子树删

除,即只需要将“最左下”节点的父节点pre的左子树lch指向NULL即可,所以(5)空应

填“pre->lch”。

●试题四

【试题答案】(1)j=0(2)k<R(3)i+t(4)c==R(5)j++

【考查知识点】本题考查的是经典算法即程序编写。

【解析】根据题干的叙述,该函数要完成的功能是:N*N的座位中,在部分座位已被出售的

前提下,找出一个R*R的空座位的方阵。找到则函数返回值为1,并计算该方针左上角元素

的行号和列号;反之,函数返回值为0。

该函数由两个循环结构来实现。对于外层for循环,完成排查找,它的功能是对第0

排到第N-R+1排进行查找,其中,变量N为排数,变量R为要查找的方阵的排数,很明

显,在N-R+1排之后是不可能找到R*R的方阵的。内层while循环,完成列查找,它

的功能是从第0列到N-R+1列进行查找,所以(1)空应该给循环变量j赋初值0,即

“j=0”。

Fro(k=0;__(2)__&&a[i][j+k]==0;k++);/*查找第2排连续的R个空座位*/

接下来的for循环,它的功能是在第i排查找是否存在连续的R座位,因此,循环继

程序员历年答案分析2005---2011年全部详细答案(10).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219