2017年5月 程序员 下午题答案及解析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、问答题

1、试题一(共20分)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

设有二维整数数组(矩阵)A[1:m,1:n],其每行元素从左至右是递增的,每列元素从

上到下是递增的。以下流程图旨在该矩阵中需找与给定整数X

相等的数。如果找不到则输出“false”;只要找到一个(可能有多个)就输出“True”以

及该元素的下标i和j(注意数组元素的下标从1开始)。

例如,在如下矩阵中查找整数8,则输出伟:True,4,1

2469

45910

671012

891113

流程图中采用的算法如下:从矩阵的右上角元素开始,按照一定的路线逐个取元素

与给定整数X

进行比较(必要时向左走一步或向下走一步取下一个元素),直到找到相等的数或

超出矩阵范围(找不到)。

【流程图】

【问题】该算法的时间复杂数是()

供选择答案:A.O(1)B.O(m+n)C.(m*n)D,O(m²+n²)

参考答案:

(1)n

(2)j-1→j

(3)i+1→I

(4)j

(5)C

解析:

该算法的时间复杂度取决于矩阵的大小(行数m和列数n)。在最坏情况下,可能

需要遍历整个矩阵的每个元素,即需要进行mn次比较操作。因此,该算法的时间

复杂度是O(mn)。

2、试题二(共15分)

阅读下列说明和C函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。

【说明】

函数isLegal(char*ipaddr)的功能是判断以点分十进制数表示的iPV4

地址是否合法。参数ipadddr给出表示iPV4

地址的字符串的首地址,串中仅含数字字符和“.”。若iPV4

地址合法则返回1,否则反馈

0.判定伟合法的条件是:每个十进制数的值位于整数区间[0,25],两个相邻的树之

间用“.”分隔,共4个数、3个“.”。;例如,192.168.0.15、1.0.0.1

是合法的,192.168.1.256、1.1..1是不合法的。

【函数】

intisLegal(char*ipaddr)

intflag;

intcurVal;//curVal表示分析出的一个十进制数

intdecNum=0,dotNum=0;//decNum用于记录十进制数的个数

//dotNum用户记录点的个数

Char*p=()

for(;*p;p++)﹛

curVal=0;flag=0

While(isdigit(*p))﹛//判断是否伟数字字符

CurVal=()+*p-′0′;

()

flag=1;

if(curVal255)﹛

return0;

if(flag)﹛

()

﹜if(*p==′.′)

dotNum++;

if()﹛

return1;

return0;

参考答案:

(1)ipaddr

(2)curval*10

(3)p++

(4)decNum++

(5)decNum==4dotNum==3

解析:

这是一个关于判断IPv4地址合法性的函数。根据题目描述和函数结构,我们可以逐

步分析并填补空白。

1.(1)处需要填写的是函数参数ipaddr的地址,因为我们需要遍历这个地址指向

的字符串。

2.(2)处表示在读取数字字符后,需要将当前值乘以10以便与前面的数字组合。

例如,当读取到19时,第一次乘完后是19,第二次乘完后是190。所以填写curVa

l*=10。

3.(3)处是为了移动到字符串的下一个字符,所以填写p++。

4.(4)处是为了记录十进制数的个数,每找到一个完整的十进制数就增加一次计

数,所以填写decNum++。

5.(5)处是判断条件,IPv4地址由4个十进制数组成,并且由3个点分隔,所以填

写decNum==4dotNum==3。

函数的流程大致是这样的:首先检查输入字符串的第一个字符是否为数字,如果是

则继续读取并与之前的数字组合,同时增加十进制数的计数。如果遇到一个点.

,则增加点的计数。最后,如果找到了四个十进制数和三个点,并且所有的十进制

数都在0到255之间,那么返回1表示IP地址合法,否则返回0表示不合法。

3、【试题三】

阅读下列说明和C函数,填补C

函数中的空缺,将解答填入

文档评论(0)

喵呜刷题 + 关注
实名认证
文档贡献者

来喵呜刷题,完成你的职业蜕变!

1亿VIP精品文档

相关文档