2023-2024学年高一上学期粤教版(2019)必修一4.4运用循环结构描述问题求解过程

2024-08-11
| 15页
| 152人阅读
| 1人下载

内容正文:

4.4 运用循环结构描述问题求解过程 一、选择题 1.下列有while循环结构的说法不正确的是(  ) A.While循环格式一般为:While(表达式):语句或者语句组 B.执行过程中表达式一般是一个关系表达式或逻辑表达式; C.表达式为真执行循环体;为假退出循环。 D.表达式为假执行循环体;为真退出循环。 2.以下对Python循环语句的描述错误的是 (   ) A.循环语句的结束条件设置不合理会造成无限循环 B.所有的for循环都可以用while循环改写 C.for循环一般用于循环次数已知的情况 D.for循环和while循环不能相互嵌套 3.关于python语句功能描述正确的(   ) A.ord(chr(x)+26)    #若字符变量x是大写字母即变成小写字母 B.str(x)+str(y)    #求两数之和 C."abcd"[2:4]    #运行结果为"bcd" D.2**3*2/2 % 5    #结果3 4.运行如下Python程序,结果为(  )。 A.1 B.3 C.6 D.18 5.某Python程序如下: s="372LP";t="" for i in range(len(s)):     if s[i]>="0" and s[i]<="9":         t=t+s[i] print(t) 程序运行后,输出的结果是(    ) A.12 B.372 C.273 D.3+7+2 6.以下程序的运行结果是(    ) A.i!=t B.i!=1 C.i!=6 D.3!=6 7.关于队列,下列说法错误的是(   ) A.队列是先进先出(FIFO)表,它的数据元素只能在一端依次添加(进队),在另一端依次删除(出队) B.pop()方法可以删除列表的首元素(相当于队列的“出队”操作) C.pop(0)方法可以删除列表的首元素(相当于队列的“出队”操作) D.append方法可以在列表尾部添加一个数据元素(相当于队列的“入队”操作) 8.有如下Visual Basic程序段: s = 0 For a = To 8 Step 2 s =" s" + a Next a 若要使语句s =" s" + a执行3次,则循环变量a初值为(    ) A.1 B.2 C.3 D.5 9.有如下VB程序段: a(1) = 11 : a(2) = 14 : a(3) = 23 : a(4) = 23 : a(5) = 30 : a(6) = 42 key = Val(Text1.Text) L = 1 : R = 6 : x = 0 Randomize Do while L <= R     mid = Int(Rnd() * (R-L+1))+ L     If a(mid) = key Then         Exit Do     ElseIf a(mid) > key Then         R = mid - 1         x = x - 1     Else         L = mid + 1         x = x + 1     End If Loop If L <= R Then     Label1.Caption = "查找成功," + "位置为" + str(mid) Else     Label1.Caption = "查找失败" End If 该程序执行后,在文本框Text1中输入23,则x的值不可能是(  ) A.-3 B.-2 C.1 D.2 10.在Python 语言中,如果要程序一直循环下去, 则循环的“条件”要一直为“True”,因此在程序循环开始的地方写上语句(  ) A.while True: B.while 2>1: C.while 2<3: D.以上选项都对 11.数组元素a[0]至 a[n-1]依次存放着n个数据,现需要将下标为 x(0≤x≤n-1)元素在逻辑上删除,例如:n为5,数组a为[1,3,5,7,9] ,x为2,删除操作后输出[1,3,7,9]。实现该功能的程序段如下,横线中应填入的正确代码为(   ) a=[1,3,5,7,9] n=len(a) x=2 for i in range(① ):     ② print(a[:-1]) A.①x,n ②a[i-1]=a[i] B.①n-x    ②a[i-1]=a[i] C.①x,n ②a[i]=a[i+1] D.①x-n,-1 ②a[i]=a[i+1] 12.在 Python 语言中,在 while 语句后面的条件不满足时就退出循环,但是,如果我们想在循环的过程中直接退出循环体,使用的命令是(  ) A.len B.end C.break D.del 13.费马平方和定理:质数能表示为两个平方数之和的充分必要条件是该质数被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) 14.某 Python程序段如下: s = "420play+2qQ" res = "" for i in range(len(s)):     if "0" <= s[i] <= "9":         res = s[i] + res     if i % 3 == 0 and "a" <= s[i] <= "z":         res = res + chr(ord(s[i]) - 32) print(res) 执行该程序段后,输出的结果是(   ) A.4202PYQ B.2024A C.PYQ4202 D.2024PYQ 15.某Python程序如下: p=")!@#$%^&amp;*(" c="cra2edu" t="" for i in range(len(c)//2+1):    if i%2==0:       t+=c[len(c)-i-1]    elif c[i]>="0" and c[i]<="9":       t+=p[int(c[i])]    else:       t+=c[i] print(t) 程序运行后,输出的结果是(  ) A.ure@ B.ure@a C.ude@ D.cda! 16.有如下程序段: Dim s(1 To 81) As Integer, i As Integer, j As Integer, c As Integer, temp As Integer c=0 : s(1) = 0 For i = 1 To 9 For j = 1 To i temp = s(j * i) s(j * i) = j * i If temp <> s(j * i) And s(j * i) Mod 9 = 0 Then c = c + 1 Next j Next i 该程序段运行后,变量 C 的值为( ) A.9 B.10 C.11 D.12 二、填空题 17.Python语言用于实现循环结构的语句有 语句和while语句。 18.阅读下列程序,写出运行结果。 程序运行后,输入:2021 运行结果是: 19.在 IDLE 编辑器中运行以下程序,屏幕打印 颗*。 for i in range(0,10,2):    print(" *" ) 20.以下Python程序段的运行结果是 。 n = 36 s = 0 for i in [2,3,4,5,6,7,8]:   if n % i == 0:     s = s + 1 print (s) 21.已知a=2,b=1,以下Python程序段运行结束后,b的值是 。 22.阅读下列程序,写出运行结果 警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0) persons=[’甲’,’乙’,’丙’,’丁’] for thief in persons: flag =(thief!=’甲’)+(thief==’丙’)+(thief ==’丁’)+(thief!=’丁’) if flag == 3: print(thief) 运行结果是: 三、操作题 23.某校图书馆提供3类自习室,A类最多容纳2人,B类最多容纳4人,C类最多容纳8人,以1小时为单位进行预约,每人每天只能预约一次,每次预约仅限个人,规定预约时间结束之前必须离开。图书馆每天6点开馆,22点闭馆。编写程序,输入某自习室号牌,根据已预约情况,输出该自习室还能被预约的时间段。例:读取“A102”已预约情况[[6,11],[15,18],[8,12],[15,22]],其中“A102”表示为A类102号自习室,[6,11]表示某个人预约6:00开始,11:00前必须离开,时间占用如图所示,则该自习室还能预约的时间段为[[6,8],[11,15],[18,22]]。请回答下列问题: (1)若“B101”的已预约情况为[[6,11],[8,12],[8,11],[6,12]],则该自习室还能预约的时间段是 。(时间段格式参照题中样例) (2)实现上述功能的部分Python代码如下,请在划线处填入合适的代码。 r= input("输入自习室号牌:") #根据自习室号牌r,获取该自习室可容纳的人数上限和预约情况分别存入ceil和time中,代码略 #如time =[[6,11],[15,18],[8,12],[15,22]] bucket = [0]*24#记录该自习室每个时刻被预约的人数 for period in time: for i in range(period[0],① ): bucket[i]+= 1 ans=[]; rec=[] for i in range(6,22): if bucket[i]<ceil: rec.append(i) if len(rec)==0: print("该自习室目前没有可预约时段") else: left,right =0,0 i=1 while i<len(rec): if rec[i]==rec[i-1]+1: ② else: ans.append([rec[left],rec[right]+1]) left,right=i,i ③ ans.append([rec[left],rec[right]+1]) print(r,"可预约的时间:", ans) 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.D 【详解】本题考查while循环结构 While循环格式一般为:While(表达式):语句或者语句组;执行过程中表达式一般是一个关系表达式或逻辑表达式;表达式为真执行循环体;为假退出循环。故本题选D选项 2.D 【详解】本题考查Python循环结构的描述。for循环和while循环可以相互嵌套。故选D。 3.D 【详解】本题考查表达式的运算。A选项,会导致类型错误。B选项,字符拼接,非求和。C选项,结果为“cd”。D选项正确,结果为3。故正确答案为选项D。 4.C 【详解】本题主要考查Python循环结构。分析程序可知,该程序求m、n的最大公约数,程序结束后m=6,此时r=0,故本题选C选项。 5.B 【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将字符串s中的数字保存到变量t中,s="372LP",因此t="372",故本题选B选项。 6.D 【详解】本题主要考查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,循环结束后t=t*i=1*1*2*3=6,即运行结果是3!=6,故本题选D选项。 7.B 【详解】本题考查数据结构。pop()方法是删除列表的最后一个元素,而不是首元素,这是错误的。其它选项正确。故正确答案为选项B。 8.C 【详解】本题主要考查VB程序的执行。a大于8时退出循环,每次递增2,若a=1,则循环结束时,语句s =" s" + a执行4次,a=9;若a=2时,则循环结束时,语句s =" s" + a执行4次,a=10;若a=3时,则循环结束时,语句s =" s" + a执行3次,a=9,故本题选C选项。 9.A 【详解】本题主要考查VB程序查找算法。key=23,L=1,R=6,x=0,第一种情况:mid = Int(Rnd() * (6-1+1))+ 1,mid是随机生成[1,6]之间的整数,当mid=1时,a(1)<key,L=mid+1=2,x=x+1=1,继续循环,mid = Int(Rnd() * (6-2+1))+ 2,mid是随机生成[2,6]之间的整数,当mid=2时,a(2)<key,L=mid+1=3,x=x+1=2,继续循环,当mid=3时,程序结束,故x可能是2;第二种情况:当mid = Int(Rnd() * (6-1+1))+ 1,mid是随机生成[1,6]之间的整数,当mid=2时,a(mid)<key,L=mid+1=3,x=x+1=1,继续循环,mid = Int(Rnd() * (6-3+1))+3,mid是随机生成[3,6]之间的整数,当mid=3时,程序结束,故x可能是1;第三种情况:当mid = Int(Rnd() * (6-1+1))+ 1,mid是随机生成[1,6]之间的整数,当mid=5时,a(5)>key,R=mid-1=4,x=x-1=-1,继续循环,mid= Int(Rnd() * (4-3+1))+3,mid是随机生成[3,4]之间的整数,当mid=4时,程序结束,故x可能是-1;第四种情况:当mid = Int(Rnd() * (6-1+1))+ 1,mid是随机生成[1,6]之间的整数,当mid=6时,a(6)>key,R=mid-1=5,x=x-1=-1,继续循环,mid = Int(Rnd() * (5-3+1))+3,mid是随机生成[3,5]之间的整数,当mid=5时,a(5)>key,R=mid-1=4,x=x-1=-2,继续循环,mid = Int(Rnd() * (4-3+1))+3,mid是随机生成[3,4]之间的整数,当mid=4时,程序结束,故x可能是-2。故该程序执行后,在文本框Text1中输入23,则x的值不可能是-3,故本题选A选项。 10.D 【详解】本题考查的是while循序。2>1、 2<3表达式值为True,故本题应选D。 11.D 【详解】本题考查程序分析。需要指定range的参数,确定遍历的下标。range的参数可是使用负数索引,故从x-n到-1。每次遍历后一个数覆盖前一个数,实现删除,故a[i]=a[i+1]。正确答案为选项D。 12.C 【详解】本题考查的知识点是Python循环语句。在Python中,可以使用break语句退出循环。continue语句用于跳过当前循环的剩余部分并进入下一次循环,故本题应选C。 13.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选项。 14.D 【详解】本题考查程序分析能力。当字符是数字时候,将数字向前累计拼接到res上。当索引能被3整除且是小写字母时候,则转化成大写字符并向后拼接累计到res后面。故正确答案为D选项。 15.A 【详解】本题主要考查Python程序的执行。程序段实现了对字符串的处理。由“range(len(c)//2+1)”生成的序列为[0,1,2,3],循环执行4次。索引i为偶数时,在字符串c中取与c[i]对称的字符,因此i=0时,将字符“c”对称的字符“u”取出并拼接在字符串t中;索引i为奇数时,取出字符“r”并拼接在字符串t中;i=2时,将字符“a”对称的字符“e”取出并拼接在字符串t中;当c[i]为数字时,则在字符串p中以c[i]为索引取出字符“@”。故本题选A选项。 16.A 【详解】本题考查数组、循环嵌套和枚举算法。外层共9次循环,第一次循环,s(j * i)=1*1=1;第二次循环,内层循环执行两次,s(j * i)的值分别为2、4;……;依次类推枚举s(j * i)的值如下图: temp <> s(j * i) And s(j * i) Mod 9 = 0 temp 记录的是 s(j * i)上一次被赋值的量,只有当上一次未被赋值,且能被 9 整除时 C 才能自增 1,因此由表中能被 9 整除的项总计 12 个,有 3 项重复,因此答案为 9 个。最后一行数据为 9 的 1,2,3,4……9 的倍数的枚举,涵盖了表中所有能被 9 整除的情况,由此也能直接得出结论 C 为 9, 选项A正确 17.for 【详解】本题主要考查Python循环结构。Python语言用于实现循环结构的语句有for语句和while语句。 18.1202 【详解】本题主要考查Python程序的执行。分析程序可知,该程序实现将输入的正整数x,逆着输出。故程序运行后,输入:2021,运行结果是:1202。 19.5 【详解】本题考查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依次取0、2、4、6、8,因此循环5次,即屏幕打印5颗*。 20.4 【详解】本题主要考查Python程序执行。分析程序可知,变量s统计列表[2,3,4,5,6,7,8]中是36因子的个数,满足的数有2、3、4、6,故运行的结果是4。 21.4 【详解】本题考查的是Python循环语句。初始a=2,b=1。 a>=b成立,第一次循环,执行b=a*b=2*1=2; a>=b成立,第二次循环,执行b=a*b=2*2=4; a>=b不成立,跳出循环,故b的值是4。 22.丙 【详解】本题主要考查 Python程序执行。分析程序可知,只有当thief=’丙‘时,满足flag=3,即4个人中只有一人说了假话,故运行结果是丙。 23. [[6,8],[11,22]]或等价描述 period[1] ringt=i或right+=1 i+=1或i=i+1 【详解】本题考查的是Python综合应用。 (1)B类最多容纳4人,已预约情况为[[6,11],[8,12],[8,11],[6,12]],则该自习室还能预约的时间段是:[[6,8],[11,22]]。 (2)period[0]表示预约开始时间,统计自习室每个时刻被预约的人数,故第一空应为:period[1];如果可预约时间是连续的,则可预约时间右边界往右移一位,故第二空应为:ringt=i或right+=1;继续判断下一个可预约时间,故第三空应为:i+=1或i=i+1。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

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