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

将数学关系式5≤x<14表示成VB表达式,正确的是(   )
A . x>=5 and x >14 B . 5≤x and x<14 C . x>=5 or x<14 D . x>=5 and x <14
在文本框Text1中输入一个矩形的周长,单击“求解”按钮Command1,在列表框List1中显示构成这个矩形的长和宽(整数)及他的面积,在文本框Text2中输出构成这个矩形的最大面积。程序运行时界面如下图所示:

程序代码如下所示,请补充完整。

Private Sub Command1_Click()

 Dim i As Integer,j As Integer,s As Single,zc As Integer

 Dim max As Integer

 zc=Val(Text1.Text)

 max=0

 If zc Mod 2=1 Then

List1.AddItem ”该周长的矩形长度和宽度不是整数!”

 Else

List1.AddItem ”宽度 长度 面积”

For i=1 To zc \2

 If i>j Then Exit For

 List1.AddItem Str(i)+”   ”+Str(j)+”    ”+Str(s)

 If Then max=s

 End If

 Text2.Text=Str(max)

End Sub

“字符串合并”程序实现功能:在文本框Text1中输入字符串1,在文本框Text2中输入字符串2,单击“合并”按钮Command1,按如下规则依次从中取出各字符进行合并,合并后的结果显示在标签对象Label3中。

合并规则如下:

⑴当字符串1的长度大于字符串2的长度时,将字符串2中的各个字符从左侧依次插入到字符串1中的各字符后方。例如字符串1为“abcdef”,字符串2为“123”时,合并后的字符串为“a1b2c3def”

⑵当字符串2的长度大于等于字符串1的长度时,将字符串1中的各个字符从右侧依次插入到字符串2中的各个字符后方。例如字符串1为“abcd”,字符串2为“12345”时,合并后的字符串为“12d3c4b5a”。

程序运行界面如图所示。

  1. (1) 要使程序运行时,窗体Form1标题显示“字符串合并”,可在Form_Load事件过程中添加语句(单选,填字母:A .Fom1. Caption=“字符串合并”/B .Label3. Caption=“字符串合并”C .Text1. Text=“字符串合并”)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Commandl_Click ()

    Dim sl As String, s2 As String, ans As String

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

        s1=Text1. Text

        s2=Text2. Text

        m=Len (s1)

        n=Len (s2)

        If m>n Then

            For i=1 To n

                ans=ans+Mid (sl, i, 1)+Mid (s2, i, 1)

            Next i

            ans=ans +Mid (sl, i, m-n)

        Else

            For i=1 To m

                ans=   ①   +Mid (s1, i, 1)+ans

            Nest i

            ans=Mid (s2, 1, n-m)+ans

          ② 

        Label3. Caption=“合并为”+ans

    End Sub

     ② 

  3. (3) 若在文本框Text1中输入“Word”,在文本框2中输入“Min”,单击“合并”按钮后,标签Label3中显示的内容是
下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。

……

For i=1 To n-1

k=i

For j=i+1 To n

    If d(j) <d(k) Then k=j

Next j

    If i<>k Then kt=d(i): d(i) =d(k): d(k) =kt

Next i

……

框内代码运行结束时,保存最小值的数组元素一定是(  )

A . d(n) B . d(j) C . d(i) D . d(k)
有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:

i=1:j=n

Do While i+1<j

  m=(i+j)\2

  If a(m+1)-a(m)>a(m)-a(m-1)Then

    

  Else

    

  End If

Loop

Labell.Caption="相邻两个元素的最大差值是"+Str(a(j)-a(i))

上述程序段两个方框处的语句分别为(  )

A . ①i=m       ②j=m B . ①i=m        ②j=m-1 C . ①i=m+1     ②j=m-1 D . ①i=m+1      ②j=m
酒店房间管理问题:某酒店房间(房间数小于1000)编号按1、2、3……连续编号,客房经理对没有入住的房间使用如下方法来登记管理。连续的空房间,登记第一个房间的编号和连续的空房间数,比如空房间1,2,6,7,8,10,则登记3条记录,分别为1_2,6_3,10_1。某旅客如果退房,需要把这个房间号也登记进去,共有4中情况需要处理:

⑴上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;

⑵下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;

⑶上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;

⑷上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1

根据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text1中输入退房号,单击“退房”按钮后更新列表框List1中的数据。

程序界面如下图所示,请回答下列问题:

  1. (1) 当前登记的记录有3条,分别为2_3,6_2,9_4。某旅客退掉8号房间,则登记的记录将变为
  2. (2) 实现上述功能的VB程序如下,请将划线处的代码补充完整。

    Const n=1000

    Dim a(0 To n)As Integer     ‘a(i)保存第i条记录的开始房间号

    Dim b(0 To n)As Integer     ‘b(i)保存第i条记录的房间数

    Dim c As Integer, k As Integer, sp As Integer      ‘k为原始记录数

    Private Sub Form_Load()

    ‘程序启动时从数据库中读取原始k条记录,依次存入a(1),b(1),a(2),b(2),…,a(k),b(k),代码略

    ‘为了程序处理方便,虚设下面两条记录

    A(0)=0: b(0)=0: sp=k+1: a(sp )=1000: b(sp)=0

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    c=Val(Text1.Text)

    i=1

    Do While a(i)<c

    i=i+1

    Loop

    i=i-1

    ‘以下处理退房登记问题

    If a(i)+b(i)=c Then

    If a(i+1)=c+1Then    ‘处理第3种情况

        ①   

    For j=i+1 To sp-1

    a(j)=a(j+1):b(j)=b(j+1)

    Next j

    sp = sp-1

    Else     ‘处理第1种情况

    b(i)=b(i)+1

    End If

    ElseIf c+1=a(i+1)Then      ‘处理第2种情况

    a(i+1)=c: b(i+1)=b(i+1)+1

    Else     ‘处理第4种情况

    For j=    ②   

    a(j)=a(j-1): b(j)=b(j-1)

    Next j

    a(i+1)=c: b(i+1)=1:    ③   

    End If

    List1.Clear

    For i=1 To sp-1

    List1.Addltem"第" & CStr(i)  & "条记录" & CStr(a(i)) & "_" & CStr(b(i))

    ‘CStr函数的作用是将数字转成字符串

    Next i

    End Sub

     ② ③ 

数组a为一组循环有序不重复的数组,如(a(1)=25,a(2)=41,a(3)=100,a(4)=5,a(5)=7,a(6)=9)。依据对分查找思想:设计个在数组a中查找数据Key并显示在列表框的程序,界面如图所示。实现该功能的VB程序段如下:

1=1:r=6

Key=Val(Text1.Text)

Do While <=r

m=Int((1+r)\2)

If a(m)=Key Then

Exit Do

Elself a(m)>=a(1) Then

ElseIf a(m)<a(1) Then

End If

Loop

上述程序中方框处可选语句为:

①If a(m)<Key And a(r)>Key Then 1=m+1

Else r=m-1

②List1.AddItem "第"+Str(m)+ "值是"+Str(a(m))

③If a(m)>Key And a(1)<=Key Then r=m-1

Else=m+1

则(1)、(2)、(3)处语句依次是(  )

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

数组元素f(1)到(9)赋初值为0,代码略

a(1)= 1

For i=2 To 9

  a(i)=a(i-1)+ Int(Rnd* 2)+1

Next i

Key= Val(Text1. Text)

i=1: j=9

Do While i<=j

  m=(i+j+1)\ 2

  f(m)= 1

  If a(m) > Key Then

    j=m-1

  Else

    i=m+1

  End If

Loop

在文本框Text1中输入待查找数,执行该程序段后,下列选项中,f(1)到f(9)各元素值不可能的是(    )

A . 1,1,1,0,1,0,0,0,0 B . 0,0,0,0,1,0,0,1,1 C . 0,0,0,0,1,0,1,1,1 D . 0,0,1,1,1,0,0,0,0
在平面直角坐标系中,给定一组有序的点。从原点出发,依次用线段连接这些点,构成一条折线。要求编写一个“计算折线长度”的程序,功能如下:在文本框Text1中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。例如,三个点的坐标(5,10)、(8,12)、(6,17)输入格式如图所示。

  1. (1) Cmd对象属于类(单选,填字母:A .Form/B .Label/C .TextBox/D .CommandButton)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Cmd_Click( )

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

    Dim x1 As Single, y1 As Single, x2 As Single, y2 As Single

    Dim d As Single, Totald As Single, v As Single, s As String

    s=    ①    

    x1=0:y1=0             ‘出发点为坐标原点

    k=1:i=1:Totald=0

    For i=1 To Len(s)

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

          v=Val(Mid(s,j,i-j))       ‘提取坐标值,保存在变量v中

          j=i+1

          If    ②      Then

              x2=v

          Else

              y2=v

              d=Sqr((x2-x1)-2+(y2-y1)-2)

              Totald=Totald +d

              x1=x2:y1=y2

          End If

          k=k+1

      End If

    Next i

    Label1.Caption=Str(Totald)

    End Sub
     

  3. (3) 运行该程序,输入数据如图所示,程序执行到循环结束时,变量k的值为
“回文”是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也存在这样一类数具有这样的特征,称为回文数。例如: 123454321为回文数。
  1. (1) 若将任意一个三位数存储到整型变量a中,下列语句可实现回文数的是(     )
    A . B . C . D .
  2. (2) 若将任意一个三位数存储到字符串变量a中,下列语句不能实现回文的是(    )
    A . new=a+a[2]+a[1]+a[0] B . new=a+a[::-1] C . new=a+a[-3]+a[-2]+a[-1] D . new=a+a[-1::-1]
某股于3月21日起停牌进入配股缴款期,配股缴款截止日期为3月27日。由于配股后股价将除权,忘记或者不参与配股者或不是全额参与配股者,复牌后将面临损失。根据安排,该股本次配股价格为7.02元/股,按照每10股配售1.9股的比例向全体股东配售,其中:

配股除权价=(除权登记日收盘价+配股价×每股配股比例)/( 1+每股配股比例)

全额参与配股的最大配售量计算规则如下:

1)该股的配售比例是0.19。也就是说,假如你有10000股该股股份,最大配售量即为10000×0.19=1900(股)。

2)如果所获配股份额不足1股,那么0.65股及以上的为1股,0.65股以下的为0股。

回答下列问题:

  1. (1) 若该股的除权登记日收盘价为16.05元,则此次该股的配股除权价为元。
  2. (2) 假如你有15000股该股股份,最大配售量为股。
  3. (3) 如果不参与配股,该股配股除权后,将直接损失%。
  4. (4) 编写程序。用变量spj、pgj、bili、num、cqj、maxps分别存储除权登记日收盘价、配股价、每股配股比例持有的该股股份数、配股除权价和最大配售量。计算此次该股的配股除权价和最大参与配股配售量的Python程序如下,请在划线处添加合适的代码,完善程序,实现程序功能。

    flag=False

    pgj=7.02    #配股价

    bili=0.19    #每股配股比例

    spi-flatinput("请输入除权登记日收盘价:")

    num =floatinput("请输入持有的股份数:")

    cqj =     ①            #配股除权价

    maxps= num*bili      #最大配售量

    if      ②       :

        flag=True

    if flag :

        print("配股除权价", cqj,"最大配售量:" ,int(maxps)+1)

    else:

        print("配股除权价:", cq,"最大配售量:" ,nt(maxps))

     ② 

有如下VB程序段:

s = "": k = 0

For i = 1 To 20 Step 3

    If i Mod 7 = 0 Then

        k = 1

    ElseIf i Mod 5 = 0 Then

        k = 2

    End If

    If i Mod 2 = 0 Then k = 3

    s = s + Str(k)

Next i

Label1.Caption = s

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

A . 0 3 1 2 0 3 0 B . 0 3 1 2 2 3 3 C . 0 3 1 3 3 3 3 D . 0 3 1 3 0 3 0
   单分支If条件语句,执行过程中条件表达式为真,执行语句A,为假则不执行语句A
有如下 VB 程序段:

a(1) = 68: a(2) = 88: a(3) = 76: a(4) = 60: a(5) = 98

a(6) = 100: a(7) = 64: a(8) = 85: a(9) = 99: a(10) = 59

For i = 1 To 9

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

    c(b(i) \ 10) = c(b(i) \ 10) + 1

Next i

For i = 0 To 10

    If c(i) > 0 Then Label1.Caption = Label1.Caption + " " + Str(c(i))

Next i

数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是(    )

A .  2 3 2 1 1 B . 1 3 2 2 1 C . 2 3 2 2 1 D . 1 3 2 1 2
汉诺塔问题中,现在要将塔座A上的所有圆盘移到塔座B上;并仍按同样顺序叠放。移动圆盘时,需遵守汉诺塔问题的移动规则。可设计出解汉诺塔问题的递归算法为(   )。
A . B . C . D .
程序运行后,从键盘输入781,结果是.

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

if x%2==0:

    print(x,"是偶数.")

else:

print(x,"是奇数.")

以下VB程序实现把文本框Text1和Text2中输入的升序字符串s1和s2合并成一个升序字符串s,并在文本框Text3中显示。如s1为“aceghi”,s2为“bdf”,合并结果为“abcdefghi”。

s1 = Text1.Text : s2 = Text2.Text

i = 1: j = 1: k = 1

Do While    ⑴   

    If j > Len(s2) Or i <= Len(s1) And Mid(s1, i, 1) < Mid(s2, j, 1) Then

          ⑵ 

    Else

          ⑶ 

    End If

Loop

Text3.Text = s

上述程序段3个方框处的代码分别为(    )

A . B . C . D .
完善以下程序代码完成下题。

程序描述:2公里(包括2公里)内,起步价为5元,超过2公里部分(不足整公里的,向上取整),每公里1.6元。

代码如下:

Import   ①    #引用math库

s=  ②  (input("请输入你要去目的地距离出发点的公里数:))

If  ③  :  #2公里(包括2公里)内

   cost =5

else:

  cost = 5+math.ceil(s-2) *1.6

print("你的打的费用是", cost,“元)

①处的语句是,②处的语句是,③处的语句是

①A.math    B.Numpy    C.time    D.Matplotlib

②A.Float    B.Int    C.str    D.Math

③A.s≤2    B.s<=2    C.s>2    D.s≥2

下面的程序,若想运行结果是Best Wishes to you!,则划线处代码可能是(      )

s="Happy National Day!"

m=          

if m=="Happy":

    print("Happy to you!")

elif m=="National":

    print("Best Wishes to you!")

else:

    print("It's a fine Day!")

A . s[6:13] B . s[7:14] C . s[-6:-14:-1] D . s[-13:-5:1]
下列属于字符串常量的是(   )。
A . cnt         B . 3.14             C . 2018          D . "Visual Basic"
最近更新