一、实操题
1、编程实现
输入一个字符串,如果该字符串以er、ly或者ing后缀结尾的,则删除该字符串后缀,并输出删除后的字符串,否者将原字符串输出。
输入描述
输入一个字符串
输出描述
输出删除后的字符串或原字符串
样例输入:
driver
样例输出:
driv
参考答案:br />根据题目要求,我们需要编写一个程序,输入一个字符串,如果该字符串以er、ly或者ing后缀结尾的,则删除该字符串后缀,并输出删除后的字符串,否者将原字符串输出。以下是一个Python语言的实现:```pythondef remove_suffix(s):if s.endswith('er') or s.endswith('ly') or s.endswith('ing'):return s[:-2]else:return s# 测试s = input("请输入一个字符串:")print(remove_suffix(s))```
解析:【喵呜刷题小喵解析】
这个程序首先定义了一个函数`remove_suffix`,它接受一个字符串`s`作为输入。然后,它使用Python的`endswith`方法检查字符串是否以'er'、'ly'或'ing'结尾。如果是,它返回一个新的字符串,该字符串是原字符串去掉最后两个字符(即去掉'er'、'ly'或'ing')的结果。如果字符串不以这三个后缀结尾,函数就返回原字符串。
然后,程序通过`input`函数获取用户输入的字符串,并调用`remove_suffix`函数处理这个字符串。最后,程序使用`print`函数输出处理后的字符串。
这样,用户输入的字符串如果以'er'、'ly'或'ing'结尾,程序就会输出去掉后缀的字符串;否则,程序就会输出原字符串。
2、编程实现
用户输入一个正整致a作为如图半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积,如图所示:
提示信息
三角形面积公式:S=(ah)/2(公式中a为三角形的底边,h为底边所对应的高)
圆形面积公式:S=лr^2(公式中r为园的半径,л=3.14)
已知条件:
1)半圆的直径和等腰直角三角形直角边长度相同;
2)三角形与半圆部分重叠;
3)三角形ABC为等腰直角三角形;
输入描述
一个正整数(作为半圆的直径)
输出描述
图形阴影面积(保留2位小数)
样例输入
10
样例输出
25.00
参考答案:输入一个正整数,比如10,计算得出阴影部分面积为25.00。
解析:【喵呜刷题小喵解析】:
题目要求编程实现用户输入一个正整致a作为半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积。
根据题目提示,我们知道三角形面积公式为S=(ah)/2,其中a为三角形的底边,h为底边所对应的高。而圆形面积公式为S=лr^2,其中r为园的半径,л为圆周率,这里取值为3.14。
由题意可知,三角形ABC为等腰直角三角形,其底边和高均为a,所以三角形面积为0.5*a*a。
半圆的半径为a/2,所以半圆面积为0.5*л*(a/2)^2。
由于三角形与半圆部分重叠,所以阴影部分面积等于三角形面积减去半圆面积,即0.5*a*a - 0.5*л*(a/2)^2。
将a的值代入公式中,即可求出阴影部分的面积,注意结果需要保留2位小数。
3、背景信息
因子:因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15,那么1和15也是15的因子。
1,3,5,15这四个因子是15的所有因子。
完数:如果一个数等于不含它本身的其他因子之和,则称该数为“完数”。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。
编程实现
输入一个正整数N,输出小于N的所有完数及个数(个数前加“*”,例如:*2)。
输入描述
输入一个正整数N
输出描述
输出小于N的所有完数及个数
样例输入
100
样例输出
6 28 *2
参考答案:```pythondef find_perfect_numbers(N):perfect_numbers = []count = 0for i in range(1, N):factors = set()for j in range(1, i):if i % j == 0:factors.add(j)if sum(factors) == i and i != sum(factors):perfect_numbers.append(i)count += 1return perfect_numbers, f"*count"N = int(input())print(*find_perfect_numbers(N))```
解析:【喵呜刷题小喵解析】:
根据题目要求,我们需要编写一个函数`find_perfect_numbers`,该函数接受一个正整数N作为输入,并返回小于N的所有完数及其个数。
在函数中,我们首先定义一个空列表`perfect_numbers`来保存找到的完数,并初始化一个计数器`count`为0。
然后,我们使用一个for循环遍历从1到N-1的所有整数。对于每个整数i,我们计算其所有因子(包括它本身)并将它们存储在集合`factors`中。如果`factors`中所有元素的和等于i,并且i不等于`factors`中所有元素的和(排除i本身),则i是一个完数,我们将其添加到`perfect_numbers`列表中,并将`count`增加1。
最后,我们返回`perfect_numbers`列表和格式为"*{count}"的字符串。
在主程序中,我们读取用户输入的正整数N,并调用`find_perfect_numbers`函数。然后,我们使用print函数将找到的完数及其个数打印出来。
例如,当输入为100时,输出为6和28,以及个数2,表示小于100的完数有2个,分别是6和28。
4、背景信息
在生活中,为保证信息安全,我们会把重要的信息进行加密后再发送给对方,对方需要通过相同的策略对信息进行解密,才能了解到传递的信息,我们一般把加密前的信息称为原文,将加密后的信息称为密文。
有这样一种加密的策略:第一次加密策略是将明文中字母a加密为01,b加密为02,c加密为03,以此类推,x加密为24,y加密为25,z加密为26,空格不加密;然后在第一次加密的基础上进行二次加密,第二次加密策略是将数字0加密为27,数字1加密为28,以此类推,数字8加密为35,数字9加密为36,空格则加密为00。
编程实现
请输入一段明文,按照上述加密策略,输出对应密文。
输入描述
输入一段明文(只包含小写字母和空格)
输出描述
按照上述加密策略,输出对应密文
样例输入
ab c
样例输出
27282729002730
参考答案:br />根据给定的加密策略,输入样例"ab c"的加密过程如下:1. 第一次加密:* a -> 01* b -> 02* c -> 03* 空格 -> 空格(空格不加密)所以第一次加密后的明文为:0102032. 第二次加密:* 0 -> 27* 1 -> 28* 2 -> 29* 3 -> 30* 空格 -> 00所以第二次加密后的密文为:27282729002730因此,输出对应的密文为:27282729002730
解析:【喵呜刷题小喵解析】
根据题目描述,加密策略分为两步:
1. 第一次加密:将明文中的小写字母a到z分别加密为01到26,空格不加密。
2. 第二次加密:在第一次加密的基础上,将数字0到9分别加密为27到36,空格加密为00。
按照这种策略,我们可以将输入的明文进行两次加密,得到对应的密文。
在样例输入"ab c"中,首先进行第一次加密,得到"010203";然后再进行第二次加密,得到"27282729002730"。因此,输出的密文为"27282729002730"。
5、下图给出了公历2020年1月25日~2021年1月20日之间,二十四个节气的名称,公历具体日期及汉语拼音的缩写。
输入描述
输入一个日期,介于公历2020年1月25日~2021年1月20日之间。例如:2020年5月2日写为“2020*05*02”。
输出描述
如果当天恰好是一个节气,输出这个节气的汉语拼音缩写,如当天不是节气则输出下一个节气的汉语拼音缩写。
样例输入1:
2020*06*21
样例输出1:
XZ
样例输出1说明:6月21日是夏至,汉语拼音缩写是"XZ"
样例输入2:
2020*07*04
样例输出2:
XS
样例输出2说明:7月4日之后的节气是小暑,汉语拼音缩写是"XS"
参考答案:20200620前节气是芒种,缩写为"MK";下一个节气是夏至,缩写为"XZ"。因为输入日期是2020年6月21日,所以输出夏至的拼音缩写"XZ"。
解析:【喵呜刷题小喵解析】:首先,我们需要确定输入日期(2020年6月21日)在二十四节气中的位置。根据题目给出的信息,我们可以知道在2020年6月20日之前的节气是芒种(MK),而6月21日之后的节气是夏至(XZ)。由于题目要求输出当天或下一个节气的拼音缩写,因此应该输出夏至的拼音缩写"XZ"。
6、编程实现
现有一个容器,其容量为v(0<v<1001,正整数),同时有n个物品(0<n<=30),每个物品体积大小不同(正整数)。
在n个物品中,任取若干个装入容器内,使容器的剩余空间为最小。
输入描述
输入容器大小V(0<V<1001,正整数)输入物品数量n(0<n<=30)输入n个物品的不同大小(正整数)
输出描述
剩余最小空间值
样例输入
100 4 50 20 45 19
说明:“100”输入的是容器大小V;“4”输入的是物品数量n;“50"“20"“45,“19”输入的是4个物品体积。
样例输出
5
说明:“5”是容器大小减掉4个物体不同组合后与容器大小最为接近的一组值。(物品组合个数不限制,只找最接近容器大小的值)
参考答案:br />为了解决这个问题,我们可以使用贪心算法。首先,我们将物品按照体积大小进行排序,然后从体积最小的物品开始,尽可能多地放入容器中,直到无法再放入为止。最后,返回剩余的空间大小。
解析:【喵呜刷题小喵解析】
这个问题可以使用贪心算法来解决。贪心算法是一种在每一步选择中都采取当前情况下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
具体步骤如下:
1. 对输入的物品按照体积大小进行排序。
2. 从体积最小的物品开始,尽可能多地放入容器中,直到无法再放入为止。
3. 返回剩余的空间大小。
这种方法可以保证在每一步都做出当前情况下的最优选择,从而得到最接近容器大小的值。对于本题来说,贪心算法是可行的,因为每次选择体积最小的物品放入容器中,可以使剩余空间最小。
在编程实现时,我们可以使用Python语言来实现这个算法。首先,定义一个列表来存储输入的物品,然后对列表进行排序。接着,使用一个循环来遍历列表中的物品,每次尽可能多地放入容器中,并更新剩余空间大小。最后,返回剩余空间大小即可。
具体的代码实现可以参考下面的示例代码:
```python
def min_space(V, n, weights):
# 对物品进行排序
weights.sort()
space_left = V
for i in range(n):
if space_left >= weights[i]:
space_left -= weights[i]
else:
break
return space_left
# 测试样例
V = 100
n = 4
weights = [50, 20, 45, 19]
print(min_space(V, n, weights)) # 输出 5
```
在这个示例代码中,我们定义了一个函数`min_space`,它接受三个参数:容器大小`V`、物品数量`n`和物品体积列表`weights`。函数首先对物品体积列表进行排序,然后使用循环尽可能多地放入物品,并更新剩余空间大小。最后,返回剩余空间大小。在测试样例中,我们调用`min_space`函数,传入容器大小、物品数量和物品体积列表,并输出剩余空间大小。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!