2.2 做出判断的分支 知识点题库

在Visual Basic中,有整型变量a=5,b=3,要在标签控件中显示结果为8,则执行下列语句能正确显示结果的是(   )
A . Label1.Caption=Str(a+b) B . Text1.Text=Len(a)+Val(b) C . Text1.Text= Sqr(a+b) D . Label1.Caption= Str(a)+ Str(b)
\ , / , Mod , *四个算术运算符中,优先级最低的是(   )。
A . \ B . / C . Mod D . *
某VB程序段如下:

s=“Hello world”

s1=“”

n=Len(s)

For i=1 To n\2

If Mid(s, i, 1) > Mid(s, n-i+1, 1) Then

s1=s1 + Mid(s, i, 1)

Else

s1=Mid(s, n-i+1, 1)+s1

End If

Next i

Text1.Text=s1

执行该程序段后,在文本框Text1中显示的是(  )

A . WlleH B . oorld C . droo D . orldo
赋值语句y = x的功能是________。
A . x的值赋给y,x的值变为0 B . y的值赋给x,y的值变为0 C . y的值赋给x,y保留原来的值 D . x的值赋给y,x保留原来的值
输入5个数,分别完成以下操作:

按照次序逆序输出并从小到大输出。提示:list.reverse(),list.sort()

一元二次方程 ax^2 +bx + c=0 有两个不相等的实数解的条件是(   )
A . a<>0 And b*b-4*a*c>0 B . b*b-4*a*c>0 C . a<>0 D . a<>0 Or b*b-4*a*c>0
某市对一户一表居民实行阶梯电价,电费计算方式如下:月用电量在1-50千瓦时部分不调价;月用电量在51-200千瓦时部分,电价每千瓦时上调0.03元;月用电量超过200千瓦时部分,电价每千瓦时上调0.10元。

若假定某用户一个月的用电量为x千瓦时,当前单价为p元/千瓦时,则计算标准如下:当x≤50时,电费为p×x元;当50<x≤200时,电费为p×x+(x-50)×0.03元;当x>200时,电费为p×x+4.5+(x-200)×0.1元。

程序设计界面如下图所示,程序的功能是:在文本框Text1中输入用电量x(单位:千瓦时),在文本框Text2中输入电量p(单位:元),单击“计算”按钮(Command1)后,在标签Label4中输出计算结果。

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

    Private Sub Command1_Click()

    Dim x As Single, p As Single

    Dim s As Single

    x =

    p =        '此处改错

    If x <= 50 Then

        s = p * x

       

        s = p * x + (x - 50) * 0.03

    Else

        s = p * x + 4.5 + (x - 200) * 0.1

    End If

    Label4.Caption = "本月的电费为:" +  + "元"

    End Sub

  2. (2) 程序代码中加框处代码有误,请改正。

    改正:

现有n项先后出现的任务,每项任务需要一定的时间完成,且每个时刻只能执行某一项任务。任务的执行规则如下:

每项任务有一个紧急程度,用数字表示,数字越大紧急程度越高。紧急程度最高的任务优先执行,紧急程度相同先出现先执行。若某项任务在执行过程中出现了一个紧急程度更高的任务,则正在执行的任务将被暂停,执行该紧急程度更高的任务。

编写VB程序,功能如下:程序运行时,各项任务数据按出现时刻升序显示在列表框List1中,单击“开始”按钮Command1,按照任务完成的先后顺序,在列表框List2显示每项任务的编号以及完成时刻。程序运行界面如图所示:请回答下列问题:

  1. (1) 若有3个任务需要完成,数据如下:

    1号任务:时刻1出现,完成所需时长4,紧急程度1

    2号任务:时刻2出现,完成所需时长2,紧急程度2

    3号任务:时刻7出现,完成所需时长1,紧急程度3

    则这3个任务的完成的顺序为(单选,填字母:A . 1号、2号、3号 /B . 2号、3号、1号 / C . 2号、1号、3号)。

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

    Dim id(0 To 100) As Integer    '任务编号

    Dim t(0 To 100) As Integer     '出现时刻

    Dim L(0 To 100) As Integer     '完成所需时长

    Dim v(0 To 100) As Integer     '紧急程度

    Dim n As Integer      '总任务数

    Private Sub Form_Load()

     '本过程读取任务编号、出现时刻、完成所需时长和紧急程度的数据分别存储在数组 id,t,L和v中,并在List1中显示,代码略

    End Sub

    Private Sub Command1_Click()

    Dim q(0 To 100) As Integer            'q 数组按优先顺序存储已出现的任务编号

    Dim k As Integer, i As Integer, j As Integer, cur As Integer

    cur = 0: k = 0             'cur 记录当前时刻

    For i = 1 To n

      Do While k > 0 And t(i) >= cur + L(q(k))            '新的任务出现时,计算并输出已经完成的任务编号

        List2.AddItem adj(2, (id(q(k)))) + adj(6, cur + L(q(k)))

        cur = cur + L(q(k))

        k = k - 1

      Loop

      If k > 0 Then L(q(k)) =        '更新正在执行的任务的完成所需时长

        k = k + 1

        j = k

      Do While v(q(j - 1)) >= v(i)

        q(j) = q(j - 1)

        j = j - 1

      Loop

      q(j) = i

       

    Next i

    Do While  

      List2.AddItem adj(2, id(q(k))) + adj(6, cur + L(q(k)))

      cur = cur + L(q(k))

      k = k - 1

    Loop

    End Sub

    Function adj(x As Integer, v As Integer) As String

     'adj可以通过添加前置空格将v转化为x位长度的字符串,便于输出对齐,代码略

    End Function

小温编写了一个有关环形数据排序的VB程序,实现如下功能:排序前的原始数据在窗体左边环形显示,单击“排序”按钮Command1后,原始数据中最小元素的位置固定不变,从该位置开始数据按逆时针升序,排序后的数据在右边环形显示。例如,排序前a(1)到a(10)的数据依次为“1,11,19,18,016,8,9,17,4",按顺时针顺序在窗体左边环形显示,则排序后a(1)到a(10)的数据依次为9,4,1,19,18,17,16,11",在窗体右边环形显示。程序运行界面如图所示。

请回答下列问题。

  1. (1) 该环形数据排序的VB程序主要采用(选填:冒泡排序/选择排序)算法。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Constn= 10

    Dim a(1 To n) As Integer

    Private Sub Command1_ Click()

         Dim Left As Integer, Right As Integer, Lstart As Integer, Rstart As Integer

         Dim i As Integer, j As Integer, t As Integer, s As String

         '随机生成n个不重复元素的数组a,并在左边环形显示,代码略

         k= 1

         For i= 2 Ton

             If a(i) < a(k) Thenk=i

         Next i

         Lstart = (k+n- 2) Mod n+ 1: Rstart= k Mod n+ 1

         i= 1

         Do Whilei<= (n-1)\2

             Left = Lstart

             For j= 1 To

                 p= (Left+ n-2) Mod n+ 1

                 If a(Left) > a(p) Then

                     t= a(Left): a(Left) = a(p): a(p)= t

                 End If

                 Left= p

             Next j

             Rstart= Rstart Mod n + 1

             Right = Rstart

             Do While

                 p=RightModn+1

                 If  Then

                     t= a(Right): a(Right) = a(p): a(p)=t

                 End If

                 Right= p

             Loop

             Lstart =

              i=i+ 1

         Loop

         排序后的数据在右边环形显示,代码略

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
两个长度相同的字符串s1和s2,若所含字符及各字符的数量均相等时可以归为一类。

如字符串“ABDAC”与字符串“AABCD”可以归为同一类,与“AABBC”不可以归为同一类。图图编写了一VB程序,功能如下:在文本框Text1中输入字符串s1,在文本框Text2中输入字符串s2,单击“判断”按钮Command1,在标签Label1中显示是否可以归为同一类的结果。部分运行界面如图所示。

请回答下列问题:

  1. (1) 要使窗体的标题栏文字显示为“同类字符判断”,则应设置窗体的 属性(单选,填字母:A .Text / B .Name /C .Caption)。
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim a(1 To 100) As Boolean

        Dim i As Integer, j As Integer

        Dim flag As Boolean

        s1 = Text1.Text

        s2 = Text2.Text

        flag = True

        For i = 1 To Len(s2)

            

        Next i

        If Len(s1) <> Len(s2) Then

            flag = False

        Else

        For i = 1 To Len(s1)

            c =

            j = 1

            Do While j <= Len(s2)

                If  Then

                    a(j) = False

                    Exit Do

                End If

               

            Loop

            If j = Len(s2) + 1 Then flag = False

        Next i

    End If

    If flag Then

        Label1.Caption = "可以归为同一类"

        Else

            Label1.Caption = "不可归为同一类"

        End If

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
有如下 VB 程序段:

Dim a(1 To 5)  As Integer

a(1) = 1

For i = 2 To 5

    a(i) = Int(Rnd * 9) +1

    If a(i) Mod 2 = 1 Then

        a(i) = a(i) + a(i - 1)

    ElseIf a(i) mod 2 = 0 Then

        a(i) = a(i) / 2

    End If

Next i

执行程序后,a 数组各元素不可能是(   )

A . 1,8,11,20,2 B . 1,4,2,11,4 C . 1,1,8,17,20 D . 1,4,7,6,8
有如下VB程序段:

Dim i As Integer

Dim c As String, s As String, t As String

s = "2021 PYthon": t = ""

For i = 1 To Len(s)

    c = Mid(s, i, 1)

    If c >= "a" And c <= "z" Then

        t = t + c

    ElseIf c >= "0" And c <= "9" Then

        t = c + t

    End If

Next i

Text1.Text = t

执行该程序段后,文本框Text1中显示的内容是(    )

A . 2021thon B . 1202thon C . thon1202 D . noht1202
以下关于定义的语句中错误的是(    )
A . Const var1=123 B . Dim var2 As String C . Dim x+y=9 D . Dim d(1 to 500)  As Double
用Visual Basic随机函数产生10~99的幸运号码,下列符合要求的表达式是(   )
A . Int(Rnd() * 9) + 90 B . Int(Rnd() * 90) + 10 C . Int(Rnd() * 89) + 10 D . Int(Rnd() * 99) + 1
有下列程序执行后文本框Text1显示的内容是(    )

s = "Happy new year↑”

flag=False:m=0

For i=1 To Len(s)

    c= Mid(s,i,1)

    If c >=“a" And c <= "z” Then

        If Not flag Then

            m=m+1

            flag=True

        End If

    Else

        flag = False

    End If

Next i

A . 4 B . 3 C . 6 D . 11
在Python代码中表示“x属于区间[a,b)”的正确表达式是(    )。
A . a≤x and x<b  B . n<= x or x<b C . x>=a and x<b D . x>=a and x>b
下列可以作为python变量名的是(     )
A . 'a1' B . ke3y C . False D . if
某同学先后给变量a赋值情况如下:

a=100

a=a+1

a=“abc”

你能告诉这个同学变量a到底存储的是哪个量吗?(     )

A . 100 B . Abc C . 111 D . 都有可能
有如下python程序段:

from random import randint

n=input("请输入一串数字:")

k=randint(0,len(n))       #randint用于随机生成[0,len(n)]之间的整数

for i in range(k):

    for j in range(len(n)-1):

        if n[j]>n[j+1]:

            break

    else:

        n=n[:len(n)-1]

        continue      #continue跳过当前循环的剩余语句,直接进行下一轮循环

    n=n[:j]+n[j+1:]

执行该程序段后,输入“1529”,则变量n可能是(     )

A . "9" B . "12" C . "152" D . "1259"
下列代码的输出结果是 (    )

s=['seashell', 'gold', 'brown', 'purple', 'tomato']

print(s[2][1:4])

A . gold B . row C . gol D . rown