2018年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、阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏

[说明]

下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子

串的长度L及其在各字符串中的起始位置(L=0时不存在公共字串)。例如,字符串T

helightisnotbrighttonight与Tonightthelightisnotbright的最长公共子串为he

lightisnotbright,长度为22,起始位置分别为2和10。

设A[1:M]表示由M个字符A[1],A[2],…,A[M]依次组成的字符串;B[1:N]表示由

N个字符B[1],B[2],…,B[N]依次组成的字符串,M≥N≥1。

本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在A、B字

符串中查找是否存在长度为L的公共子串,即在A、B字符串中分别顺序取出长度为

L的子串后,调用过程判断两个长度为L的指定字符串是否完全相同(该过程的流程

略)。

[流程图]

参考答案:

N或rnin(M,N)

M-L+1

N-L+1

L-1

L,I,J

解析:

本题考查对算法流程图的理解和绘制能力。本题的算法用于查找两个字符串中的最

长公共子串,并输出其长度及在各自字符串中的起始位置。

根据说明和流程图的分析,我们可以得出以下解释:

1.由于字符串A和B的长度分别为M和N,且M≥N≥1,所以它们的公共子串长

度L必然小于或等于N。因此,初始时,应将min(M,N)或N送L,表示开始

查找的最大可能的公共子串长度。所以(1)处填写N或min(M,N)。

2.对于A串,长度为L的子串的起始下标可以从1开始直到M-

L+1。因此,(2)处应填写M-L+1或其等价形式。

3.对于B串,同样的逻辑,长度为L的子串的起始下标可以从1开始直到N-

L+1。所以,(3)处应填写N-L+1或其等价形式。

4.如果两个子串比较的结果不匹配,则需要继续执行循环。此时需要减小L的

值,所以(4)处应填写L-1。

5.如果找到了匹配的子串,即找到了最长公共子串,此时应输出公共子串的长

度L以及在A、B串中的起始位置I和J。所以,(5)处应填写L,I,J(顺序不

分先后)。

综上所述,答案应为:N或min(M,N);M-L+1;N-L+1;L-1;L,I,J。

2、阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏

内。

[说明1]

函数f(doubleeps)的功能是:利用公式计算并返回π的近似值。

[C函数1]

doublef(double

eps)

{

doublen=1.0,

s=1.0,term=1.0,pi=0.0;

while(

fabs(term)>=eps

){

pi=pi+term;

n=______;

s=______;

term=s/n;

}

returnpi*4;

}

[说明2]

函数fun(char

*str)的功能是:自左至右顺序取出非空字符串str中的数字字符,形成一个十进制整

数(最多8位)。例如,若str中的字符串为iyt?67kp

f3g8d5.j4ia2e3p12,则函数返回值

[C函数2]

longfun(char

*str)

{

inti=0;

longnum:0;

char*p=str;

while(i<8______){

if(

*p>=0

*p<=9

){

num=______+*p-

0;

++i;

}

______;

}

returnnum;

}

参考答案:

n+2

-s或-1*s

*p!=\0或等价形式

num*10或等价形式

p++或等价形式

解析:

对于函数f(double

eps),其功能是计算π的近似值。根据题目中的

文档评论(0)

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

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

1亿VIP精品文档

相关文档