分支结构语句及程序实现 知识点题库

小明对教材上的冒泡算法进行优化,当数据已经有序时就停止加工,为此他编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label1中显示排序过程的加工遍数,在标签Label2中显示排序过程的数据交换次数。运行效果如图所示。

实现上述功能的VB代码如下,但加框处代码有误,请改正。

Const n=10

Dim a(1 To n)As Integer

Private Sub Form_Load( )

‘排序前的数据存储在数组a中,并在List1中显示,代码略

End Sub

Private Sub Command1_Click( )

  Dim flag As Boolean

  Dim x As Integer, y As Integer

  x=0:y=0

  flag=True:i=1

  Do While i<=n-1 And flag

    flag=False

    For j=n To i+1 Step-1

      If   Then    ‘①

          t=a(j)

          a(j)=a(j-1)

          a(j-1)=t

          flag=True

               ‘②

      End If

  Next j

  y=y+1

        ‘③

Loop

Label1.Caption="经过"+Str(y)+"遍排序数据有序!"

Label2.Caption="数据总共交换"+Str(x)+"次!"

For i=1 To n

  List2.AddItem Str(a(i))

Next i

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②;③

某对分查找的程序代码如下

Key = Int(Rnd * 25) * 2

n = 0: i = 1: j = 10

Do While i <= j

    m = (i + j) \ 2

    If Key = a(m) Then

    Exit Do

    If Key < a(m) Then

        j = m - 1: n = n + 1

    Else

        i = m + 1: n = n - 1

    End If

Loop

Text2.Text = Str(n)

其中 a(1)到 a(10)数组的值分别“2,3,6,9,10,18,38,40,47,48”, 执行该程序段后,n 的值不可能的是(   )

A . 0 B . -1 C . -2 D . -3
根据上题的算法描述以下划线处填写Python程序代码。

数据连接(代码略)

userID = request.POST.get(‘txtUserID’)

userPassword = request.POST.get(‘txtPassword’)

cursor.execute(u""" Select * FROM [student] where [学号]

    = '%s' and 密码= '%s'""" %(userID,))

list=cursor.fetchall( )

:

   for row in list :

       request.session['userID']=

       request.session['userName']=

       return HttpResponseRedirect("")

else :

    warn= u"

有如下VB程序段:

Private Sub Command1_Click()

    Dim s As String, ch As String

    Dim n As Integer, t As Integer, c As Integer

    s = "Go-2020-12"

    n = Len(s):t = 0

    For i = 1 To n

        ch = Mid(s,i,1)

        If ch >= "0" And ch <= "9" Then

            t = t + Val(ch)

        Else

            c = t: t = 0

        End If

    Next i

    Label1.Caption = Str(c)

End Sub

执行完以上程序段后,标签Label1上显示的内容为(    )

A . 7 B . 2 C . 3 D . 4
某仓库对货物的编码规则为:货物类型(4-8位英文字母)货物编码(4-8位数字)货物校验码。货物编码的每一位数除以2产生的余数,倒序输出即是货物正确的校验码,现编写如下VB程序,如图在Text1中输入货物完整编码后,判定校验码是否符合标准,并在Label1中输出结果。

  1. (1) 由程序可知,此程序中按钮的名称为
  2. (2) 请在划线处填入合适的代码。

    Private Sub check_Click()

        Dim s as string, ss as string, s1 as string, s2 as string

        Dim i as integer, bz as integer

       

        bz = 0

        For i = 1 To Len(s)

            ss = Mid(s, i, 1)

            If ss = "-" Then

                bz = bz + 1

            ElseIf bz = 1 Then

                s1 = CStr() + s1      ‘Cstr函数是在str的基础上去除前导空格

            ElseIf bz = 2 Then

                s2 = s2 + ss

            End If

        Next i

        If  Then

            Label1.Caption = "符合标准"

        Else

            Label1.Caption = "不符合标准"

        End If

    End Sub

从2022年1月起,浙江省的选考成绩将采用新的一分一赋的赋分制,赋分等级与比例如图1所示。

赋分具体步骤为:

第一步,将卷面得分按人数比例划分为20个赋分区间,得出每个区间卷面得分的上限、下限。(说明:每个赋分等级人数=总人数×每个赋分等级比例(结果四舍五入取整) ;当卷面得分相同但人数超出该等级人数时,则减少下一档的人数。)

第二步,对每个区间的卷面得分进行等比例转换成赋分,公式为:

其中,s2、s1为卷面得分区间的上限和下限,s为待转换卷面得分;t2、t1为赋分区间的上限和下限,t为卷面得分等比例转换后的赋分。

第三步,将转换后的赋分t取整(小数部分四舍五入)。

编写VB程序,实现成绩赋分功能:在列表框List1中显示某市所有学生的考号,原始成绩(无0分,降序排列)和名次(同分同名),单击“成绩赋分”按钮Command1后,赋分成绩按从高到低的顺序显示在列表框List2中。程序界面如图2所示。

  1. (1) 若赋分区间为87-85,其对应的卷面得分区间在84-81,某考生的卷面得分为83,则通过比例公式转换,该考生的等级赋分为分 。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 18000      '总人数

    Dim kh(1 To n) As String    '学生考号

    Dim cj(1 To n) As Single     '原始成绩

    Dim cj2(1 To n) As Integer    '赋分成绩

    Dim mc(1 To n) As Integer '原始成绩的排名

    Dim pro(1 To 20)As Single    '每个等级的人数比例

    Dim t(1 To 40) As Integer    '每个等级赋分区间的上限和下限

    Dim s(1 To 40) As Single     '每个等级卷面得分的上限和下限

    Dim num(1 To 20) As Integer

    Private Sub Form_ Load()

        '从数据库中读取数据,将考号、原始成绩分别存储在数组kh和数组cj中

        '将每个等级的比例存入数组pro中

        '将每个赋分区间的上限、下限存入数组t中(如t(1)、t(2) 分别存储等级1的赋分上限100, 下限97)

    '将数组cj降序排列,计算出名次存入数组mc中,并显示在List1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim flag As Boolean, k As Integer, i As Integer

        num(1) = Int(pro(1) * n + 0.5)

        For i=2 To 20

            num(i) =

        Next i

        num(20) = n

        k=1:flag=True:i=1

        Do While i<=n       '划定每个等级相应的卷面得分的上限和下限

            If me(i) <num(k) Then

                If flag Then s(2 * k- 1) = cj(i)

                flag = False

                i=i+1

            ElseIf  Then

                s(2 * k) = cj(i)

                flag = True

                i=i+1

            Else

                

                flag = True

                k=k+1

            End If

        Loop

        If s(2*k)=0 Then s(2*k)=cj(n)

        '根据比例转换公式计算每个考生的赋分结果,存入数组cj2中,代码略。

        For i= 1To n

            List2.AddItem kh(i) +”” + Str(cj(i)) +”” + Str(cj2(i))

        Next i

    End Sub

某比赛项目由多位评委打分,然后根据项目难度系数计算最终得分。规则为:

最终得分=(所有评委打分总和-1个最高分-1个最低分)×项目难度系数

编写VB程序,实现计算最终得分的功能。在文本框Text1中输入项目难度系数和多位评委的打分,中间用“,”隔开并以“,”结尾,然后点击计算按钮,在文本框Text2中显示最终得分。程序运行界面如图所示。

  1. (1) 程序中计算按钮的对象名是  (单选,填字母:A .Command1/B .Cmd1/C .Cmd1_Click)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click()

        Dim a(1 To 100) As Single

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

        Dim Tot As Single, tmp As Single

        Dim s As String, v As String, ch As String

        s = Text1.Text

        n = 1:v=""

       

        Do While n <= Len(s)

            ch = Mid(s, n, 1)

            If ch <> "," Then

                v = v & ch

            Else

                a(m) = Val(v)

                

                m = m + 1

            End If

            n = n + 1

        Loop

        For i = 2 To m - 2

            For j = m - 1 To i + 1 Step -1

                If a(i) < a(j) Then

                    tmp = a(i): a(i) = a(j): a(j) = tmp

                End If

            Next j

        Next i

        Tot = 0

        For

            Tot = Tot + a(i)

        Next i

        Text2.Text =

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
汉诺塔问题中,现在要将塔座A上的所有圆盘移到塔座B上;并仍按同样顺序叠放。移动圆盘时,需遵守汉诺塔问题的移动规则。可设计出解汉诺塔问题的递归算法为(   )。
A . B . C . D .
在100个小球中,只有一个小球轻于其它小球。如何用没有砝码的天平找出该小球?小安设计了一个三分查找程序来快速查找这个小球,程序认定当需查找的小球个数小于3个时,认为已找到,程序运行界面如图。

Dim a(1 To 100) As Integer

Private Sub Form_Load()

    '产生100个重量为10的小球,存储在数组a中

    '其中随机选取1个小球的重量改为8,代码略

End Sub

Private Sub Command1_Click()

    Dim left As Integer, right As Integer

    Dim mid As Integer, count As Integer

    Dim s(1 To 2) As Integer

    left = 1: right = 100: count = 1

    List2.AddItem Str(left) + "-------->" + Str(right)

    Do While  left<=right

        s(1) = 0: s(2) = 0

            ①   

        i = left: k = 1

        Do While i <= left + mid * 2 - 1

            s(k) = s(k) + a(i)

            If      ②    Then k = k + 1

            i = i + 1

        Loop

        If s(1) = s(2) Then

            left = left + 2 * mid

        ElseIf s(1) < s(2) Then

            right = left + mid - 1

        Else

            

            left = left + mid

        End If

        count = count + 1

        List2.AddItem Str(left) + "-------->" + Str(right)

    Loop

    List2.AddItem "经过" + Str(count) + "次后找到这个数"

End Sub

  1. (1) 实线框处代码有错,请改正。
  2. (2) 请在划线处填入合适代码。

     ② 

  3. (3) 根据上述程序代码,若将虚线框处的两行代码交换一下顺序,则查找结果是(单选,填字母:A .下标越界  /B .找到这个数 /C .找不到这个数  /D .死循环)
下列程序的功能是求1~x之间所有5的倍效之和(    )

x=int(input("输入数字x:")

i=1

s=0

while i<=x:

    if      ①          :

        s=s+i

    print(i,end=",")

        ②          

print("s=",s)

则划线处应填入的语句是(      )

A . ①i%5==0       ②i=i+1 B . ①i//5==0 ②i=i+1 C . ①i%5==0       ②i=i+2 D . ①i%5==0        ②i=i+3
将长度为奇数的字符串s从首位字符开始依次存入a(1),a(n - 1),a(3),a(n - 3)...。如:字符串“xuankao”分存后得到a(1)=“x”,a(6)=“u”,a(3)=“a”,a(4)=“n”,a(5)=“k”,a(2)= “a”,a(7)= “o”,下列能实现该功能的程序段是(   )
A . For i = 1 To Len(s)

    If I Mod 2= 0 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i + 1) = Mid(s, i, 1)

    End If

Next i

B . For i = 1 To Len(s)

    If i Mod 2= 0 Then

        a(Len(s) - i+1) = Mid(s, i, 1)

    Else

        a(i) = Mid(s, Len(s) - i+1, 1)

    End If

Next i

C . For i = 1 To Len(s)

    If i Mod 2 = 1 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i+1) = Mid(s, i, 1)

    End If

Next i

D . For i= 1 To Len(s)

    If i Mod 2 = 1 Then

        a(i) = Mid(s, i, 1)

    Else

        a(Len(s) - i+1) =Mid(s, Len(s) - i+1, 1)

    End If

Next i

小美制作了一个简单的Flask程序,其中编写路由和视图的函数如下所示:

@app.route(‘/user/<name>’)    #动态路由

def user(name):

   return render_template(‘user.html’,name=name)

其中网页文件user.html的部分代码如下:

<body>

{%if name == ‘admin’%}

   <hl>Hello,Boss!</hl>

{%else%}

   <hl>Hello,{{name|capitalize}}!</hl>

{%endif%}

</body>

运行程序后,在浏览器输入如下网址://127.0.0.1:5000/user/admin,则网页显示的内容是(    )

A . Hello,admin! B . Hello,Boss! C . Hello,Admin! D . Hello,boss!
给定一个正整数,要求将该数各个位上数字反转得到一个新数,如数字56020反转得到新数2065。有如下VB程序段:

n=Val(Text1.Text)

s=""

flag=True

Do While n>0

      ⑴ 

    n=n\10

    If Not flag Or x>0 Then

          ⑵ 

        flag=False

    End If

Loop

If s="" Then s ="0"

Labe 11.Caption=s

方框中(1)和(2)应填入的代码顺序为(    )

①x=nMod10^len(n)  ②x=nMod10  ③s=Str(x)+s  ④s=s+Str(x)

A . ①③ B . ②③ C . ①④ D . ②④
以下程序运行时,用户可以在文本框Text1中输入文本,单击command1“添加”按钮后将文本中输入的内容加到列表框的末尾,用户选某列表框的某一个列表项后,单击command2“删除”按钮,将删除该列表项;如果没有任何一项选中,将有出错提示"先选择,再删除!"。

Private Sub Command1_Click()    '添加按钮

    If Len(Text1.Text) <> 0 Then

        

        Text1.Text = ""

        Text1.SetFocus

    End If

End Sub

Private Sub Command2_Click()      '删除按钮

    IfThen

        MsgBox "先选择,再删除!"

    Else

       

    End If

End Sub

以下是猜数游戏的Python程序,请选择适当的代码填入程序①处。(  )

number= 99

number_ guess= int (input ("你猜测的数字是: "))

if number = number_ guess:

  print ("你猜对了")

  ①  number> number_ guess:

  print ("你猜的数字小了")

else:

  print ("你猜的数字大了")

A . for B . print C . elif D . Input
某次模拟考试后,某班主任为了统计本班学生的语文和数学成绩,制作了如下 VB 程序。程序界面如下图所示:在文本框Text1中输入语文和数学成绩,成绩之间用“,”隔开,以“,”结束,加载窗体时,将成绩提取到数组 a中,如a(1)表示第一位学生的语文成绩,a(2)表示第一位同学的数学成绩,如a(3)表示第二位学生的语文成绩,a(4)表示第二位同学的数学成绩,……,以此类推,单击按钮Command11,将成绩按照语文为主要关键字、数学为次要关键字做升序排序,并将排序后的结果显示在文本框Text2中。

  1. (1) 窗体中没有用到的控件是           
    A . B . C . D .
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码

    Dim a(1 To 20) As Integer

    Dim i As Integer, n As Integer

    Private Sub Form_Load()

        Dim s As String, ch As String

        n = 1:s = Text1.Text

        For i = 1 To Len(s)

            ch = Mid(s, i, 1)

            If ch <> "," Then

                a(n) =

            Else

                n = n + 1

            End If

        Next i

       

    End Sub

    Private Sub Command1_Click()

        Dim j As Integer, t1 As Integer, t2 As Integer

        For i = 2 To n/2

            t1 = a(2 * i - 1): t2 = a(2 * i): j = i - 1

            Do While

                a(2 * j + 1) = a(2 * j - 1)

                a(2 * j + 2) = a(2 * j)

                j = j - 1

                If j = 0 Then Exit Do

            Loop

            a(2 * j + 1) = t1

           

        Next i

        For i = 1 To n/2

            Text2.Text = Text2.Text + Str(a(2 * i - 1)) + Str(a(2 * i))

        Next i

    End Sub

  3. (3) 程序中加框处代码有误,请改正
选择结构程序设计的主导思想是从多个分支中选择
分析问题,建立模型,并用算法描述区间测速问题

分析已知条件,抽象建立数学模型,算法描述区间测速。根据要求,回答问题。

  1. (1) 分析明确区间测速需要采集的关键数据,理解并形成问题的初始表征。

    ■采集的数据:测速路段长度,用s表示,单位为千米

    抓拍同一车辆时间间隔,用t表示,单位为分钟

    测速路段限速limit,单位为千米/时

    ■区间测试问题的初始表征:用表征车辆通过区间测速路段平均时速(选填:/ ),假如测速路段限速limit为每小时80公里,如果v≤limit,则判定为,否则判定为(选填:“符合限速要求”/“已超速”)。

  2. (2) 小组成员采用不同的方法描述区间测速的算法。如图a,该同学是用描述算法;如图b,该同学是用描述算法,如图c,该同学是用描述算法。(选填:自然语言/流程图/伪代码)

  3. (3) 关于自然语言、流程图和伪代码算法描述方法的比较,正确的是           (多选)。
    A . 自然语言描述算法更容易掌握,但对分支和循环结构的描述能力较弱 B . 流程图描述算法清晰、简洁 C . 伪代码描述算法书写方便,格式紧凑,易于理解,便于向计算机程序设计语言过渡 D . 伪代码是最适合描述算法抽象结构的一种方式
  4. (4) 当将图c中表达式“时速小于等于limit”改为“时速大于limit”,算法中的流向将发生改变。请模仿图c,补全图d中部分算法描述。

运行以下Python程序段,结果是(     )

A . Python B . C++ C . Welcome D . True
级差又称范围误差及一组数据中,最大值减最小值后所得数据。用Python编辑器打开“Y:\87”下的文件”极差.PY“,请完善程序并保存结果。
  1. (1) 请填空,完善该程序。实现功能:求出一组数据的极差并输出。

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

    m=int(input("请输入一组数据的第一个数:"))

    =m

    max=m 

    for i in range(1,n):

        t=int(input("请输入后续的数:"))

        if  t<:

             min=t 

        if  t>max:

             

    print()  #输出极差的值

    input("运行完毕,请按回车键退出...")

    编写完成后原名保存并关闭应用软件。