2.2 做出判断的分支 - 2024-2025学年高中信息技术教科版(2019) 必修1

2024-08-08
| 19页
| 87人阅读
| 0人下载

内容正文:

2.2 做出判断的分支 一、选择题 1.下列伪代码中体现出来的程序算法结构是(   ) A.顺序结构 B.循环结构 C.选择结构 D.三种结构都有 2.智能停车场收费系统,远距离红外读卡器的有效读卡距离设置为10~20米,时速40公里及以下的车辆可以不停车读卡,用逻辑型变量x标记是否读卡成功,用dis表示车辆距离读卡器的距离,用v表示此时车辆的车速,则下列分支语句不正确的是(   ) A. if v>40 and dis<10 or dis>20:     x=True else:     x=False B. x=False if 10<=dis<=20 and v<=40:     x=True C. if dis<10 or dis>20:     x=False elif v<=40:     x=True else:     x=False D. if 10<=dis<=20:     if v<=40:         x=True     else:         x=False else:     x=False A.A B.B C.C D.D 3.下列标识符中合法的是(   )。 A.i'm B._ C.3Q D.for 4.在Python中,下列关于if选择结构说法错误的是(   ) A.if语句中可以没有else子句 B.同一级别的if语句中可以有多个else子句 C.同一级别的if语句中可以有多个elif子句 D.if选择结构可以多层嵌套 5.下列代码如果从键盘输入81,那运行结果是(   )。 score=int(input("请输入分数:")) if score<=100 and score>=00:      if score>=90:          print("优秀")      elif score>=75:          print("良好")      elif score>=60:          print("合格")      else:          print("不合格") else:       print("分数不对") A.运行不了,提示有错 B.良好 C.没有任何输出 D.良好分数不对 6.有如下Python程序段: a=[5,2,7,10,17,25,42,66] c=0 for i in range(2,len(a)):     if a[i-1]+a[i-2]==a[i]:         c=c+1 print(c)         运行程序后,输出的内容是(    ) A.2 B.3 C.6 D.7 7.已知 18.5<=BMI<=24.9 为正常标准,某同学的BMI值存储在变量BMI中,编写程序判断该同学的身体状况信息,并保存到变量 result 中,则下列程序段无法实现该功能的是( ) A. B. C. D. 8.列表list1=[i for i in range(1,7)if i %2==0]中有(    )个元素。 A.4 B.2 C.3 D.1 9.有如下程序段: a=[[2,2,1],[8,0,4],[3,3,0],[6,-1,2],[8,1,-1]] ans=head=3 p=a[head][2] while p!=-1:     if a[ans][0] < a[p][0] :         ans=p     p=a[p][2] print(ans,a[ans][0],sep=",") 则程序运行后,下列说法正确的是(    ) A.链表数据值依次为2->8->3->6->8 B.程序输出结果为4,8 C.a[0][2]的值为1,双向链表a的头节点数据值为2 D.a[1][1]的值为0,双向链表a的尾节点数据值为8 10.费马平方和定理:质数能表示为两个平方数之和的充分必要条件是该质数被4除余1,如13=22+32。现通过编程来验证3-99之间所有质数是否符合费马平方和定理。 实现该功能的Python程序如下,运行结果如图所示,划线处的代码可以是(    )    from math import sqrt    def prime(n):       # prime(n)判断n是否为质数,返回True/False,代码略    for n in range(3, 101, 2):       if prime(n):          a=1; flag=True          while a < sqrt(n) and flag:             b= ①             if int(b)==b:                print(str(n)+“=”+str(a)+“**2+”+str(int(b))+“**2”)                flag=False              a=a+1          if ②             print(n,“无法用两个平方数之和表示”) A.① b=sqrt(n-a**2)            ②flag B.①b=sqrt(n-a*a)            ②not flag C.① b=sqrt(n-a*a)            ②n%4!=1 D.① b=sqrt(n-a**2)            ②b==int(b) 11.有如下Python程序段:     s=input("输入字符串:")     n=len(s) i=0;j=n-l ans=" " while i<n//2 and j>=n//2:    - if s[i]>=s[j]: ans+=s[i];j-=l elif s[i]<s[j]: ans+=s[j];i+=l print(ans) 执行该程序段,分别输入下列选项中的字符串,输出结果不为“ppp”的是(     ) A."python" B."public" C."purple" D."bookshop" 12.在Python语言中, 以下程序运行后,输入“74”, 显示的结果是(  ) c= int(input("评价输入测试成绩:")) if c<70: print("请继续努力") elif c<80: print("你很棒!") elif c<=100: print("你太棒了!") else: print("请输入正确的数据——") A.请继续努力 B.你很棒! C.你太棒了! D.请输入正确的数据—— 13.有一组正整数,要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后,并保持相对顺序不变。将划线处的代码补充完整,正确的是(  ) a=[5,10,21,7,24,14,9,11,36,37] n=len(a) ;b=[0]*n num=0;k=0 while k <10:     if   ① :         b[num]=a[k]         num+=1     else: ②     k+=1 for j in range(n-num,n): ③ print(a) A.①a[k]%2==1 ②a[k-num]=a[k] ③a[j]=b[j-n+num] B.①a[k]%2==0 ②b[k-num]=a[k] ③a[j]=b[j+num] C.①a[k]%2==0 ②a[k-num]=a[k] ③a[j]=b[j+num] D.①a[k]%2==1 ②b[k-num]=a[k] ③a[j]=b[j-n+num] 14.有如下python程序段: def fab(a,b):   if a%b==0:     return   elif a>b:     fab(a-b,b)     print(1,end="")   else:     fab(a,b-a)     print(2,end="") fab(126,156) 程序运行后,输出的2的个数是(   ) A.3 B.4 C.5 D.6 15.为优化英文字符串的存储空间,现规定:用一个字符和一个数值代替字符串中的连续升序段(相邻字符的ASCII码值增量为1)。例如输入字符串“abcmnk”,压缩后为“a3m2k1”。实现上述功能的Python 程序如下: s=input("请输入字符串:") n=len(s);flag=False;ans="";c=1 for i in range(0,n-1): if (1) :     ans=ans+s[i]     flag=True     c=c+1 elif ord(s[i])+1!=ord(s[i+1]):     ans=ans+str(c)     flag=False     c=1 else:     c=c+1 if (2) :     ans=ans+str(c) else:     ans=ans+s[i+1]+str(c) print("压缩后的字符串为:",ans) 划线处可选语句有: ①flag=True            ②flag=False ③ord(s[i])+1==ord(s[i+1]) and flag==False ④ord(s[i])+1==ord(s[i+1]) and flag==True 下列代码顺序正确的是(  ) A.④① B.④② C.③① D.③② 16.有如下python程序段: def ds (s, i): if "a" <=s[i]<="z" : s=s[:i]+s[i+1:] elif "0" <=s[i]<="9" : s=s[:i]+str((int(s[i])+6)%10)+s[i+1:] return s s="Yy23mm4";i=0 while i<len(s): s=ds(s, i) i+=1 print(s) 执行上述程序段后,s的值为(    ) A."89mm0" B."Y89m0" C."Y29m0" D."y23m4" 17.有如下Python程序,当程序运行后输入15000,则程序输出结果为(    ) salary=float(input()) if salary<=5000: tax=0 elif salary<=7000: tax=(salary-5000 )*0.1 elif salary<=10000: tax=200+( salary-7000)*0.2 else: tax=800+( salary-10000 )*0.4 print(salary-tax) A.2800 B.2800.0 C.12200 D.12200.0 二、填空题 18.阅读程序代码,写出运行结果。 运行结果是: 。 19.某Python程序段如下: def isdigit(x): if "0" <= x <= "9": return True else: return False d = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" s = "1*8%6$3@0#19&amp;0" ans = "" t = 0 for i in s: if isdigit(i): t = t * 10 + int(i) else: ans += d[t] t = 0 print(ans) 运行该程序段,输出结果是 20.下面程序的运行结果为: , for  num  in  range(2,10):       if  num % 2==0 :              continue       print(num,end=”、”) 21.以下Python程序段的运行结果是 。 n = 36 s = 0 for i in [2,3,4,5,6,7,8]:   if n % i == 0:     s = s + 1 print (s) 22.以下Python程序运行后,当输入20时,输出结果是 。 三、操作题 23.用python编辑器打开“Y:\94”下的文件”判断BMI.py”,进行以下操作并保存结果. (1) 请填空,完善该程序,实现功能,输入身高和体重,计算出体重指数BMI的值。体重计指数的计算方法:体重÷(身高*身高),说明:体重的单位为千克,身高的单位为米。 (2) 如果体重指数BMI范围是18.5-23.9,输出符合标准,否则不符合标准。 (3) 编写完成后,原名保存并关闭应用软件。 注:程序修改时,请把下划线及序号删除;不能删除注释语句。     #请删除序号及下划线,填写正确的代码,使程序完善。 height=float (( ) ("请输入你的身高(米):")) weight=float (( ) ("请输入你的体重(千克):")) BMI= if : print("你的体重指数BMI为:",BMI,"符合标准!") else: print("你的体重指数BMI为:",BMI,"不符合标准!") 24.判断身份证校验位是否正确 第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。 第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。 第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。 第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。 (1)如果身份证的前17位是34052419800101001,则该身份证的校验位是 。 (2)实现上述功能的代码如下,请在划线处填入合适的代码,使程序正常运行。 (3)实现上述功能的代码如下,但加框处代码有错,请改正。 def check(s): s1=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] s2='10X98765432' k=0 for i in ①: k=k+int(s[i])*s1[i] return sfz=input('请输入身份证号:') ② if t !=18: print('位数有误,请重新输入!') else: if sfz[-1]=='x': sfz=sfz[:-1]+"X" if ③: print('合法身份证号') else: print('非法身份证号') 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.C 【详解】本题考查程序结构。这段伪代码中,根据年龄的不同情况进行判断,选择执行不同的输出语句,这体现了选择结构(也叫分支结构),而整个过程是依次按条件判断执行,没有循环过程,也不存在先执行后面的语句再回头执行前面语句的情况,所以主要体现的是选择结构,答案选C。 2.A 【详解】本题考查分支语句。A选项中,当v>40且dis<10或dis>20时,x被设置为True,这与题目要求不符,应该是当车速v≤40且读卡距离在10到20米之间时读卡成功,即x=True,所以A选项不正确。故答案为:A。 3.B 【详解】本题考查标识符命名规则相关的知识点 标识符是由字母、下划线、数字组成,但不能以数字开头,且不能是关键字,不能含有特殊符号。故本题选B选项 4.B 【详解】本题主要考查Python选择结构。if语句中可以没有else子句;同一级别的if语句中可以有多个elif子句,但只有一个else语句;if选择结构可以多层嵌套,故本题选B选项。 5.B 【详解】本题主要考查Python多分支结构。从键盘输入81,满足条件75<=score<=90,输出“良好”,故本题选B选项。 6.B 【详解】本题主要考查Python程序的执行。分析程序可知,如果满足a[i-1]+a[i-2]==a[i],则执行c=c+1,即相邻3项,前两项和等于第三项,满足条件的有5+2=7,7+10=17,17+25=42,故c=3,故本题选B选项。 7.B 【详解】本题考查Python分支结构的应用。选项B中,当BMI<18.5时,会输出result="正常",显然错误,其余选项均可以实现该功能。故选B。 8.C 【详解】本题主要考查Python列表的操作。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。list1=[i for i in range(1,7)if i %2==0]满足if条件的i有2、4、6,即一共有3个元素,故本题选C选项。 9.D 【详解】本题主要考查链表及Python程序。分析程序可知,a是双向链表,ans=head=3,故链表数据值依次为6->3->2->8->8;程序运行结束后,ans=1,a[ans][0]=8;a[0][2]的值为1,head=3,双向链表a的头节点数据值为6;a[1][1]的值为0,双向链表a的尾节点数据值为8,故本题选D选项。 10.AC 【详解】本题主要考查Python程序的执行与调试。四个选项中第一问都正确,它们的含义相同,即 a**2等效于 a*a 。重点在第二问。代码 if int(b)==b的含义是b如果正好是整数而不是浮点数说明 n 是由两个整数的平方和组成。条件成立就输出n由那两个整数的平方和组成,这两个整数分别是a和b。 flag=false代码说明不用再循环已经找到满足两个数的平方和等于n的变量a和b。flag为false时表示n可以有两个数的平方和组成,flag为true时表示没有两个整数的平方和是n。A选项符合题意,B选项错误。题干中“质数能表示为两个平方数之和的充分必要条件是该质数被4除余1”,故C选项也正确。b==int(b)成立时flag值为false,n是可以有两个整数的平方和组成,D选项错误。故本题选AC选项。 11.D 【详解】本题主要考查Python程序的执行。分析程序可知,比较字符串s左右两端的字符,其中比较小的一端进行移动并再次比较,将值大的字符拼接到变量ans中,选项D中,字符"b"、"o"、"o"、"k"均小于字符"p",因此输出的结果是"pppp",故本题选D选项。 12.B 【详解】本题考查的是Python多分支语句。输入“74”,不满足 c<70,满足c<80,执行 print(" 你很棒 !"),故显示的结果:你很棒!故本题应选B。 13.A 【详解】本题主要考查Python程序的综合应用。要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后。该算法的思想是将偶数保存到列表a中,奇数保存到列表b中,最后再将列表b中的奇数并到列表a中偶数的后面。第一空判断a[k]是否为奇数,即a[k]%2==1。第二空如果a[k]是偶数则保存到列表a前面,即a[k-num]=a[k]。最后再把列表b并到列表a存放到偶数的后面,即a[j]=b[j-n+num],故本题选A选项。 14.C 【详解】本题考查Python程序执行与调试。fab(126,156)→执行fab(126,30),并输出2。fab(126,30)→执行fab(96,30),并输出1。fab(126,30)→执行fab(66,30),并输出1。fab(66,30)→执行fab(36,30),并输出1。fab(36,30)→执行fab(6,30),并输出1。fab(6,30)→执行fab(6,24),并输出2。fab(6,24)→执行fab(6,18),并输出2。fab(6,18)→执行fab(6,12),并输出2。fab(6,12)→执行fab(6,6),并输出2。fab(6,6)满足if判断条件,执行return。因此程序运行后,输出的2的个数是5。故选C。 15.C 【详解】本题主要考查Python程序的执行与调试。Flag初值为False,当第一次出现连续的升序段时,执行ans=ans+s[i],同时赋值flag为True,后续再出现连续升序段时,只需要执行else部分,c递增1即可,因此①处判断条件是ord(s[i])+1==ord(s[i+1]) and flag==False。此处if分支结构用于处理最后一个字符的情况,如果flag=False,则执行ans=ans+s[i+1]+str(c),即将最后一个字符和数字拼接到变量ans中,故此处if判断条件是flag=True,故本题选C选项。 16.C 【详解】本题考查Python程序的执行。分析程序,ds函数中,当字符s[i]是小写字母时,则在字符串s中跳过该字母,即删除该字符;当s[i]是数字时,该数字变为int(s[i])+6)%10,即循环后移6个单位。s="Yy23mm4",当i=0时,s=ds(s, i)="Yy23mm4";当i=1时,s=ds(s, i)="Y23mm4";当i=2时,s=ds(s, i)="Y29mm4";当i=3时,s=ds(s, i)="Y23m4";当i=4时,s=ds(s, i)="Y23m0",循环结束。因此执行上述程序段后,s的值为"Y29m0"。故选C。 17.D 【详解】本题考查的是Python分支语句。15000不满足<=5000,也不满足<=7000,也不满足<=10000,故执行tax=800+( salary-10000 )*0.4=800+(15000-10000)*0.4=800+2000=2800.0,salary-tax=15000-2800.0=12200.0。故本题应选D。 18.114 【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现对列表data中的偶数进行求和赋给变量sum,故sum=sum+i=0+34+78=114,故运行结果是114。 19.BIGDAT 【详解】本题主要考查Python程序的执行。分析程序可知,依次从s中取出数字,将该数字作为索引从字符串d中取出对应的字母,s中的数字依次是1、8、6、3、0、19、0,因为最后一个数字0后面再无其他字符,故不会执行ans += d[t],对应d中的字符分别是B、I、G、D、A、T,故输出结果是BIGDAT。 20.3、5、7、9、 【详解】本题主要考查Python程序执行。分析程序可知,变量num的取值范围是2~9,如果num是偶数跳过本次,如果num是奇数,将num用顿号连接符连接打印显示出来,故程序的运行结果为3、5、7、9、。 21.4 【详解】本题主要考查Python程序执行。分析程序可知,变量s统计列表[2,3,4,5,6,7,8]中是36因子的个数,满足的数有2、3、4、6,故运行的结果是4。 22.20 【详解】本题考查的是Python选择语句。当输入20时,x=20,满足x%5==0,执行print(x),故输出20。 23. input input weight/(height* height) 18.5<=BMI<=23.9 【详解】本题主要考查Python程序的综合应用。①输入函数是input(),故此处填input。②同理此处使用input()函数输入体重,故此处填input。③体重计指数的计算方法:体重÷(身高*身高),故此处填weight/(height* height)。④如果体重指数BMI范围是18.5-23.9,输出符合标准,否则不符合标准,故此处if判断条件是18.5<=BMI<=23.9。 24. X range(0,17) t=len(sfz) check(sfz)==sfz[-1] s2[k%11] 【详解】本题主要考查Python程序的综合运用。①如果身份证的前17位是34052419800101001,校验码字符值计算如下:则该身份证的校验位是 189 Mod 11=2,查表得出校验码字符值a1为X。②此处是将身份证号码1~17位分别与加权因子相乘后并求和,赋给变量k,range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop,故此处填range(0,17)。③此处判断身份证sfz的长度是否为18位,通过len函数可以求得字符串sfz的长度,用变量t保存,故填t=len(sfz)。④check(s)函数用来计算身份证s的校验码,判断身份证sfz最后一位与计算得到的校验码是否相等,故填check(sfz)==sfz[-1]。⑤变量s2保存校验码与余数对照表,余数是k%11,根据余数从变量s2中取出对应的校验码,故此处填s2[k%11]。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

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