第二章 算法与程序实现 2024-2025学年高中信息技术华东师大版(2020) 必修1

2024-08-11
| 15页
| 88人阅读
| 3人下载

内容正文:

第二章 算法与程序实现 一、选择题 1.在Python语言中,len函数用于返回列表中元素的个数,今有一姓名列表:Ben["张良","王虎","马六","本田","李白"],则 len(Ben)的值为(  ) A.2 B.3 C.4 D.5 2.下列Python语句书写正确的是(  ) A.n=int(input("n=5") B.PRINT('a=',35) C.a,b=b,a D.a=3/{[45-2]*11} 3.在Python中,若s=5,a=10,则语句print(s,"+",a,"=",s+a)的执行结果是(   ) A.s+a B.s+a=5+10 C.5+10=15 D.s+a=15 4.有如下程序段: a=[9, 7, 17, 16, 13, 9, 16, 14, 8, 13] n=len(a) p=[False]*n ans=[] for i in range(2):     mx=-1     for j in range(n):         if not p[j]:             if mx==-1 or a[j]>a[mx]:                 mx=j     p[mx]=True     ans.append(a[mx]) print(ans) 程序执行后的输出结果是(   ) A.[17, 16] B.[17,17] C.[16,17] D.[8,7] 5.执行以下语句后,输出的结果是(   ) a=7//2 a=a%2 print(a) A.1 B.0 C.3.5 D.3 6.在Python中,表达式5**2//7+38%9运算的结果是(   ) A.3 B.4 C.5 D.6 7.以下哪个Python代码片段可以正确实现死循环(   ) A.while True: pass B.for i in range(5): pass C.while False: pass D.for i in range(-1, 5): pass 8.若a=8,b=5,则print(a,"-",b,"=",a-b)语句的输出结果是(   ) A.a-b=3 B.8-5=3 C.a-b=a-b D.a-b=3 9.以下Python程序运行结果为(    ) i=1 while i<=5: print(" "*(5-i),"∗"*i) i=i+1 A.    ∗           ∗∗         ∗∗∗      ∗∗∗∗     ∗∗∗∗∗ B.∗    ∗ ∗    ∗ ∗ ∗    ∗ ∗ ∗ ∗    ∗ ∗ ∗ ∗ ∗ C. ∗ ∗ ∗ ∗ ∗    ∗ ∗ ∗ ∗    ∗ ∗ ∗    ∗ ∗    ∗ D.∗ ∗ ∗ ∗ ∗    ∗ ∗ ∗ ∗    ∗ ∗ ∗    ∗ ∗    ∗ A.A B.B C.C D.D 10.某算法的部分流程图如图所示,执行这部分流程,若输入m、n、x的值依次为10、2、5,则输出n的值是(    ) A.5 B.6 C.7 D.8 11.有如下Python程序段: import random que=[0]*6 head=tail=0 t=0;ans=[] k=100 for i in range(6):     t+=random.randint(1,200)     que[tail]=t;tail+=1     while que[head]< t-k:         head+=1     ans.append(tail-head) 执行该程序段后,ans的值不可能的是(    ) A.[1,2,0,1,2,3] B.[1,2,2,2,2,2] C.[1,1,1,1,1,1] D.[1,2,3,4,5,6] 12.小明要编写一个程序,能实现对用户输入的数据,判断其为奇数还是偶数,请你帮他完成以下代码:在“if( )”处补充代码(  ) n=int(input("请输入一个数: ")) if( ): print("这是一个偶数")else: print("这是一个奇数") A.n/2==0 B.n//2==0 C.n%2==0 D.n%10==0 13.某算法的部分流程图如图所示,以下说法正确的是(   ) A.该流程执行后,变量 k 的值是-1 B.该流程执行后,变量 a 的值是 16 C.该流程用于计算并输出 1+8-16 的值 D.该流程完整执行后,“a<32?”共执行了 3 次 14.用高级语言和机器语言编写具有相同功能的程序时,下列说法中错误的是(   ) A.前者比后者可移植性强 B.前者比后者执行速度快 C.前者比后者容易编写 D.前者比后者容易修改 15.如图所示算法,实现一个四位数的自然数n的千位数字与个位数字互换,而十位数字与百位数字换。空白处不符合条件的表达式为(   ) A.int((n%1000)/100) B.int(n/100)%10 C.(n%1000-n%100)/100 D.int(n/10)%100 16.在 Python 语言中,函数round(9.8)的运算结果是(   ) A.'9' B.9 C.10 D.8 17.有如下程序段: 以上程序运行后,列表 a 的值可能是(   ) A.[2,5,10,10,10,9] B.[3,8,7,13,3,9] C.[8, 12, 3, 5, 3, 11] D.[6,10,9,7,10,8] 二、填空题 18.程序设计语言的发展过程可以分为 、汇编语言、高级语言。 19.用python编写程序,实现一元二次方程式ax2+bx+c=0(a≠0)的求解。输入系数a、b、c的值,输出方程可能的解。 import math a=int(input("a:")) b=int(input("b:")) c=int(input("c:")) if ① :     X1=((-1)*b+sqrt(f(a,b,c)))/(2*a)     x2=((-1)*b-sqrt(f(a,b,c)))/(2*a)     print("x1=",x1,"x2=",x2) else:     print(“该方程式无解!”) 请把上面程序划线①处的代码补充完整。 20.在Python中,使用 可以结束当前循环的执行,即使循环条件未满足。 21.依次输入8、7、9,以下流程图的算法执行结果是 。 \ 22.为了更好地了解某地的水质情况,科研人员采集了该地各监测点当天的水质数据。数据中包含了各监测点的水质类别、水温(℃)、pH、溶解氧(mg/L)、高锰酸盐指数(mg/L)。通过数字化学习,小申了解到水质类别从高到低分为1-5类,级别最高(质量最好)为1,级别最低(质量最差)为5。小申采集了某监测点的水质数据,部分数据如表所示。小申设计了一个算法,统计水质类别为1的天数。请选择合适的框图,将其拖至右侧流程图的虚线框内,将算法设计完整。 日期 水质类别 pH 溶解氧 高锰酸盐指数 2021/1/1 3 7.54 5.39 4.5 2021/1/2 3 7.47 6.42 4.85 2021/1/3 2 7.8 6.52 1.52 2021/1/4 1 6.5 8.24 1.36 2021/1/5 3 7.56 5.21 4.74 2021/1/6 2 7.27 7.08 1.03 2021/1/7 2 6.87 6.87 1.03 2021/1/8 2 6.59 6.59 1.94 2021/1/9 1 7.76 7.76 3.36 ①     ② 三、判断题 23.用计算机无法解决“打印所有素数”的问题,其原因是解决该问题的算法违背了算法特征中的有穷性。( ) 24.用高级语言编写的程序能够直接被计算机识别和执行,不必经过编译或解释。( ) 25.高级语言的翻译程序有两种类型:解释程序和编译程序。( ) 26.在用乘车卡乘车时,当卡内余额不足,系统会给出提示信息,请乘客投币。在对这一过程设计算法时,必须要用到算法的选择结构。( ) 四、操作题 27.李老师收集了高三各班学生的选考科目首考成绩,分别保存在以"gkcj+班级编号”共六位字符串命名的xlsx文件中,部分文件如图a所示,每个文件存储该班级学生的成绩数据,示例如图b所示。           图a                                         图b 现对高三年级选考技术学生的成绩进行分析,技术首考成绩是其选考科目中分数最高的学生视为放弃技术二考。请回答下列问题: (1)定义maxjs函数,功能为:读取某班的xlsx文件,返回该班中技术成绩为三门选考科目中成绩最高的人数。函数代码如下: import pandas as pd def max_js(cjfile):     df=pd.read_excel(cjfile)        #读取文件 cjfile 中的数据     df=     return df 画线处应填入的代码为 (单选,填字母)。 A.df[df['技术]==df.max(axis=1)]    B.df[df['技术']==df.max(axis=0)] C.df[df['技术']]==df.max(1)    D.df['技术']==df.max() (2)统计并输出各班放弃技术二考的人数及其占该班级总人数的比例,结果如图c所示,绘制各班放弃技术二考的人数柱形图,如图d所示,部分Python程序如下,请在画线处填入合适的代码。                            图c                                        图d df=pd.DataFrame() ratio=() sum={} for i in range(12):     i=i+1     if i<10:         t='0'+str(i)     else:         t=str(i)     df_bj=pd.read_excel('gkcj'+t+'.xlsx')     sum['三'+str(i)+'班']=len(df_bj)  #统计各班人数     df_i=max_js('gkcj'+t+'.xlsx')     df=df.append(df_i,ignore_index=True) df=df.groupby('① ',as_index=False)['技术'].count()    #统计各班放弃技术二考的人数 for i in range(len(df)):     bj=df.at[i,'班级']     ratio[bj]=round(② ,2)     print(df)     print('各班放弃技术二考人数的比例:)     print(ratio)     plt.title(' 放弃技术二考的人数')     plt.bar(df['班级'],③ )     plt.show() (3)结合图c和图d,可以得出三8班学生总数比三5班学生总数 (选填:多/少)。 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.D 【详解】本题Python考查程序设计相关内容。Python的len函数是用来获取一个序列(列表、元组、字符串等)的长度,即其中元素的个数。列表Ben含有5个元素,故本题答案是D选项。 2.C 【详解】本题考查Python表达式相关内容。选项A,括号没有成对,错误;选项B,Python区分大小写,输出语句应是print,错误;选项C,交换变量a、b的值,正确;选项D,Python运算都是小括号,错误。故本题答案是C选项。 3.C 【详解】本题考查Python程序设计相关内容。print是一个输出函数,一般用于向标准输出设备按规定格式输出信息。语句print(s,"+",a,"=",s+a)的作用是将s、a及两者的和(s+a)输出,执行结果为:5+10=15,故本题答案是C选项。 4.A 【详解】本题考查Python程序设计相关内容。分析代码段可知,外层for循环共执行两次,每执行一次外循环,内层for循环执行10次,其作用是找出当前列表最大值元素的序号,将列表p对应位置元素值设置为True,并将最大值a[mx]添加至ans中。具体执行过程:i=0时,第一次进入循环,内层for循环执行完毕后,将最大值17的序号2赋给mx,对应的p[2]由False变为True,17被添加到列表ans中;i=1时,第二次进入循环,内层for循环执行,受上一轮循环影响,p[2]值为True,不满足not p[j],不再把最大值17的序号2赋给mx,而是重新找出排除它之后的最大值16,将16的序号3赋给mx,对应的p[3]由False变为True,16被添加到了列表ans中。外层for循环结束,输出ans,结果为:17,16。故本题答案是A选项。 5.A 【详解】本题考查Python程序。语句a=7//2执行后,a的值为3,因为7//2进行的是整数除法,结果取整为3。接着执行a=a%2,此时a的值变为3%2,即3除以2的余数,结果为1。最终print(a)输出的结果是1。因此,正确答案是A。 6.C 【详解】本题考查Python表达式的运算。**是幂运算符,//是整除运算符,%是取余运算符。5**2//7+38%9=25//7+2=3+2=5。故选C。 7.A 【详解】本题考查Python循环。死循环是指永远不会自行结束的循环。A选项中,while True: pass,由于条件True始终为真,所以会一直执行循环体中的代码,形成死循环。B选项for i in range(5): pass,range(5)会产生0到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。C选项while False: pass,条件False始终为假,不会执行循环体,不是死循环。D选项for i in range(-1, 5): pass,range(-1, 5)会产生-1到4的序列,循环会在遍历完这个序列后自动结束,不是死循环。故答案为:A。 8.B 【详解】本题考查的是Python输出函数。-、=用双引号,则原样输出;变量则输出其值;表达式则输出运算结果,故输出结果是:8-5=3。选B。 9.A 【详解】本题考查的是Python循环语句。i依次从1取到5,由" "*(5-i)可知,空格依次是4到0个,由"∗"*i可知,"∗"依次是1到5个。故选A。 10.C 【详解】本题考查流程图。程序运行过程如下所示。因此,最终输出n的值为7。故答案为:C。 m n x a 10 2 5 5 10 7 0 1 11.A 【详解】本题考查程序分析。队列长度追加到ans列表,选项A,当tail=1,head=0,则1追加到ans中。当tail=2,head=0,则2追加到ans中。当tail=3时,head=3,则0追加到ans中。这时head不可能为3,选项A不可能出现。故选择A。 12.C 【详解】本题考查Python分支结构。在这段程序中,我们需要判断输入的正整数x是否为偶数。根据整数的奇偶性质,一个整数除以2的余数为0时,它就是偶数。因此,我们可以使用取余运算符(%)来判断x是否能被2整除,如果余数为0,则x是偶数,否则是奇数。C选项正确。 13.D 【详解】本题主要考查算法流程图的执行。s=1,k=1,a=8,第一次循环,满足a<32,执行s=s+k*a=9,k=1-k=0,a=2*a=16;第二次循环,满足a<32,执行s=s+k*a=9,k=1-k=1,a=2*a=32;第三次循环,不满足a<32,循环结束。该流程执行后,变量k的值是1,变量a的值是32,变量s的值是9,该流程完整执行后,“a<32?”共执行了3次,故本题选D选项 14.B 【详解】本题主要考查编程语言的描述。高级语言更接近人类的自然语言,易学易记;采用高级语言编写的程序修改方便;高级语言可读性好、移植性好;采用高级语言编写的程序占用内存空间较大,执行速度较慢。故本题选B选项。 15.D 【详解】本题考查流程图。对于一个四位数n,要得到其百位数字,有多种方法。A选项:int((n%1000)/100),先对n取余得到后三位数字,再除以100即可得到百位数字。B选项:int(n/100)%10,先将n除以100得到包含百位及以上的数字,再对10取余得到百位数字。C选项:(n%1000-n%100)/100,先通过取余得到后三位数字,再减去后两位数字,最后除以100得到百位数字。D选项:int(n/10)%100,先将n除以10,此时得到的数字包含原数的十位和百位,再对100取余,得到的不是原数的百位数字。故答案为:D。 16.C 【详解】本题考查的是Python函数。round(x)方法返回浮点数x的四舍五入值。round(9.8)=10,故选C。 17.C 【详解】本题主要考查Python程序的执行与调试。分析程序,a[i]=random. randint(1,5)*2+1,第一个for循环执行完a[0]~a[6]随机生成3、5、7、9、11之间的数,第二个while循环中,前5个元素参与运算,如果相邻元素呈降序,则交换,否则a[i]递增1。选项A中a[0]不可能为2,选项B中a[3]不可能为13,选项D中a[0]不可能为6,故以上程序运行后,列表a的值可能是:[8,12,3,5,3,11],故本题选C选项。 18.机器语言 【详解】本题主要考查程序设计语言的发展。程序设计语言的发展过程可以分为机器语言、汇编语言、高级语言。 19.f(a,b,c)〉=0 【详解】本题考查Python程序设计相关内容。一元二次方程的求解:若b*b-4*a*c>0成立,表明方程有两个不等实根;若b*b-4*a*c==0成立,表明方程有两个相等实根;若b*b-4*a*c<0成立,表明方程无解;由给定程序段知,b*b-4*a*c的值通过调用函数f(a,b,c)获得,故本题答案是:f(a,b,c)〉=0。 20.break 【详解】本题考查Python。在Python中,当使用break关键字时,无论循环条件是否满足,都会立即终止当前所在的循环结构,使程序跳出该循环,继续执行循环后面的代码。故答案为:break。 21.9 【详解】本题考查的是流程图识读。依次输入8、7、9,7>8不成立,9>8成立,执行a、c变量交换,交换后a=9。 【点睛】 22.       【详解】本题考查的是流程图识读。依次读取水质类别数据,如果还有未读取的数据,则继续读取下一个数据,对读取的数据进行判断,如果水质类别为1,则计数cnt加1。故①为: ②为:   23.正确 【详解】本题考查算法特征相关内容。算法具有有穷性、确切性、输入项(0个或多个输入)、输出项(1个或多个输出)、可行性五个重要特征。“所有素数”是无穷的,所以计算机无法解决“打印所有素数问题”,是违背了“有穷性”的原则。故本题答案是:正确。 24.错误 【详解】本题主要考查程序设计语言基础概念。用高级语言编写的程序不能够直接被计算机识别和执行,需要经过编译或解释,故表述错误。 25.正确 【详解】本题主要主要考查程序的描述。高级语言的翻译程序是编译程序和解释程序。故本题正确。 26.正确 【详解】本题考查的是算法结构。选择结构会依据条件选择其中一个分支执行。在用乘车卡乘车时,当卡内余额不足,系统会给出提示信息,请乘客投币。在对这一过程设计算法时,必须要用到算法的选择结构。说法正确。 27. A 班级 df.at[i,'技术']/sum[bj] df['技术'] 少 【详解】本题考查Python基础。 (1)max函数是求最大值,axis=1表示横轴方向,因此df.max(axis=1)或df.max(1)表示横向找出成绩中的最大值,因此可以通过df[df['技术']==df.max(axis=1)]或df[df['技术']==df.max(1)]筛选出“技术”成绩为最高成绩的数据行。故正确答案为:选项A。(2)①要统计各班放弃技术二考的人数,则需要对“班级”列进行分组。故正确答案为:班级。②根据图c及代码,要对字典ratio进行赋值,其中键为班级名称,值为各班放弃技术二考人数的比例并保留两位小数,因此利用at函数获取每个班放弃技术二考的人数。故正确答案为:df.at[i,'技术']/sum[bj]。③由图d可知横坐标为班级,纵坐标为各班放弃技术二考的人数。故正确答案为:df['技术']。(3)三8班学生总数为48,三5班学生总数为50。故正确答案为:少。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

第二章 算法与程序实现 2024-2025学年高中信息技术华东师大版(2020) 必修1
1
第二章 算法与程序实现 2024-2025学年高中信息技术华东师大版(2020) 必修1
2
第二章 算法与程序实现 2024-2025学年高中信息技术华东师大版(2020) 必修1
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。