一、单选题
1、下列运算符中,优先级最高的是( )。
A /
B %
C **
D +
2、下列数据类型中,哪一个是不可变的?( )
A 列表
B 元组
C 字典
D 集合
3、执行以下程序后,输出的结果是( )。
L = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,9 ]
print ( L [1 : 4] )
A [ 1 , 2 , 3 ]
B [ 1 , 2 , 3 ,4 ]
C [ 2 , 3 ]
D [ 2 , 3 ,4 ]
4、下列选项描述正确的是( )。
A continue语句可以结束整个循环的执行
B break和continue语句只能用在循环中
C 要从多层循环嵌套中退出时,只能使用goto语句
D break和continue语句在循环体内的作用相同
5、以下关于函数参数描述正确的是( )。
A 调用函数时,按参数名称传递参数,需要按照定义时的顺序进行传递
B 函数在定义时,可选参数的位置可以在参数列表中任意位置
C 函数在定义时,可以不指定可选参数默认值,在调用函数时候参入参数
D 实参和形参存储在各自的内存空间中,所以是两个不相关的独立变量
二、实操题
6、编程实现:
输入一个整数N(-100≤N≤100),输出N-5的结果。
例如:N = 8,8-5的结果为3(3 = 8-5)。
输入描述:
输入一个整数N(-100≤N≤100)
输出描述:
输出一个整数,表示N-5的结果
样例输入:
8
样例输出:
3
参考答案:对于给定的整数N(-100≤N≤100),我们需要输出N-5的结果。
7、编程实现:
给定一个正整数N(2≤N≤1000),请将N拆分成两个正整数的和,且两个正整数相差最小。
例如:
N = 4,拆分成两个相差最小正整数为2和2;
N = 5,拆分成两个相差最小正整数为2和3。
输入描述:
输入一个正整数N(2≤N≤1000)
输出描述:
第一行输出一个正整数,表示拆分后的两正整数中较小的那个(相同大小输出任意一个)
第二行输出一个正整数,表示拆分后的两正整数中较大的那个(相同大小输出任意一个)
样例输入:
5
样例输出:
2 3
参考答案:br />```pythonn = int(input())mid = n // 2if n % 2 == 0:print(mid)print(mid)else:print(mid)print(mid + 1)```
8、编程实现:
某商店部分产品搞活动,每买两件商品只收取最高价格商品的费用,另一件商品不收取费用(相同价格只收取一件商品费用)。小明选购了N件(2≤N≤1000,N为偶数)商品,且已知每件商品的价格,他会每次结算两件商品。请帮助小明计算出N件商品最少花费多少钱。
例如:N = 6,6件商品价格分别为32、56、92、45、12、98,可结算3次,98和92的商品一起结算,56和45的商品一起结算,32和12的商品一起结算,共花费186(186=98+56+32)。
输入描述:
第一行输入一个正整数N(2≤N≤1000,N为偶数),表示小明购买了商品数
第二行输入N个正整数(1≤正整数≤100),表示每件商品的价格,正整数之间以一个英文逗号隔开
输出描述:
输出一个整数,表示小明购买N件商品最少需要花费的钱数
样例输入:
6 32,56,92,45,12,98
样例输出:
186
参考答案:br />```pythondef min_cost(N, prices):prices.sort(reverse=True)cost = 0for i in range(0, N, 2):if i < N:cost += prices[i]if i + 1 < N:cost += prices[i + 1]return costN = int(input().strip())prices = list(map(int, input().strip().split(',')))print(min_cost(N, prices))```
9、编程实现:
有一个N*M的矩形拼图积木板(1≤N≤M≤15,N和M 为正整数),和若干个1*1、2*2、3*3……、10*10的正方形积木。使用任意积木将积木板铺满(不能有空隙),请问最少需要几块积木。
例如:N=3,M=4,最少需要4块积木(1块3*3,3块1*1)。
输入描述:
输入两个正整数N和M(1≤N≤M≤15),表示矩形积木板的长和宽,正整数之间以一个空格隔开
输出描述:
输出一个整数,表示铺满积木板最少需要的积木数量
样例输入:
3 4
样例输出:
4
参考答案:```pythondef min_blocks(N, M):dp = [[0] * (M + 1) for _ in range(N + 1)]for i in range(1, N + 1):for j in range(1, M + 1):dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + 1for k in range(1, min(i, j) + 1):dp[i][j] = min(dp[i][j], dp[i - k][j - k] + (k * k - k + 1) // 2)return dp[N][M]N, M = map(int, input().split())print(min_blocks(N, M))```
10、编程实现:
小明有一张矩形彩纸,他将彩纸均匀的画了N*M个小方格,有些小方格中被他画了小草,有些小方格是空白的,现小明想找出一片空白的方格,并且这片空白方格是最大的矩形。
给出N和M的值,及每个方格的状态,被画小草的小方格用数字1表示,空白小方格用数字0表示,请帮小明找出最大矩形,并输出最大矩形由多少个小方格组成。
例如:N=4,M=5,
输入描述:
第一行输入两个正整数N和M(2≤N≤100,2≤M≤100),分别表示矩形彩纸方格的行数和列数,两个正整数之间以一个空格隔开
第二行开始,输入N行,每行M个正整数(正整数为1或者0),1表示小草,0表示空白,正整数之间一个空格隔开
输出描述:
输出一个整数,表示最大矩形由多少个小方格组成
样例输入:
4 5 1 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0
样例输出:
6
参考答案:```pythondef largestRectangleArea(heights):stack = []max_area = 0i = 0while i < len(heights):if not stack or heights[i] >= heights[stack[-1]]:stack.append(i)i += 1else:top = stack.pop()area = heights[top] * (len(stack) if not stack else heights[stack[-1]] - heights[top] + 1)max_area = max(max_area, area)i = top + 1while stack:top = stack.pop()area = heights[top] * (len(stack) if not stack else heights[stack[-1]] - heights[top] + 1)max_area = max(max_area, area)return max_areaN, M = map(int, input().split())grid = []for i in range(N):row = list(map(int, input().split()))grid.append(row)max_area = 0for j in range(M):heights = [0] * Nfor i in range(N):heights[i] = grid[i][j]area = largestRectangleArea(heights)max_area = max(max_area, area)print(max_area)```
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!