2023年09月C语言二级答案及解析.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、数组指定部分逆序重放

将一个数组中的前k项按逆序重新存放。例如,将数组8,6,5,4,1前3项逆序重放得5

,6,8,4,1。

时间限制:1000

内存限制:65536

输入

输入为两行:第一行两个整数,以空格分隔,分别为数组元素的个数n(1n

100)以及指定的k(1=k=n)。第二行是n个整数,每两个整数之间用空格分隔。

输出

输出为一行:输出按题目要求逆序后数组的整数,每两个整数之间用空格分隔。

样例输入

53

86541

样例输出

56841

参考答案:

includebits/stdc++.h

usingnamespacestd;

inta[105];

intmain()

{

intn,k;

cinnk;

for(inti=1;i=n;i++)

{

cina[i];

}

for(inti=k;i=1;i–)

{

couta[i];

}

for(inti=k+1;i=n;i++)

{

couta[i];

}

return0;

}

解析:【喵呜刷题小喵解析】:首先,我们定义了一个数组`a`,用于存储输入的

整数。然后,我们从标准输入读取数组的大小`n`和需要逆序的项数`k`。接下来,

我们使用一个循环来读取数组中的每个元素,并将其存储在数组`a`中。然后,我

们使用两个循环来输出逆序后的数组。第一个循环从`k-

1`开始,向前遍历数组,并将每个元素输出到标准输出。第二个循环从`k`开始,向

后遍历数组,并将每个元素输出到标准输出。注意,数组索引从0开始,因此在读

取和输出数组元素时,我们需要将索引减1或加1。另外,题目中要求输出逆序后的

数组,因此在输出时,我们需要将前`k`个元素逆序输出。在C++中,我们可以使用

循环来实现逆序输出,也可以使用`reverse`函数来逆序数组,但在这个问题中,使

用循环更为简单和直观。

2、序列排序

对于给定的正整数序列,按照每个数的各位数和从大到小排序,各位数和相同的按

照本身大小排序,大的在前,小的在后。

时间限制:1000

内存限制:65536

输入

第一行1个整数n,表示序列的大小。(0n≤1000)

第二行n个正整数,表示序列的每个数,每个数不大于100000000。

输出

输出按照题目要求排序后的序列

样例输入

6

17269138810

样例输出

88926171310

参考答案:

includebits/stdc++.h

usingnamespacestd;

structnum{

inta;

intg;

}s[100];

boolcmp(numa,numb){

if(a.gb.g)

returna.g;

if(a.gb.g)

returnb.g;

if(a.ab.a)

returnb.a;

returna.a;

}

intmain()

{

intn;

cinn;

for(inti=1;i=n;i++){

cins[i].a;

s[i].g=s[i].a%10;

}

sort(s+1,s+1+n,cmp);

for(inti=1;i=n;i++){

couts[i].a;

}

return0;

解析:【喵呜刷题小喵解析】:本题要求我们对一个正整数序列进行排序,排序的

规则是:先按照每个数的各位数之和从大到小排序,如果各位数之和相同,则按照

数字本身的大小排序,大的在前,小的在后。我们可以使用一个结构体来存储每个

数字和其各位数之和。然后在比较函数中,我们先比较各位数之和,如果相同,再

比较数字本身。最后使用`sort`函数对序列进行排序。在这个程序中,`s`数组用于

存储输入的数字和它们的各位数之和,`cmp`函数用于比较两个数字的大小,`main

`函数用于读取输入并进行排序和输出。但是,程序中有几个错误:1.`if(a.g

b.g)`应该返回`false`,而不是`b.g`。3.

`if(a.ab.a)`应该返回`false`,而不是`b.a`。正确的比较函数应该是这样的:```cppbo

olcmp(numa,numb){if(a.gb.g)returntrue;if(a.gb.a)returnfalse;return

true;}```此外,数组下标从1开始是不符合C++编程习惯的,应该从0开始。

文档评论(0)

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

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

1亿VIP精品文档

相关文档