- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
一、编程题
1、36.字符加密。将大写字母逐个按其ASCII值转换为7位二进制数,并在最左边补
0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数
。如明文是CIE,加密后的密文是434945。编写的python程序如下,完善划线
处的代码。
参考答案:
略
解析:【喵呜刷题小喵解析】本题要求将大写字母按照特定规则进行加密,即将大
写字母的ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位
二进制数,然后将8位二进制数每四位转为十六进制数。根据题目要求,我们可以
编写一个Python函数`encrypt`,输入为字符串`s`,输出为加密后的字符串。在函数
内部,我们遍历输入字符串中的每个字符,如果该字符是大写字母,则执行以下操
作:1.将该字符的ASCII值转换为二进制数,得到7位二进制数。2.
在最左边补0,使得每个字母转换为8位二进制数。3.
将8位二进制数每四位转为十六进制数,得到对应的十六进制数。4.
将十六进制数添加到结果字符串中。如果字符不是大写字母,则直接添加到结果字
符串中。最后,返回加密后的字符串。注意,Python中,`bin()`函数可以将整数
转换为二进制数,`int()`函数可以将二进制数转换为整数,`hex()`函数可以将整数
转换为十六进制数。`zfill()`函数可以在字符串最左边补0,使得字符串长度达到指
定长度。
2、37.辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的
代码。
defgcd(a,b):
m=a%b
ifm==0:
return ①
else:
a=b
②
return③
print(gcd(12,18))
参考答案:
略
解析:【喵呜刷题小喵解析】:辗转相除法(又称欧几里得算法)是一种求两个正
整数最大公约数的方法。它的基本思想是:用较大的数除以较小的数,再用出现的
余数去除较小的数,如此反复,直到余数为零为止,此时较小的数即为两数的最大
公约数。在给出的代码中,函数`gcd(a,
b)`首先计算`a`除以`b`的余数`m`。如果`m`为0,说明`b`是`a`的倍数,所以`b`就是`
a`和`b`的最大公约数,直接返回`b`。如果`m`不为0,说明`a`和`b`不是倍数关系,
那么将`b`赋值给`a`,将`m`赋值给`b`,然后递归调用`gcd(a,
b)`,直到余数为0为止。根据以上分析,我们可以完善代码中的横线处:1.
①处应返回`b`,表示当余数为0时,`b`即为最大公约数。2.
②处应将`b`赋值给`a`,`m`赋值给`b`,表示进入下一次递归。3.③处应返回`gcd(a,
b)`,表示递归调用`gcd`函数。
3、38.下面的程序运用分治算法寻找列表中的最大值。请将空格补全代码。
参考答案:
略
解析:【喵呜刷题小喵解析】这个题目要求使用分治算法来寻找列表中的最大值。
分治算法是一种将大问题分解为小问题来求解的策略。在这个问题中,我们首先将
列表一分为二,然后递归地找出每一半列表中的最大值,最后返回这两个最大值中
的较大者。根据题目,我们需要补全一个Python函数,该函数接收一个列表作为输
入,并返回列表中的最大值。函数名定义为`find_max`。在函数中,我们首先检查
列表的长度。如果列表长度为0或1,则直接返回列表中的元素。否则,我们将列表
一分为二,递归地调用`find_max`函数来找出每一半列表中的最大值,并返回这两
个最大值中的较大者。具体的实现中,我们首先计算列表的中点`mid`,然后使用
切片操作将列表分为左右两部分。接着,我们递归地调用`find_max`函数来找出左
右两部分的最大值,分别存储`left_max`和`right_max`变量中。最后,我们使用`
max`函数返回两个最大值中的较大者。以上就是补全后的Python代码。通过递归地
分治,我们可以在对数时间复杂度内找到列表中的最大值。
原创力文档


文档评论(0)