内容正文:
第2章 算法与程序实现
一、选择题
1.下列语句中能实现变量 a 和 b 数值交换的有( )
①a,b=b,a ②a=b;b=a ③t=a;b=a;a=t ④a=a+b;b=a-b;a=a-b
A.①③ B.①④ C.①②④ D.①③④
2.以下哪个问题可以用枚举法来求解( )
A.找出100以内同时被5和7整除的所有数
B.给定直角三角形两条边的长,求第三条边的长
C.求两个数的积
D.给定半径,求圆的面积
3.在 Python中,函数len("ab"*2)的返回值是( )
A."2ab" B."abab" C.2 D.4
4.下列Python表达式的结果为True的是( )
A.3+6>=8 and 'do' in 'good' B.int(23.6)%12==0 C.'123'*2<'200' D.round(3.67,1)+22//3<=10.6
5.若people=["he","she","it"],feel={1:"love",2:"like",3:"hate"},则表达式feel[2]+people[2]的值是( )
A.likeit B.hateit C.likeshe D.hateshe
6.某APP为鼓励用户积极签到,制定积分签到政策,用户第一次连续签到可以得到1分,第二次连续签到得2分,第三次连续签到得到4分,接下来,每次得分分别为8,16,32……。若签到中断,则前面签到所得积分清空,重新从第一天开始积分。当用户积分达到10000分时,可以兑换相应奖品,小明想得到的毛绒娃娃需要20000积分,请设计算法帮小明计算,需要至少连续签到多少天才能拿到毛绒娃娃。解决此问题的算法流程图如右图所示,请为虚线框选择合适的流程图基本图形并为①处选择合适代码( )
A. sum_jf=sum_jf+jf B. sum_jf=sum_jf+jf
C. sum_jf=jf+jf D. sum_jf=jf+jf
7.某算法部分流程图如图所示,在流程图空白处填入一组代码,使输出结果sum与表达式“2-4+6-8+…-100”值相同的是( )
A.①i=i+1 ②k=-k*2 B.①k=-k ②i=i+2 C.①i=i+2 ②k=-k D.①k=-k*2 ②i=i+2
8.已知 nums 列表中含有 5 个不相同的数字,该流程图的输出结果可能是( )
A.1 B.111 C.011 D.001
9.某Python程序代码如下:
import random
n=input("请输入一串字符")
f=[0]*128
for i in n:
f[ord(i)]+=1
for i in n:
if f[ord(i)]==random.randint(0,1):
print(i,end="")
若输出结果为xyz3,则输入可能是( )
A.yazabcx3 B.auxYZ33 C.axaybbzc3 D.xyaaxbbz3c
10.某算法的部分流程图如图所示,执行这部分流程,若输出t为2,则输入s的值可能是( )
A."abbaa" B."aabba" C."bbaaa" D."abaab"
11.在编程开发“智能停车场车位引导系统”的过程中,检查程序代码能否正确运行属于( )
A.调试程序 B.分析问题 C.设计算法 D.编写程序
12.有五副不同颜色的手套(共 10 只手套,每副手套左右手各1只),一次性从中取6只手套,请问恰好能配成两副手套的不同取法有__________种。( )
A.120 B.180 C.150 D.30
13.用算法流程图描述“高考总分达到 488,输出平行一段;高考总分达到 274,输出平行二段”的问题,用 t 表示高考总分。下列选项不正确的是( )
A. B.
C. D.
14.计算下列各式中S1、S2、S3的值,能设计算法求解的是( )
S1=1+2+3+…+100 S2=1+2+3+… S3=1+2+3+…+n(n≥1且S3<1000)
A.S1,S2 B.S1,S3 C.S2,S3 D.S1,S2,S3
15.某算法的部分流程图如图所示,执行这部分流程后,变量a的值是( )
A.-3 B.6 C.-5 D.11
16.有如下 Python 程序段:
s=input("请输入:")
res=0
for i in s:
if 'A'<=i<='Z':
res+=1
elif '0'<=i<='9':
res*=2
break
print(res)
执行该程序段,输入“The Asian Games 2023”,执行该程序段后,输出结果为()
A.12 B.8 C.6 D.0
17.某超市部分商品的价格用 Python 存储在列表prices 中,prices=[{"土豆":5,"黄瓜":6,"豆角":4},{"书包":40, "笔记本":7,"铅笔":2 },{"果冻":12,"薯片":10,"酸奶":14}],若要访问果冻的价格,则正确的表达式为( )
A.prices[2]["果冻"] B.prices[3]["果冻"] C.prices[2][1] D.prices[3][0]
二、填空题
18.小明想编写程序实现以下功能:输入正整数n,并计算1到n的累加值,即1+2+…+n。程序流程图如图所示
请根据题意,补全流程图的① 和② 处。
19.用Python编写程序完成横线处求解鸡兔同笼问题,已知有56只头,160只脚,求鸡兔各有多少只?
定义变量i为鸡的只数
for i in range(1,56,1):
:
print(i)
print((160-i∗2)/4)
20.Python语句list(range(1,10,3))执行结果为 。
21.在C++中,若要定义一个名为“Student”的类,并包含姓名和年龄两个私有成员变量,可以使用以下语句: 。
22.编程中, 是一种将代码组织成模块的方式,有助于代码的重用和维护。
23.写出该式子的表达式:
三、判断题
24.如果在函数中有语句 return 3,那么该函数一定会返回整数3。( )
25.表达式list('[1, 2, 3]')的值是[1, 2, 3]。( )
26.计算机无法解决“打印所有偶数”的问题,其主要原因是解决该问题的算法违背了算法特征中的有穷性。( )
27.“无论算法有多么复杂,都必须在有限步骤之后结束并终止运行”,这句话表明了算法的有穷性。( )
28.循环语句可以嵌套使用。( )
四、操作题
29.已知某校高一年级第一、 二学期期中、 期末考试成绩存储在“exam.xlsx”中,如图1所示。教务管理员对历次考试中七门选考科目考试成绩(赋分)进行处理,本着分数优先原则,将平均分最高的两门科目作为备选科目,为高一学生选课提供参考。
图1
(1)若某生考试缺考则该科目分数标记为0,已知总分列是所有考试科目分数总和,请对数据进行整理,剔除缺考考生数据,划线处能实现该功能的语句是 (单选,填字母:A.df[df.总分>0] / B.df.总分>0 / C.df[总分>0] / D.df[df.总分]>0)
import pandas as pd
df=pd. read_excel("exam.xlsx")
df=
(2)计算每个同学的历次考试的平均成绩
gf=
若gf对象输出后图2所示,请在划线处选择合适的代码 (单选,填字母)
图2
A.df.groupby("姓名",as_index=False).mean() B.df.groupby("姓名").mean()
C.df.sort_values("姓名",ascending=False).mean() D.df.groupby("班级",as_index=False).mean()
(3)计算每个同学的两门优势学科,请在划线①②处完善代码。
km=gf. columns[4:11]
gf.insert(12,"优势学科","")#在总分列后插入新的一列,列标题名为“优势学科”,初始值为""
for i in gf.index:
subject1=subject2=""
max1=max2=0
for j in range(0,len(km)):
cj=gf.at[i,① ]
if cj>max1:
②
subject1=km[j]
max2=max1
max1=cj
elif cj>max2:
subject2=km[j]
max2=cj
gf.at[i,"优势学科"]=subject1+subject2
图3
(4)为了反映该校选考科目成绩整体情况,教务管理员对df对象处理后进行了可视化处理,制作图表如图3所示,关于该图表下列说法正确的是 (多选,填字母)
A.使用第三方库 matplotlib 可以实现此数据可视化效果
B.从全校平均成绩看,该校技术、地理两门科目成绩具有相对优势
C.若对df对象按照“总分”列进行降序排序后再进行相同处理将影响图表效果
D.若删除“姓名”列数据将会影响图表效果
30.用 Python编辑器打开文件夹“exam\ks06”下的文件“g01.py”,进行以下操作并保存。
(1)删除<1>、<2>、<3>,在该处填写代码,完善程序,程序实现的功能是:输出如下图所示的结果。(请不要更改、删除其他代码)
第1行:3÷4=0.75
第2行:4÷4=1.0
第3行:5÷4=1.25
第4行:6÷4=1.5
第5行:7÷4=1.75
(2)编写完成后保存文件,并关闭应用软件。
for i in range (<1> ):
print ("第",<2> ,"行:", end="")
print (i+2,"÷",4 ,"=",(<3> ) /4)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python基础。若a值为10,b值为13,则a=b;b=a,变量a,b值均为13;t=a;b=a;a=t,变量a,b值均为10。故正确答案为:选项B。
2.A
【详解】本题考查的是枚举法相关知识。枚举算法通过列举问题所有可能的解,并逐一检查每个解是否满足问题的条件。故选项A正确。
3.D
【详解】本题考查Python基础。len函数可以返回字符型数据长度。排除选项A、B。由于字符"ab"*2运算的结果是"abab",再通过函数len,可以得到字符长度为4。故选择D。
4.C
【详解】本题考查Python表达式相关内容。A选项,3+6>=8 and 'do' in 'good'-->True and False-->False。B选项,int(23.6)%12==0-->23%12==0-->11==0-->False。C选项,'123'*2<'200'-->'123123'<'200'-->True。D选项,round(3.67,1)+22//3<=10.6-->3.7+7<=10.6-->10.7<=10.6-->False。故本题答案是C选项。
5.A
【详解】本题考查Python相关知识。feel[2]获取feel字典中键为2的元素,即 "like"。people[2]获取people列表中的第三个元素,即 "it"。将这二个部分拼接起来,得到 "likeit"。故答案为A选项。
6.A
【详解】本题考查的是流程图识读。菱形是条件判断框,平行四边形是数据输入/输出框,圆角矩形是开始/结束框,矩形是数据处理框。虚线框中应使用菱形框;用变量sum_if累计积分,jf表示每次得到的积分,故此处填sum_jf←sum_jf+jf或sum_jf=sum_jf+jf或sum_jf+=jf。故选A。
7.B
【详解】本题考查的是流程图识读。输出结果sum与表达式“2-4+6-8+…-100”值相同的,判断条件为i<=100,故i=i+2要在sum=sum+i*k的后;要实现正负的切换,通过k=-k实现。故选B。
8.D
【详解】本题考查流程图。初始时low为0,high为列表长度减1。在循环中,通过计算中间索引mid,比较nums[mid]与nums[high]的大小。如果nums[mid]<nums[high],则将high更新为mid,并在res中添加“0”;否则将low更新为mid+1,并添加“1”。由于nums中含有5个不相同数字,在进行二分查找过程中,根据数字大小关系会不断更新low和high,从而导致res中形成不同的“0”和“1”组合,所以输出结果可能是各种由“0”和“1”组成的字符串。若nums=[2,1,3,5,4],则程序输出res的值为001。故答案为:D。
9.C
【详解】本题考查random模块的综合应用;本题采用了桶计数的方式统计128个ASC11字符,每个字符出现的次数,再用循环再次遍历输入的字符串,若该串中的某个字符出现次数为1次,则有可能输出这个字符(生成的随机数0时则无法输出),所以可以知道,输出结果中的每个字符一定只出现了1次,在C项中,xyz3这四个字符均只出现了1次,故选C。
10.A
【详解】本题考查算法流程图相关内容。分析流程图可知,该算法功能是统计字符串中连续出现的字符的个数,若后继字符不同,t重置为1,再从该字符开始。A选项中,“a”为最后连续出现的字符,t值为2;B选项中,“a”为最后出现的字符,不连续,t重置为1;C选项中,“a”为最后连续出现的字符,t值为3;D选项中,“b”为最后一个出现的字符,不连续,t重置为1。故本题答案为A选项。
11.A
【详解】本题考查程序调试。在编程开发“智能停车场车位引导系统”的过程中,检查程序代码能否正确运行属于调试程序。故选A。
12.A
【详解】本题考查是解决问题的方法。先从5双手套中任选两双,有C25种取法;再从其余手套中任选2只,有C26种,其中选到一双同色手套的选法为3种。 故总的选法数为C25(C26-3)=120种。故选A。
13.A
【详解】本题考查算法流程图相关内容。分析四个流程图,可知:BCD选项的流程图可以正确描述“高考总分达到488,输出平行一段;高考总分达到 274,输出平行二段”的问题;A选项,若t>=274不成立,再去判断t>=488存在逻辑错误,不能正确描述题目要求。故本题答案是A选项。
14.B
【详解】本题考查算法相关内容。S1符合算法有穷性特点,可以求解。S2不符合算法有穷性特点,不能求解。S3符合算法有穷性特点,可以求解。故本题答案是B选项。
15.B
【详解】本题考查算法流程图相关内容。a=1,b=1,i=1
第一次循环,满足i<=10,a=a+b*i=2,b=-b=-1,i=i+2=3;
第二次循环,满足i<=10,a=a+b*i=-1,b=-b=1,i=i+2=5;
第三次循环,满足i<=10,a=a+b*i=4,b=-b=-1,i=i+2=7;
第四次循环,满足i<=10,a=a+b*i=-3,b=-b=1,i=i+2=9;
第五次循环,满足i<=10,a=a+b*i=6,b=-b=-1,i=i+2=11,循环结束。变量a的值是6,故选B。
16.C
【详解】本题主要考查Python程序设计相关内容。通过分析代码段,可以得知,该代码段功能:依次取字符串s中的字符,若是大写字母则res=res+1,若是数字则res=res*2,且退出循环的执行,输出res。输入“The Asian Games 2023”,则在遇到"2"之前,共有3个大写字母,3*2得6,故本题答案是C选项。
17.A
【详解】本题考查表达式。给定的 prices 列表是一个包含了三个字典的列表,每个字典代表了一组商品和价格的对应关系。所以,要访问果冻的价格,正确的表达式是:codeprices[2]["果冻"]这表示从 prices 列表中选择第三个字典(索引是2),然后从这个字典中选择键为 "果冻" 的值,即果冻的价格。故答案为A选项。
18. s=0 s=s+i
【详解】本题考查算法设计。①计算1到n的累加值,初始化累加和变量s=0。②累加遍历出的值i到s,故s=s+i。
19.if i ∗ 2+(56-i)∗ 4==160
【详解】本题考查Python程序设计相关内容。本题描述的是鸡兔同笼问题,假设鸡的数量为i,则兔的数量为56-i,两者需要满足i ∗ 2+(56-i)∗ 4==160,才符合题目要求,程序段缺少该条件的判断,故本题答案是:if i ∗ 2+(56-i)∗ 4==160。
20.[1,4,7]
【详解】本题考查Python。range函数的语法是range(start,stop,step),它生成一个从start开始、到stop(不包括stop)结束、步长为step的整数序列。对于list(range(1,10,3)),参数为1(起始值)、10(终止值,不包括)、3(步长),生成的序列为1,4,7。因此,执行该语句的结果是[1,4,7]。故答案为:[1,4,7]。
21.class Student { private: string name; int age; };
【详解】本题考查计算机编程语言。
在C++中,定义类基本语法格式:
class ClassName(类名) {
public: 公共成员函数和变量
private: 私有成员函数和变量
protected: 受保护的成员函数和变量
};
若要定义一个名为“Student”的类,并包含姓名和年龄两个私有成员变量,可以使用以下语句:class Student { private: string name; int age; };。故正确答案为:class Student { private: string name; int age; };。
22.模块化
【详解】本题考查计算机编程。在编程中,模块化是将复杂的程序分解为相对独立且功能单一的模块的方法。每个模块具有明确的功能和接口,通过这种方式,可以使代码结构更清晰、逻辑更简洁。模块化有助于提高代码的可读性、可重用性和可维护性,不同模块可以独立开发、测试和修改,减少代码的冗余,方便团队协作和项目的扩展。故答案为:模块化。
23.(4*a*c-b**2)/(2*a)
【详解】本题考查Python表达式。在Python中,乘运算符是*,除运算符是/,幂运算符是**,因此该式子的表达式是(4*a*c-b**2)/(2*a)。
24.错误
【详解】本题考查Python基础。
题目中的说法过于绝对。在Python中,如果在这个 return 语句之前遇到另一个 return 语句,那么这个函数不一定会返回整数3。故错误。
25.错误
【详解】本题考查Python基础。
表达式 list('[1, 2, 3]') 的值并不是 [1, 2, 3]。在Python中,list() 函数用于将可迭代对象转换为列表,但如果直接传入一个字符串,list() 函数会将字符串中的每个字符视为列表的一个单独元素。故错误。
26.正确
【详解】本题考查算法特征相关内容。算法具有有穷性、确切性、输入项(0个或多个输入)、输出项(1个或多个输出)、可行性五个重要特征。“打印所有偶数”是无穷的,所以计算机无法解决“打印所有偶数”,是违背了“有穷性”的原则。故本题答案是:正确。
27.正确
【详解】本题主要考查算法的特征。一个算法应该具有以下五个重要的特征:1、有穷性: 一个算法必须保证执行有限步之后结束;2、确定性:算法的每一步骤必须有确切的定义;3、数据输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定义了初始条件;4、数据输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;5、可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。故答案为正确。
28.正确
【详解】本题考查的知识点是循环结构应用。循环语句可以嵌套使用。在一个循环的内部再使用另一个循环,这就是循环的嵌套。在大多数编程语言中,如Python,Java,C++等,都支持循环的嵌套。故答案为正确。
29. A A km[j] subject2=subject1 AB
【详解】本题考查程序分析。
(1)剔除缺考考生数据,故需要筛选出总分字段大于0的所有数据。正确写法是df[df.总分>0]或df[df["总分"]>0]。故正确答案为:选项A。
(2)计算每个学生历次考试平均成绩,需要对姓名字段分类后(调用方法groupby),统计其平均值(调用方法mean)。需要注意的是设置as_index参数为False。因为数据没有将姓名作为新的索引。故正确答案为:选项A。
(3)程序外循环遍历数据gf,取出每行,内循环遍历km,取出列。cj存储科目成绩,故需要填写列km[j]。当cj成绩大于第一优势科目成绩,则将第一优势科目成绩赋值给第二优势科目成绩,更新第一优势科目成绩。故subject2=subject1。正确答案为:①kim[j]、②subject2=subject1。
(4)选项A,matplotlib是Python中一个非常流行的数据可视化库,它可以用于创建各种类型的图表,包括柱状图、折线图等,来展示数据。故正确。选项B,图表中技术和地理两门科目的平均成绩确实比其他科目高,这个选项正确。选项C,图表是展示每门科目的平均成绩,那么对df对象按照“总分”列进行排序将不会影响每门科目的平均成绩,因此不会影响图表效果。故错误。选项D,图表是基于科目平均成绩制作的,并且没有使用到姓名列数据,那么删除姓名列将不会影响图表效果。故错误。故正确答案为:选项A、B。
30. 1,6 i i+2
【详解】本题考查Python程序设计相关内容。分析题目内容及程序段,i值可以作为行号使用,同时控制循环次数,其初始值应为1,终值为5,结合函数range特点,<1>处完整代码应为:for i in range (1,6),故①处答案是:1,6。由输出内容可知,第i行的被除数为i+2,输出结果为(i+2)/4,故②处答案是:i,③处答案是:i+2。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$