2016年11月 程序员 下午题答案及解析.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、

试题(15分)

阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。

【说明】

设有整数数组A[1:N](N1),其元素有正有负。下面的流程图在该数组中寻找

连续排列的若干个元素,使其和达到最大值,并输出其起始下标K、元素个数L

以及最大的和值M。

例如,若数组元素依次为3,-6,2,4,-2,3,-

1,则输出K=3,L=4,M=7。该流程图中考察了A[1:N]中所有从下标i到下标j(

j≥i)的各元素之和S,

并动态地记录其最大值M。

【流程图】

注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为:

循环控制变量=初值,终值

参考答案:

1、j=i+1

2、S+A[j]

3、S

4、j-i+1

5、S

解析:

根据说明和流程图的要求,我们需要寻找数组A[1:N]

中连续排列的若干个元素,使其和达到最大值。

1.从流程图中的顺序可以看出,我们首先初始化

j=i+1,这样我们可以从当前位置开始计算连续子数组的和。

2.在每次循环中,我们需要计算从i到j的子数组的和,即S+A[j]。这里A[j]

是当前位置的元素值。

3.为了找到最大的和值M,我们需要动态地记录其最大值

M。因此,此处应该是判断当前的和S是否大于之前的最大和值

M,而不是简单的比较S的正负。如果S大于M,则更新M的值。

4.当我们找到一段连续的子数组的和达到最大值时,我们需要输出其起始下标

K和元素个数L。在流程图中,通过计算j-i+1

可以得到当前连续子数组的个数L。

5.最后,当我们完成所有的比较和计算后,输出最大的和值

M。由于整个流程中都在动态地记录最大的和值

M,因此这一步是合理的。

2、

试题二(共15分)

阅读以下代码,回答问题:1至问题3,将解答填入答题纸的对应栏内。

【代码1】

#includestdio.h

voidswap(intx,inty)

{

inttmp=x;x=y;y=tmp;

}

intmaim()

{

inta=3,b=7;

printf(al=%db1=%d\n,a,b);Swap(a,b);

Printf(a2=%db2=%d\n”,a,b);return0;

}

【代码2】

#includestdio.h

#defineSPACE¨//空格字符Intmain()

{

charstr[128]=”Nothingisimpossible!“;inti,num=0,wordMark=0;

for(i=0;str[i];i++)

If(str[i]=SPACE)

WordMark=0;

else

If(wordMark=0){wordMark=1;

Mun++;

}

Printf(“%d/n”,num)retun0;

}

【代码3】

#includestdio.h

#defineSPACE“//空格字符

intcountStrs(char*);intmain()

{

charstr[128]=Nothingisimpossible!;Printf(‘%d/n,(1)(str))

retum0;

}

intcountStrs(char*p)

{

intnum=0,wordMark=0;for(;(2);p++){

If((3)=SPACE)

wordMark=0;

else

if(!wordMark){wordMark=1;

++mun

}

}

retum(4);

}

【问题1】(4分)

写出代码1运行后的输出结果。

【问题2】(3分)

写出代码2运行后的输出结果。

【问题3】(8分)

代码3的功能与代码2完全相同,请补充

3中的空缺,将解答写入答题纸的对应栏内。

参考答案:

问题1

a1=3

b1=7

a2=7

b2=3

问题2

3

问题3

(1)Cou

文档评论(0)

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

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

1亿VIP精品文档

相关文档