4.4运用循环结构描述问题求解过程2024—2025学年高中信息技术粤教版(2019)必修1

2024-08-15
| 17页
| 264人阅读
| 0人下载

内容正文:

4.4 运用循环结构描述问题求解过程 一、选择题 1.在下面Python程序代码中,①和②处应该填的代码是(   ) sc=float(input("请输入期末考成绩sc=")) if sc>=90:       print("优秀") ① sc>=80:       print("良好") elif sc>=60:       print("合格") ②:       print("不合格") A.if  else B.else  elif C.elif  else D.elif  elif 2.在循环结构中,用于判断循环是否继续执行的表达式通常称为(   ) A.循环条件 B.循环表达式 C.循环控制变量 D.循环计数器 3.某算法的部分流程图如图所示。执行这部分流程后,s的值应为(   ) A.-21 B.11 C.-5 D.1 4.有如下python程序段: s="PyThoN2023";r="";flag=True for i in range(len(s)): ch=s[i] if"0"<=ch<="9" and i%2==1: r+=str(9-int(ch)) elif"A"<=ch<="Z" and flag: r+=chr(ord(ch)-ord("A")+ord("a")) else: r+=ch flag=not flag print(r) 执行该程序后,输出结果是(    ) A.pyThon8083 B.PyThon8083 C.pyThon2926 D.pyThoN2926 5.经过中国国家登山队的测量,2020年12月8日,中尼两国共同宣布了珠穆朗玛峰的最新高度为海拔8848.86米。现有一张白纸的厚度大约是0.08毫米,对折一次,厚度变0.16毫米,再对折一次,厚度变为0.32毫米,……,每对折一次,其厚度均变为对折前的两倍,假设这张纸足够大,可以对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗玛峰的高度?以下是求解以上问题的程序片段,请你补全代码: 请选择适当的代码填入程序①处。(    ) A.while B.for C.output D.input 6.有如下程序段 s = Text1.Text s1 = "" For i = 1 To Len(s) \ 2    m = Mid(s, i, 1)    n = Mid(s, n - i + 1, 1)    If m > n Then       s1 = s1 + m + n    Else       s1 = s1 + n + m Next i Text2.Text = s1 在 Text1 中输入“8523691”,则执行该程序后,Text2 中输出的是(   ) A.819562 B.8159823 C.815926 D.8195623 7.有如下程序,输入1101110后的运行结果为(      ) s1=input(“请输入一串01组合”) s2=len(s1) s=0 for i in range(s2):    a=int(s1[i])    s=s*2+a   print(s) A.110 B.111 C.220 D.110111 8.有如下对分查找程序段    #列表a存放整数升序数据,代码略    key=int(input())    f=[0]*9    i=0    j=8    while i<=j:        m=(i+j)//2        f[m]=1        if a[m]>key:            j=m-1        else:            i=m+1    print(f)    输入待查找数据,执行该程序段后,下列选项中,列表f的值不可能的是(     ) A.[0, 0, 0, 0, 1, 1, 1, 0, 0] B.[1, 1, 0, 0, 1, 0, 0, 0, 0] C.[0, 1, 0, 0, 1, 0, 1, 0, 0] D.[0, 0, 0, 0, 1, 0, 1, 1, 0] 9.有如下Python程序段: m=3 1st=[7,3,4,3,1,6,3] for i in range(len(lst) -1): for j in range(len(lst) -1,i,-1): if 1st[j] <1st[j-1]: 1st[j], 1st[j-1] = 1st[j-1], 1st[j]    break 执行该程序段,加框处语句被执行的次数是(    ) A.3 B.4 C.5 D.6 10.有如下Python程序段: s="VictoryOnTheWay"#'A'的ASCII值为65,"a"的ASCII码值为97 mx="" pre=0 for i in range(1,len(s)):     if ord(s[i]) < 97:         if mx<s[pre:i]:             mx=s[pre:i]         pre=i print(mx) A.Victory B.On C.The D.Way 11.有如下Python程序段: st=[0]*10 cnt,top=0,-1 s=input(    ) for i in range(0,len(s),2):    t=s[i]    n=int(s[i+1])    if t=='A':       for j in range(n):          top+=1          st[top]=cnt          cnt+=1    elif t==’P’:       while top!=-1 and n>0:          top-=1          n-=1 print(st[0:top+1]) 若输入s的值为"A1P2A3P2A2",则程序的输出结果是(    ) A.[5,6] B.[2,5,6] C.[4,5] D.[1,4,5] 12.有如下Python程序段: a=[["data1",1],["data2",2],["data3",- 1]] head=0;pre=head while a[a[pre][1]][1]!=- 1:    pre=a[pre][1] a[pre][1]=- 1 p=head while a[p][1]!=- 1:    print(a[p][0],end="->")    p=a[p][1] print(a[p][0]) 执行该程序段后,输出的结果是(    ) A.datal->data2->data3 B.1->2->-1 C.datal->data2 D.datal 13.“不积跬步,无以至千里;不积小流,无以成江海。”每天进步一点点,一年后,你将进步很大:而每天退步一点点,一年后,你将落后很多。为完成两个励志公式1.01365≈37.8和0.99365≈0.03的计算,补充完善下面Python程序第6行划线部分的代码(  ) (1)#计算1.01的365次幂,0.99的365次幂 (2)s1=1 (3)s2=1 (4)for i in range(365): (5)     s1=s1*1.01 (6)     s2=________ (7)print("每天进步一点,365天后你将得到:",s1) (8)print("每天退步一点,365天后你将得到:",s2) A.0.99**365 B.s2*0.99 C.s2*1.01 D.1.01**365 14.如图所示,温岭新天地的“我在温岭很想你”成了网红打卡地。 规定字符串s的长度等于7时,被称为“超想你”;否则被称为“很想你”,例如“我在温岭很想你”字符串的长度为7,所以被称为“超想你”,在下面Python程序中,表达符合题意的是(   ) A. a=len(s) if a==7:     print("超想你") else:     print("很想你") B. a=len(s) if a%7==0 and a>0:     print("超想你") else:     print("很想你") C. a=len(s) if a%7!==0 or a==0:     print("很想你") else:     print("很想你") D. a=len(s) b=[]*a for i in rang(a):     b[i]=i if b[6]==7     print("很想你") else:     print("很想你") A.A B.B C.C D.D 15.有如下Python程序段: from random import randint from math import sqrt a=[0,0,0,0,0] for i in range(5):        a[i]=randint(1,5)*2 n=0 while n<5:        for i in range(4,n,-1):            if a[i] < a[i-1] and int(sqrt(a[i]))!=sqrt(a[i]):                a[i],a[i-1]=a[i-1],a[i]        n+=1 print(a) 运行该程序段,输出的结果不可能是(    ) A.[2,8,10,10,4] B.[6,8,10,4,10] C.[2,4,8,10,10] D.[6,8,6,4,8] 16.有如下Python程序段: def  guess(cur):     q=cur     p=a[cur][1]    while p!=-1:          if a[p][0]==a[cur][0]:               a[q][1]=a[p][1]               p=a[p][1]        else:                  q=p                  p=a[p][1] a=[[1,3],[1,2],[2,4],[2,5],[4,-1],[3,1]] head=0;cur=head while a[cur][1]!=-1:         guess(cur)        cur=a[cur][1] cur=head while cur!=-1:        print(a[cur][0],end="")        cur=a[cur][1] 运行后,则输出的结果是(    ) A.1234 B.1122 C.11223 D.11224 二、填空题 17.Python语言用于实现循环结构的语句有 语句和while语句。 18.阅读下列程序,写出运行结果。 s=1 for i in range (1,5):   s=s*i print(s) 运行结果是: 19.阅读下处程序写出运行结果 有四个嫌疑人甲乙丙丁涉嫌偷盗,其中一人是小偷。甲说“不是我”,乙说“是丙” ,丙说“是丁”, 丁说“丙在冤枉我”。若他们中只有一人说了假话,请编程判断谁是小偷。(注:在Python运算中,True的值为1, Fa1se的值为0)运行输出结果是 20.阅读下列程序,写出运行结果。 程序运行后,输入:8 运行结果是: 21.阅读下列程序,写出运行结果 s = 1 for i in range(1,10,3): s = s *iprint(s) 运行输出结果是: 22.阅读下列程序,写出运行结果 sum=0 for k in range(1,11):     if k%2==0: sum=sum+k print(sum) 程序运行后输出结果是: 。 三、判断题 23.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( ) 24.for循环与while循环任何时候都不可以相互替换。( ) 25.Do While循环也可以设置空循环或死循环。( ) 四、操作题 26.有n(n>=3)级台阶,从底端向上爬到顶端,每次只能爬2级或者3级台阶,求从底端爬到顶端的方案数。 (1)当n=5时,方案数为 。 (2)用迭代法计算爬n级台阶的方案数,python程序如下:    n=int(input())    f0,f1,f2=1,0,1    for i in range(3,n+1):       ____       f0,f1,f2=f1,f2,f3    print("爬n级台阶的方案数为",f3) 则划线处的代码为 。该段代码使用了 (填:递归或迭代)算法。 27.回文素数是一个既是素数又是回文数的整数。如果一个整数只能被1和本身整除,这个数就是素数。如果一个数从左向右和从右向左读是一样的,这个数就是回文数。 (1)实现判断回文素数的Python程序如下,请在划线处填入合适的代码。 def ss(i):  #判断素数    for j in range(2,i):       if  ①  :          return False    return True def hw(i):  #判断回文数    x=i    k=0    while x!=0:        k=k*10+x%10    ②    if k==i:       return True    else:       return False n=int(input("请输入待检测数据范围:")) for i in range(2,n+1):    if  ③  : print(i) 程序划线①处应填入的代码为 ; 程序划线②处应填入的代码为 ; 程序划线③处应填入的代码为 。 (2)本程序通过判断并输出回文素数,这种算法属于 (选填:“解析算法”或“枚举算法”)。 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.C 【详解】本题考查Python基础。第二个条件语句sc>=80前面缺少elif关键字,应该加上elif。最后一个条件语句没有对应的print语句的关键字,应该添加上else。故选择C。 2.A 【详解】本题考查循环结构。循环条件用于判断循环是否继续执行,当条件为真时,循环继续;当条件为假时,循环终止。故答案为:A。 3.B 【详解】本题考查循环结构。初始化s=0,k=1,i=1,如果i<32不成立则输出s,否则s=s+k*i,k=-k,i=i*2,接着判断i<32是否成立,依次类推。详细步骤如下: 初始化s=0,k=1,i=1; 1<32成立,s=1,k=-1,i=2; 2<32成立,s=-1,k=1,i=4; 4<32成立,s=3,k=-1,i=8; 8<32成立,s=-5,k=1,i=16; 16<32成立,s=11,k=-1,i=32; 32<32不成立,输出s=11。 故选项B正确。 4.C 【详解】本题考查循环与分支结构。在循环中,对字符串s中的每个字符进行了一系列的条件判断,并根据条件的不同进行了不同的字符处理。具体来说:如果字符是数字("0"到"9"之间)且位于奇数位置(i % 2 == 1),则将该数字替换为9减去该数字的结果。如果字符是大写字母且flag为True,则将该大写字母转换为相应的小写字母。其他情况下直接保留字符。最后,将处理后的字符拼接成新的字符串r,并输出。根据上述处理规则,逐个字符处理s中的字符,得到的结果为:"pyThoN2926"。故答案为:C。 5.A 【详解】本题考查的是Python的while循环。while语句格式: 当表达式的值为真时,执行循环体语句;当表达式值为假时,退出循环,执行循环体外的下一条语句(即while后面没有缩进的第一条语句)。当高度h小于珠穆朗玛峰的高度height,则继续对折,故本题应选A。 6.A 【详解】本题主要考查VB程序的执行。s=“8523691”,Len(s) \ 2=3,i=1时,m=8,n=1,满足m>n,s1=s1+m+n=“81”,i=2时,m=5,n=9,n>m,s1=s1+n+m=“8195”,i=3时,m=2,n=6,n>m,s1=s1+n+m=“819562”,程序结束,故执行该程序后,Text2 中输出的是819562,故本题选A选项。 7.A 【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将二进制数1101110通过“按权展开、逐项相加”的方法转换为十进制数110,故本题选A选项。 8.C 【详解】本题主要考查对分查找算法。变量m是依次查找的下标索引值,第一次循环,m=4,f[4]=1,根据二叉树查找规则,往后查找只会在m=4的左边或右边进行查找,不会出现选项C中f[1]和f[6]同时为1的情况,故本题选C选项。 9.C 【详解】本题主要考查Python程序的执行与调试。len(lst) -1=6,外层循环理论一共要执行6次,即加框处理论上执行6次,但当i=4时,lst已有序,循环结束,因此加框处语句被执行的次数是5。每次循环lst的变化:[1, 7, 3, 4, 3, 3, 6]→[1, 3, 7, 3, 4, 3, 6]→[1, 3, 3, 7, 3, 4, 6]→[1, 3, 3, 3, 7, 4, 6]→[1, 3, 3, 3, 4, 7, 6],故本题选C选项。 10.A 【详解】本题考查的是Python应用。阅读程序可知,从字符串s的i字母开始,如果是大写字母,并且mx<s[pre:i],则mx=s[pre:i],直到字符串s结束。s="VictoryOnTheWay",第一次碰到大写字母O,mx<s[pre:i]成立,mx=s[pre:i]="Victory";第二次大写字母W,"W">"Victory",不执行mx=s[pre:i],故最后输出:Victory。选项A正确。 11.D 【详解】本题主要考查Python程序的执行。分析程序可知,程序执行过程如下: 第一遍循环,i=0,t=s[0]='A',n=int(s[1])=1,内层for循环执行完,top=0,st[0]=0,cnt=1; 第二遍循环,i=2,t=s[0]='P',n=int(s[3])=2,内层while循环执行完,top=-1,n=1; 第三遍循环,i=4,t=s[0]='A',n=int(s[5])=3,内层for循环执行完,top=2,cnt=4,st[0]=1,st[1]=2,st[2]=3; 第四遍循环,i=6,t=s[0]='P',n=int(s[7])=2,内层while循环执行完,top=0,n=0; 第五遍循环,i=8,t=s[0]='A',n=int(s[9])=2,内层for循环执行完,top=2,cnt=6,st[0]=1,st[1]=4,st[2]=5; 循环结束,执行st[0:top+1]=[1,4,5],故本题选D选项。 12.C 【详解】本题主要考查Python程序的执行。第一个while循环执行完,pre=1,执行a[pre][1]=- 1,即a[1][1]=- 1,此时a=[["data1",1],["data2",-1],["data3",- 1]],p=head=0。第二个while循环当a[p][1]=-1时,循环结束,即输出前2个元素值,即datal->data2,故本题选C选项。 13.B 【详解】本题考查的是Python循环语句。range(365)生成0~364的整数列表,for循环依次把列表中的每个元素逐个迭代出来。由0.99365≈0.03可知,划线部分的代码应为s2*0.99。故本题应选B。 14.A 【详解】本题考查程序分析。根据题意字符串s长度为7,输出“超想你”,否则输出“很想你”。代码if a%7==0,指能被7整除,不符合题意,排除选项B和选项C。选项D中range(a),生成0到a-1数,若s长度为7,i值取到数字6,故不符合题意。故正确答案为选项A。 15.D 【详解】本题主要考查Python程序的执行与调试。 a[i]=randint(1,5)*2,a[i]随机生成2、4、6、8、10,如果a[i]不为4,且满足a[i]<a[i-1],则交换a[i]与a[i-1],即程序执行后,a中的元素除了4以外,其余元素呈升序状态,选项D中,前三个元素并未呈升序状态,故输出的结果不可能是[6,8,6,4,8],故本题选D选项。 16.A 【详解】本题考查的是Python循环与选择语句。阅读程序可知,利用循环和分支结构来输出a[cur][0],在列表中,通过循环可以得到值为:1234,故本题应选A。 17.for 【详解】本题主要考查Python循环结构。Python语言用于实现循环结构的语句有for语句和while语句。 18.24 【详解】本题主要考查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)。变量i依次取1、2、3、4,故运行结果是:s=s*i=1*2*3*4=24。 19.丙 【详解】本题主要考查Python程序的执行。分析程序可知,通过for循环遍历所有的可能,当thief是丙时,满足if判断条件,即一人说了假话,三人说了真话,flag=3,故运行输出结果是丙。 20.3 【详解】本题考查的是Python循环语句。第一行,输入n=8,并转化为整型。第二行,cnt初始值为0,第三行,进入循环,循环条件为n>1、 n初始值为8,满足循环条件。第1次循环,cnt=1+1=1, 因为8%2==0所以执行第6行,n=8/2=4,满足循环条件;第2次循环, cnt=1+1=2, 4%2==0成立,执行第6行,n=4/2=2, 满足循环条件;第3次循环,cnt=2+1=3, 2%2==0成立,执行第6行,n=2/1=1, 不满足循环条件,跳出循环,执行第10行,输出cnt,即3 21.28 【详解】本题考查的是Python循环语句及range函数。range()函数格式:range(起始值,结束值,步长)。注意:结束值不包含;步长可省略,默认为1。range(1,10,3)生成的是列表[1,4,7]。故s=1*1*4*7=28。 22.30 【详解】本题考查的是Python循环语句。sum=0,变量i的范围是1~10,如果是偶数,则执行sum=sum+i,故程序执行完,sum=sum+i=0+2+4+6+8+10=30。 23.正确 【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。 【点睛】 24.错误 【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。 25.正确 【详解】本题考查循环。空循环代表循环体没有执行语句。死循环循环条件永远为true。故正确 26. 2 f3=f0+f1 迭代 【详解】本题考查Python程序。 (1)当 n = 5 时,爬楼梯的方案数是 2,因为可以选择以下两种方式爬到顶端:先爬 2 级,然后再爬 3 级,总共 2 步。直接爬 3 级,然后再爬 2 级,总共 2 步。故答案为:2。 (2)这段代码的目的是计算爬 n 级台阶的方案数,其中 f0 表示爬到第 n-3 级的方案数,f1 表示爬到第 n-2 级的方案数,而 f3 表示爬到第 n 级的方案数。由于每次只能爬 2 级或 3 级,所以爬到第 n 级的方案数等于爬到第 n-2 级和第 n-3 级的方案数之和。故答案为:f3=f0+f1。这段代码使用了迭代算法,它使用循环来计算爬 n 级台阶的方案数。故答案为:迭代。 27. i%j==0 x=x//10 ss(i) and hw(i)或ss(i)=True and hw(i)=True 枚举算法 【详解】本题主要考查Python程序的综合应用。(1)①若i能够被j所整除,则表示该数不是素数,因此返回False,故此处填i%j==0。②处是实现回文的目的,根据i生成一个倒序的数k,此处更新x的值继续循环,故填x=x//10。③处需要同时检查素数和回文数,因此必须调用两个自定义函数。故填ss(i) and hw(i)或ss(i)=True and hw(i)=True。(2)根据算法特点,将所有数据进行列举,因此属于枚举算法。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

4.4运用循环结构描述问题求解过程2024—2025学年高中信息技术粤教版(2019)必修1
1
4.4运用循环结构描述问题求解过程2024—2025学年高中信息技术粤教版(2019)必修1
2
4.4运用循环结构描述问题求解过程2024—2025学年高中信息技术粤教版(2019)必修1
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。