2021年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、1.菲波那契数列

菲波那契数列是指这样的数列:

数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。

给出一个正整数a,要求菲波那契数列中第a个数对10000取模的结果是多少。

时间限制:1000

内存限制:65536

输入

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整

数a(1=a=1000000)。

输出

n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数对

10000取模得到的结果。

样例输入

4

5

2

19

1

样例输出

5

1

4181

1

参考答案:

解析:【喵呜刷题小喵解析】首先,我们需要读取输入的测试数据的组数n,然后

对于每组测试数据,我们读取正整数a。对于每个a,我们创建一个列表fib,初始化

为[0,1,

1],分别表示数列的前三个数。然后,我们循环计算数列中的下一个数,直到计算

出第a个数。具体来说,我们从第3个数开始循环,每次将当前数列的倒数第二个数

和倒数第三个数相加,得到新的数,然后将新的数添加到数列的末尾。最后,我们

输出第a个数对10000取模的结果。注意,由于a的值可能很大,我们需要使用列表

来存储数列,而不是使用递归的方式计算数列。否则,递归的方式可能会导致栈溢

出。另外,由于每次计算下一个数都需要对10000取模,我们可以直接在计算过程

中取模,避免在循环结束后再次取模。

2、2.广义格雷码

在一组数的编码中,若任意两个相邻(首尾也视为相邻)的代码只有一位二进制数

不同,则称这种编码为格雷码。如四位格雷码:

0000、0001、0011、0010、0110、0111、0101、0100、1100、1101、1111、1110、

1010、1011、1001、1000

现在将格雷码扩展至其他进制,仍然是相邻两个数只能有一位不同。输入两个正整

数n,m分别表示长度和进制,每行输出一个n位m进制数,输出任意一种编码即可。

(提示:putchar输出效率更高)

时间限制:1000

内存限制:65536

输入

一行,两个整数n,m。其中2≤n≤12,2≤m≤10且mn≤500000

输出

任意一种编码方案,每个编码一行。相邻两个编码相差一位。第一个编码和最后一

个编码算相邻

样例输入

23

样例输出

00

10

20

21

01

11

12

22

02

参考答案:

解析:【喵呜刷题小喵解析】1.**解题思路**:*

首先,我们需要理解格雷码的性质:任意两个相邻的代码只有一位二进制数不同。

*格雷码可以通过递归的方式生成,从二进制格雷码扩展到其他进制的格雷码。*

对于m进制的格雷码,我们可以先生成一个m位的二进制格雷码,然后将其转换为

m进制。2.**代码解析**:*`scanf(%d%d,n,

m);`:从标准输入读取n和m的值。*`inta[m][m],idx=

0;`:定义一个m*m的二维数组a用于存储m进制的格雷码,idx用于记录当前生成的

格雷码的位置。*`for(inti=0;im;i++){...}`:初始化m进制的格雷码表。*`for

(inti=0;i(1n);i++){...}`:生成n位的m进制格雷码。*`intnum=

0;`:用于存储当前生成的m进制格雷码。*`for(intj=0;jn;j++){...

}`:将二进制格雷码转换为m进制格雷码。*`printf(%0*d\n,n,

num);`:输出生成的m进制格雷码。这段代码的主要思想是先生成m进制的二进制

格雷码,然后将其转换为m进制格雷码,满足了题目要求的“任意两个相邻的代码

只有一位二进制数不同”。

3、3.课程冲突

小A修了n门课程,第i门课程是从第ai天一直上到第bi天。

定义两门课程的冲突程度为:有几天是这两门课程都要上的。

例如a1=1,b1=3,a2=2,b2=4时,这两门课的冲突程度为2。

现在你需要求的是这n门课中冲突程度最大的两门课的冲突程度。

时间限制:1000

内存限制:65536

输入

第一行一个正整数n表示课程数量。接下来n行,每行两个正整数ai,bi。2≤n≤

1000,1≤ai≤bi≤1000。

输出

输出一个整数表示最大的冲

文档评论(0)

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

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

1亿VIP精品文档

相关文档