4.4.3 循环嵌套的应用 知识点题库

小张设计了某企业职工IC卡查询系统,输入职工的卡号,可以查出该卡号对应的余额。所有职工的IC卡号和相应的余额已分别保存在zg数组(按从小到大排序)和ye数组中,第i个职工卡号保存在zg(i)中,对应的卡号余额保存在ye(i)中。

程序界面如图所示,左边列表框List1中显示的是部分职工的卡号和余额,在文本框Text1中输入职工的IC卡号,单击“查询余额”按钮(Command1)后,如果找到此卡号,则在标签Lab3中显示“此卡号余额为”和对应的余额值,如果未找到则显示“找不到此卡号,请重新输入”。

 

解决此问题的部分程序段如下:

Const n=500' 设卡号总数为500

Dim zg(1 To n) As Long

Dim ye(1 To n) As Single

Private Sub Form1_Load()

' 此过程用于对数组zg和数组ye进行初始赋值,代码略

End Sub

Private Sub Command1_Click()

Dim x As Long, i As Long, j As Long, m As Long, find As Boolean

x=Val(Text1.Text)

i = 1 : j = n : find = False

Do While   ‘改错

     m = Int((i + j) / 2

     If x = zg(m)  Then

             ①     

     Else If        ②       Then

       j = m - 1

     Else

       i = m + 1

     End If

Loop

If find = true Then

       Lab3.Caption=″此卡号余额为″+Str(ye(m))+″元″

Else

       Lab3.Caption=″找不到此卡号,请重新输入″

End If

End Sub

  1. (1) 在设计程序界面时,要使命令按钮上显示“查询余额”,应修改命令按钮的属性值。
  2. (2) 程序中加框处代码有错,请改正。
  3. (3) 在程序①、②画线处填入适当的语句或表达式。将程序补充完整:

    程序中①画线处应填入

    程序中②画线处应填入

阅读下列程序,选出运行结果。

For i = 1 To 10             ‘i控制*的行数

    For j = 1 To i            ‘j控制每行*的个数

        Print "*";              ‘输出*

    Next j

Print                      ‘输出换行

Next i

运行结果是:(    )

A . B . C . D .
这是一段网页代码:

  <div class="movies_title">

      <h1>冰雪奇缘2</h1>

      <h2>Frozen II<h2>

  </div>

要采集到“冰雪奇缘2”这几个字符,请完善以下爬虫程序(   )

all_title = soup.find_all('  ①  ', class_="  ②  ")

   for j in all_title:

    soup_title = bs4.BeautifulSoup(str(j), "html.parser",)

    title.append(soup_title.  ③  .string)

A . div,h1,h2 B . div, movies_title,h1   C . div, movies_title,h2 D . class,h1,h2
有如下VB程序段:

s ="waste" : n = Len(s)

s1 = Text1.Text : flag = False

For i=1Ton

    If Mid(s,i,1) = Mid(s1, 1,1) Then

        flag = True

        For j = 2 To Len(s1)

            If Mid(s1, j, 1)<>Mid(s, (j+i-2) Mod n + 1, 1) Then flag = False: Exit For

        Next j

        If flag Then Exit For

    End If

Next i

执行该程序段后,若flag变量值为True,则文本框Text1中输入的内容不可能的是(    )

A . ste B . tewa C . steaw D . Wastew
有如下VB程序段:

s=0

For i=1 To 5 Step 2

  s=s+i

Next i

s=s+i

Label1.Caption=Str(s)

该程序段运行后,标签Label1上显示的内容是(  )

A . 3 B . 9 C . 14 D . 16
有如下VB程序段:

Dim a(0 To 25)As Integer

s=Text1.Text

For i=1 To Len(s)

    ch=Mid(s,i,1)

    If ch>=“a” And ch<=“z” Then

        m=Asc(ch)-97

        a(m)=a(m)+1

    End If

  Next i

已知数组a中元素的初值为0,若文本框Text1中输入的内容是“One of the most important questions;”,执行该段程序后,数组元素a(14)的值为(  )

A . 0 B . 2 C . 4 D . 5
编写Python程序进行成绩分析,学号为1~ 10号同学的信息技术学科成绩依次存储在列表xx中,部分程序代码如下,请回答下列问题:

xx=[35,29,28,42,21,38,17,44,18,19]

sum=0

for i in           

sum=sum+i

          

print("信息学科平均分为:"+str(ave))

  1. (1) 程序中划线处应填入的代码是什么?
  2. (2) 学号为1~ 10号同学的通用技术学科成绩依次存储在列表ty中,若要实现统计技术学科分数(技术学科分数为信息技术与通用技术两学科分数之和)大于等于80分的人数,则程序中划线处应填代码是什么?

    xx=[35,29,28,42,21 ,38,17,44,18,19]

    ty=[29,31,26,38,40,41,26,41,21,33]

    c=0

    for i in :

         if :

         c=c+1

    print("技术学科分数大于等于80分的学生有:"str(c)+"个"

小李编写了一个实现字母字符串去重功能的VB程序(只输入大小写字母,大小写字母视为同一字符,只保留第一次出现的字符),运行界面如图所示,程序运行时,在文本框Text1中输入字符串,单击“去重”按钮,将字符串中重复的字符去除,在标签Label1中显示去重之后的结果(已知“a”的ASCⅡ值为97,“A”的ASCIⅡ值为65),实现上述功能的VB程序如下,请回答下列问题:

Private Sub Comand1_Click( )

    Dim s As String, c As String

    Dim t As Integer, I As  Integer

    Dim a(1 To 26)As Integer

    s=Text1.Text

    For i=1 to 26

        a(i)=0

    Next i

    i=1

    Do While i<=Len(s)

        c=Mid(s, i, 1)

        If    ①     Then

            t=Asc(c)-96

        Else

            t=Asc(c)-64

        End If

        If a(t)=0 Then

            a(t)=1

        Else

           

                 ②    

        End If

        i=i+1

    Loop

    Label1.Caption=s

End Sub

  1. (1) 根据代码可知,“去重”按钮的对象名为
  2. (2) 请在划线处填入合适的代码

     ② 

  3. (3) 加框处代码有误,请改正
编写VB程序实现以下功能:在文本框Text1中输入一个十进制正整数,单击“计算”按钮Command1后,将该正整数转换为二进制数,最后在文本框Text2中输出该二进制数中连续“0”或“1”的最长个数情况。

如:输入十进制数35,将其转换为二进制数为100011,其中最长连续数字是3个“0”。程序运行界面如图所示。

  1. (1) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim n As Integer, i As Integer, j As Integer, m As Integer

        Dim s As String, ch As String, ch1 As String, ch2 As String

    n = Val (Text1. Text)

        Do While n<>0

            s=CStr(n Mod 2)+s    ‘CStr将数字转化为字符串,但不会有前导空格

           

        Loop

        ch1 = Mid(s, 1, 1): ch = ch1

        i=2:j=1:m=0

        For i=2 To Len(s)

           ch2 = Mid(s, i, 1)

            If  Then

              If i-j> m Then

                m=i-j

               ch = ch1

            End If

            ch1 = ch2

           

            End If

        Next i

       

        Text2. Text = Str(m) & “个”& ch

    End Sub

  2. (2) 如果将程序中加提处的代码去掉,在文本框Text1中输入15,单击Command1后在标签Label2中显示的内容是
下面的语句哪个会无限循环下去(    )
A . for a in range(10):     time.sleep(10) B . while 1<10:     time.sleep(10) C . while True:     break D . a = [3,-1,’,’] for i in a[ ]:     if not a :         Break
有如下VB程序段,实现镜像数功能,若s的值为123456,则输出结果t为123456654321,代码如下:

s = 123456

i = 10: t = 0

Do While s > 0

      

Loop

Text1.Text = str(t)

方框中的代码由以下三部分组成:

①i = i * 100

②s = s \ 10

③t = t * 10 + s Mod 10 + (s Mod 10) * i

顺序正确的是(   )

A . ①③② B . ②③① C . ②①③ D . ③②①
有如下程序段

Private Sub Command1_Click ()

    Dim a(1 To 10) As Integer,i As Integer

    For i=1 To 10

        a(i)=i^i

    Next i

    List1.AddItem Str(a(i))

End Sub

运行程序,单击命令按钮Command1后,出现的错误提示为(    )

A . 下标越界 B . 类型不匹配 C . 溢出 D . 子程序或函数未定义
小金同学学完了进制转换后,对课后的不同进制的加减法很是头疼,爱动脑筋的小金突发奇想,能不能用python程序来完成这些作业呢?请帮小金完成代码编程.

def convert(s):

    m=0

    le=len(s)

    key=s[le-1]

    if key=="B":

        n=2

    elif key=="D":

            ①   

    else:

        n=16

    i=0

    while i<=le-2:

        c=s[le-1-i]

        if c>="0"and c<="9":

            a=ord(c)-ord("0")

        elif c>="A"and c<="F":

            a=ord(c)-ord("A")+10

           ②    

        i+=1

    return m

s=input("请输入算式")

result=0;suanfu1="";suanfu2="";s1=""

for i in range(len(s)):

    c=s[i]

    if c=="+" or c=="-" or c=="=":

            ③  

        suanfu1=suanfu2

        suanfu2=c

        if suanfu1=="":

            result=t

        if suanfu1=="+":

            result=result+t

        if suanfu1=="-":

            result=result-t

        s1=""

    else:

        s1=s1+c

print("计算结果为"+str(result)+"D")

  1. (1) 将程序横线处补充完整

     ② ③ 

  2. (2) 如输入“1110B+10D-30H=”则输出结果为
小明需要根据订单的取件距离依次安排快递员取件。快递员出发后不能中途折返,但可以接更远距离的快递订单。当小明新接到一个取件订单,他会依次安排可以取件的快递员取件,若该订单距离小于所有已出发的快递员的最远距离,则安排新的快递员出发取件。编写VB程序,实现上述功能。程序运行时,在文本框Text1中输入订单距离(各数值之间用“,”隔开),单击“安排”按钮Command1后,在标签Label2中显示最后一件快递的收取情况。运行界面如图所示。

  1. (1) 运行窗体中,具有Caption属性的对象共有类。
  2. (2) 若快递订单的取件距离依次为“243,123,167,309,183,229,87,333,183”,则最后距离为183的订单由号快递员收取。
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim dd(0 To 100) As Integer           '记录所有订单的取件距离

    Dim fp(0 To 100) As Integer             '存储第x个快递员取件的最远距离

    Dim xs(0 To 100) As String

    Private Sub Command1_Click()

        Dim n As Integer,i As Integer,k As Integer,s As String

        Dim left As Integer,right As Integer,m As Integer

        Dim x As Integer,r As Integer

        Randomize

        s = Text1.Text: n = 1: i = 1

        Do While i <= Len(s)

            k = i: ch = Mid(s, k, 1)

            Do While

                k = k + 1: ch = Mid(s,k,1)

            Loop

            dd(n) = Val(Mid(s,i,k - i))

            i = k + 1: n = n + 1

        Loop

        x = 1: fp(x) = dd(1)

        For i = 2 To n - 1

            left = 1

            right = x

            Do While left <= right

                m = (left + right) \ 2

                If  Then

                    right = m - 1

                Else

                    left = m + 1

                End If

            Loop

            

            fp(r) = dd(i)

            If r = x + 1 Then x = x + 1

        Next i

        Label2.Caption = "第" + Str(i - 1) + "件快递将由第" + Str(r) + "号快递员收取"

        '列表框List1中显示每位快递员的收取情况,代码略

    End Sub

  4. (4) 程序加框处代码有错,请改正
已知数组a中的元素按非递减有序排列,在程序运行时显示在Text1中。编写程序实现如下功能:删除数组的重复元素,并更新数组的长度,在Text2输出新的数组元素值。程序运行界面 如图所示。

  1. (1) 要是程序运行时,窗体Form1标题立即立即显示为“删除重复数组元素”,可在(单 选:A .Form_Load()/B .Form_click()/C .Command1_Click())事件过程中添加Form1.Caption=“删除重复数组元素”语句来实现。
  2. (2) 为实现上述功能的VB程序如下,请在划线处补充缺失的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Dim lena As Integer    '数组a的实际长度 Dim s As String

    Private Sub Form_Load()

        '生成lena个非递减序列,并输出到文本框text1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer i = 1

        Do While i < lena

            If a(i) <> a(i + 1) Then i =

            Else

                For j = i + 1 To lena

                    a(j - 1) =  

                Next j

                lena =  

            End If

        Loop

        s = ""

        For i = 1 To lena

            s = s + Str(a(i))

        Next i

        Text2.Text = s

    End Sub

乒乓球比赛规则原先采用21分制,后来改成11分制。改制后发现一些慢热型选手不适应11分制,只能选择退役。小明就是一位慢热型选手,他想搞清楚11分制和 21分制对选手的不同影响,编写了如下程序。对于同样的比赛记录(记录由字母w与f组成,其中 w 表示小明获得一分,f 表示对手获得一分),发现11分制对于慢热型选手不利。

例如有如下比分记录:

"fffffffffffffwwwffffffffwwwfwfwfwffwwwfffwwffwwffffwwwwffwwwwffwwwfffwwwwwffwwwwffww"。

采用11分制,各局比分为: 0 : 11,6 : 11,10 : 12,11 : 5,11: 7。采用21分制,各局比分为: 3 : 21,21 : 16,14 : 9。

  1. (1) 如果记录是 wwwffffffffffwfwwfwwfwfwfffffffwwwwwfffwf,请问11分制比赛的第二局小明与对手的比分是 (注:当任一方得分大于等于11分,且领先对方2分及以上,领先一方赢一局)。
  2. (2) 在程序划线处填入合适代码。

    def check(a,b,fz):

        flag=False

        if   :

            flag=True

        return flag

    s=input("输入比赛记录:")

    a=[0]*1000

    b=[0]*100

    c=[0]*100

    j=0;k=0;x=-1

    f1=0;f2=0;h1=0;h2=0

    for i in range(len(s)):

        if s[i]=="w":

            a[i]=1

    n=len(s)

    for i in range(n):

        if a[i]==1:

            f1=f1+1

        else:

            f2=f2+1

        h1=h1+a[i]

        

        if check(f1,f2,11):

            b[j]=f1;b[j+1]=f2

            j=j+2

            f1=0;f2=0

        if check(h1,h2,21):       

            c[k]=h1;c[k+1]=h2

            k=k+2

                 a

            x=i

    #输出二种分制下各局比分,代码略

阅读下列程序,写出运行结果。

m = int(input("请输入一个正整数:"))

x = m

y = m

for i in range (9):n = int(input("请输入一个正整数:"))

if n<x :

x = n

if n<y :

y = n

print(x, y)

程序运行后,依次输入:12   35   9   11   23   88   13   19   29   55

运行结果是:

小明制作了一个“室内温度控制系统”的用户登录查看数据的 Web 界面,程序可以实现通过简 单的输入用户名,返回不同欢迎用语,并实现读取 URL 中用户名和密码的数据。其中温度传感 器连接正确后,打开 micro:bit 的离线版 IDE 程序 BXY,输入以下代码获取温度值:

from microbit import *       #引用 micro:bit 库

while True:

    print(temperature())       #向串口发送当前环境温度的浮点数值

           ①       #延时 0.5 秒

Web登录界面开发代码内容如下:

from flask import Flask       #导入 Flask 库

from flask import render_template app=Flask(  name  )

@app.route("/")      #路由本地默认路径

def index():

return "Index Page"

@app.route("/hello")

def hello():

return "Hello World!"

@app.route("/user/<name>")

def user(name):

return "hello," + name + "!" if   name__=="  main  ":

app.run(                         )②

用户名和密码读取代码如下:

from flask import Flask,request app=Flask(  name  )

              

def user(): user=request.args.get("name") psd=request.args.get("psd")

return "用户名:"+user+"密码"+psd if   name__=="  main  ":

app.run()

用户名和密码获取的运行界面如下图所示:

  1. (1) 在①处的代码是
  2. (2) Web 登录程序运行后,再浏览器输入网址 //127.0.0.1:5000/user/xiaoming, 网页显 示内容为
  3. (3) 如果要在开发配置中打开调试功能,②处代码填写
  4. (4) 在③处应填写代码为       
    A . @app.route(“/”,methods=[“POST”]) B . @app.route("/user",methods=["POST"]) C . @app.route("/",methods=["GET"]) D . @app.route("/user",methods=["GET"])
阅读下列程序,写出运行结果

ls=[23,45,67,87]

def is_prime(n):

    for i in range(2,n):

        if n%i==0:

            return False

    return True

sum=0

for x in ls:

    if is_prime(x):

        sum=sum+x

print(sum)

运行结果是

输入一个字符串,要求统计连续出现的字符次数最多有几次,例如输入s=“AABDDD”,字符“A”出现2次,字符“B”出现1次,字符“D”出现3次,故最终输出3。

s=input("请输入字符: ")

Max=0

c=1

for i in range(1,len(s)):

  if s[i]==s[i-1]:

    c+=1

    if c>Max:

                         

    else:

                         

print(Max)

程序代码如上所示,其中①和②处的应填入的代码是(     )

A . ① Max+=1  ② c+=1 B . ① Max+=1   ② c=1    C . ① Max=c   ② c=0 D . ① Max=c    ② c=1
最近更新