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

在计算过程中,有时候数据会特别大,超过系统允许的范围,这时候我们会采用一种特殊的方法来处理,将数字当做字符,然后逐个处理。以下程序用来处理超级大的正整数乘以一个个位数的情况:每输入一个乘数和被乘数,按一下计算,会在列表框中输出运算结果。(保证输入的被乘数是个位正整数,乘数可以是200位以内的正整数),完成填空。

算法思路:从乘数的最后一位开始逐个取出来与被乘数相乘,例如635的最后一位5,取出来与被乘数5相乘,得到25,个位数5作为结果存入s字符串,十位数2作为进位,留着加入下一次的乘积中,然后取出3,与5相乘,得到15,但是要加上刚才的进位,所以应该是17,个位数7作为结果存入s(此时结果是75),十位数作为进位1,留着加入下一次乘积…… 。

  1. (1) 程序中additem 是(选填:属性/属性值/对象名/方法/过程)
  2. (2) 根据算法完成程序填空:

    Private Sub Command1_Click()

    dim s as string,s1 as string,s2 as string

    dim i as integer,jinwei as integer,d as integer,t as integer

    s1 = Text1.Text

    s2 = Text2.Text

    s = ""

    jinwei = 0

    For i = Len(s1) To 1 Step -1

        d = Val(Mid(s1, i, 1))

        t =

        s =

        jinwei = t \ 10

    Next

    If jinwei<> 0 Then s =

    List1.AddItem s1 &"*"& s2 &"="& s

    End Sub

分析代码,完成问题

listque=[]                        #定义列表listque存储订单

x=0

while(x!=4):                      #当x=!4时,执行循环

    print('1. 添加订单')

    print('2. 发货')

    print('3. 查看订单列表')

    print('4. 退出')

    x=int(input("输入你的选择:")) #输入选择项

    if     ①      :

        y=input("输入订单编号:")  #输入订单编号

             ②               #在列表listque中添加订单号

    elif x==2:

              ③              #如果订单列表为空

            print("订单列表为空")

        else:

            print("发货单号:"+listque.pop(0)) 

    elif x==3:

        print("等待发货:",listque)            #查询列表listque中的订单号

    print()

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

  1. (1) 此列表,定义的是列表。(从“空、非空”里选填)
  2. (2) 补充划线横线处的内容

     ② ③ 

下列VB程序段是选择排序程序的主要部分。其中框内代码用于寻找数据元素a(i)到a(n)的最小值。

For i=1 To n-1

  k=i

  If i<>k Then t=a(i):a(i)=a(k):a(k)=t

Next i

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

A . a(n) B . a(j) C . a(i) D . a(k)
某医院每天提前发放100个预约号。考虑到老年人身体,预约的病人按照以下规则进行就诊:

①老年人(年龄≥60岁)比非老年人优先就诊;

②老年人按年龄从大到小的顺序就诊,年龄相同的按预约顺序就诊;

③非老年人按预约顺序就诊。

小王根据以上规则编写了一个VB程序,通过引入索引数组temp进行排序,使得age(temp(1))≥age(temp(2))≥age(temp(3))…≥age(temp(n))。如图a所示。

图a

图b

程序运行时,病人的数据显示在列表框List1中,单击“就诊排序”按钮Command1,排序结果显示在列表框List2中,程序运行界面如图b所示。

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 分析程序,可知程序中读取的数据库工作表名称为
  2. (2) 请在画线处填入合适的代码。

    Dim pname(1 To 100)As String           ‘存放病人姓名

    Dim age(1 To 100)As Integer             ‘存放病人年龄

    Dim num(1 To 100)As Integer            ‘存放病人序号

    Dim n As Integer

    Private Sub Command1_Click( )

      Dim temp1(1 To 100)As Integer, temp2(1 To 100)As Integer   ‘索引数组

      Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer, t As Integer

      k1=0:k2=0

      For i=1 To n

          If age(i)<60 Then

          k1=k1+1

        temp1(k1)=num(i)

      Else

          k2=k2+1

          temp2(k2)=num(i)

        End If

    Next i

    For i=1 To k2-1

        For j=k2 To i+1 Step-1

          If   ①   Then

              t=temp2(j):temp2(j)=temp2(j-1):temp2(j-1)=t

          End If

        Next j

    Next i

    List2.Clear

    List2.Addltem "就诊号  名单   年龄"

    For i=1 To k2

        List2.Addltem Str(i)&."  "&.pname(temp2(i))&"r/&.Str(age(temp2(i)))

    Next i

    For j=1 To k1

        List2.Addltem   ②   &"    "&pname(templ(j)&"   "&.Str(age(templ(j)))

    Next j

    End Sub

    Private Sub Form_Load( )

      Dim conn As New ADODB. Connection, rs As New ADODB. Recordset

      Conn.ConnectionString="Provider=Microsoft. ACE. OLEDB. 12.0;DataSource="&App. Path&"\pdxt.accdb"

      conn.Open

      Set rs. ActiveConnection=conn

      rs. Open"select*from jzmd"

      n=0

      List1.AddItem"预约号   名单   年龄"

      Do While Not rs. EOF

           ③   

        num(n)=n

        pname(n)=rs. Fields(1)

        age(n)=rs Fields(2)

        List1. Addltem Str(num(n))&"  "&-pname(n)&."  "&.Str(age(n))

        rs. MoveNext

      Loop

      rs.Close:conn.Close

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

用VB编写字符解压程序,功能如下:在文本框Text1中输入压缩字符串,压缩字符串中不含空格,其中数字可以是多位数,表示其后面的字符个数,字符为单个字符。在文本框Text2中显示解压结果。例如,输入压缩字符串“3Y5a”(表示有3个“Y”和5个“a”组成),单击“解压”按钮后, 输出解压结果“YYYaaaaa”。程序运行界面如图所示:

  1. (1) 在设计程序界面时,要将文本框Text1和Text2中的内容清空,可以修改这两个对象的属性实现。
  2. (2) 由代码可知,命令按钮“解压”的名称是
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Comd1_Click()

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

        Dim ch As String, s As String, ss As String

        s = Text1.Text

        n = 0: ss = ""

        i = 1

        Do While i <= Len(s)

            

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

               

            Else

                For j = 1 To n

                    ss = ss + ch

                Next j

                n = 0

            End If

           

        Loop

        Text2.Text = ss

    End Sub

  4. (4) 运行程序,若文本框Text1中输入的内容为“Y3a5”,则输出的解压字符串为
有如下VB程序段:

Dim s1 As String, s2 As String

s1 = "what doesn't kill you makes you stronger."

s2 = text1.text

i = 1: j = 1

Do While i <= Len(s1) And j <= Len(s2)

    If Mid(s1, i, 1) = Mid(s2, j, 1) Then j = j + 1

    i = i + 1

Loop

If j > Len(s2) Then

    s3 = "true"

Else

    s3 = "false"

EndIf

执行该程序段后,s3的值为“false”,则text1输入的文本可能是(     ) 

A . "skills" B . "waste" C . "damage" D . "note"
有如下python程序段

n=int(input("请输入n值:"))

x=n;y=0

if x>0:

    y=y+1

elif x<0:

    y=y-1

print (y)

执行上述语句,下列说法不正确的是(     )

A . 若输入-1,则输出y值为-1 B . 若输入0,则输出y值为-1 C . 若输入1,则输出y值为1 D . 若输入2,则输出y值为1
LZW编码是一种自适应词典编码,通过建立一个字典,实现字符的编码。假设输入的字符串中仅有小写字母和空格,编码方法如下:

1)初始时,建立一个空字典,把26个小写字母加入字典中。26个小写英文字母编码为1-26,字母“a”的编码为1,字母“b”的编码为2,其它字母的编码依次增加。

2)从字符串第一个位置开始扫描,若遇到空格(空格用“*”表示),则得到一个单词,截取该单词并存入变量中。

3)若该单词在字典中,则取出该单词在字典中的编码值;否则,依次取出该单词中各字母在字典中的编码值,(编码值之间用一个空格分隔),同时产生该单词的编码(编码为字典中的最大编码值加1),加入字典中。

4)继续扫描字符串,截取单词,并按照步骤(3)的方法进行处理,直至整个字符串编码完毕。字符串“abab”LZW编码过程如图所示。

  1. (1) 如果字符串为“ab bb bb”,则其LZW编码为
  2. (2) 请在划线处填入合适的代码。

    Dim pos As Integer, a(1 To 100)As String

    Private Sub Form_Load( )

        '将字母“a”至“z”依次存入数组元素a(1)到a(26)

    End Sub

    Function judge(ss As String) As Integer     '判断字典中是否有ss这个单词

        Dim i As Integer judge = 0

        For i = 27 To pos

            If a(i) =Then judge = i

            Exit For

            End If

        Next i

    End Function

    Private Sub Command1_Click( )

        Dim s As String, i As Integer, j As Integer, k As Integer, ch As String, word As String, result As String, Dim id As Integer, idletter As Integer

        s = Text1.Text pos = 26: i = 1

        Do While i <= Len(s)

            j = i

            Do While Mid(s, j, 1) <> " " j = j + 1

                If j > Len(s) Then Exit Do

            Loop

            word = Mid(s, i, j - i)

            If Len(word) = 1 Then    '单个字母的单词

                result = result + Str(Asc(word) -Asc("a") + 1)

            Else

                id = judge(word)

                If id = 0 Then      '新的单词

                    For k = 1 To Len(word)     '依次处理该单词中的各个字母编码

                        ch = Mid(word, k, 1)

                        

                    Next k

                    pos = pos + 1     '对该单词编码

                    a(pos) = word

                Else         '词典中存在该单词

                    result = result + Str(id) End If

            End If

            If j < Len(s) Then result = result + " *"

           

        Loop

        Text2.Text = result

    End Sub

a(1)~a(12)是升序排列的数组元素,但是其中有重复数据,经过程序处理后,在文本框Text1中显示去重后数据,实现该功能的VB程序段如下:

n =1

For i=2 To 12

    If    ⑴    Then

        n=n+1

           ⑵  

    End If

Next i

S=””

For i=1 To n

    s=s+Str(a(i))

Next i

Text1.Text = s

上述程序中划线处可选语句为:①a(i)<>a(n)  ②a(i)=a(n)  ③a(n)=a(i)

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

A . ①、② B . ②、① C . ①、③ D . ②、③
排序的稳定性。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j], 且r[订]在r[j]之前, 而在排序后的序列中,r[i]仍在r[j]之前,则称这种撸序算法是稳定的:否则称为不稳定的。现编写一个VB程序,实现功能如下:随机生成n-1个不重复的[10, 99]之间的正整数,在这n-1正整数中随机选取一个位置i,将其值r[i]作为第n个数插入到某一位置j处,然后对数据序列进行排序,验证排序前和排序后这两个相同数相对次序的变化,著均不变,则排序稳定,若有改变,则排序不稳定。实现该功能的VB程序及界面如下,请回答以下问题。

Const n = 10

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

Dim k1 As Integer, k2 As Integer     'k1,k2为相同数据的前、后次序

Private Sub Command1_Click ()

    Dim i As Integer, tmp As Integer, t As Integer

    Randomize

    List1.Clear

    For i = 1 To 9    '随机生成9个不重复数

        b(i) = Int(Rnd * 90) + 10

        Do While    ①   

            b(i) = Int(Rnd *90) + 10

        Loop

    Next i

    '以下代码为随机选取数组中的1个数作为第10个数字再随机的插入到原数组的1-9位置

    K1 = Int(Rnd *9 + 1)

    tmp = b(k1)

    k2 = Int(Rnd* 9 + 1)

    For i=10 To k2+1 Step -1

        b(i)=b(i-1)

    Next i

    b(k2) = tup

    For i =1 To n

        a(i) = i

        List1. AddItem Str(a(i)) +””+ Str(b(i))

    Next i

    If k1 >= k2 Then

           ②   

        t =k1: k1=k2: k2=t

    End If

    Text1. Text = Str(k1) + Str (k2)

End Sub

Private Sub Command2 _Click ()

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

    List2. Clear

    For i=1 To n-1

        k=i

        For j=i +1 To n

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

        Next j

        If k<>i Then

            t=a(k): a(k)=a(i): a(i)=t

            t=b(l): b(k)=b(i): b(i)=t

        End If

    Next i

    For i= 1 To n

        List2.AddItem Str (a(i)) +"" + Str (b(i))

    Next i

    i=1

    Do While i<=n-1 And b(i)< b(i+1)

        i=i+1

    Loop

    Text2.Text = Str(a(i)) + Str(a(i + 1))

    If    ③    Then Label1. Caption="稳定" Else Label1. Caption ="非稳定"

End Sub

Function check(x As Integer, y As Integer) As Boolean

    Dim j As Integer

    check = False

    For j= 1 To y-1

        If b(j)=x Then

            check = True

            Exit For

        End If

    Next j

End Function

  1. (1) 分析程序代码,若某次运行显示“稳定”,则是否能确定选择排序是稳定排序?(填:是/否)
  2. (2) 补充横线处完整代码

     ② ③ 

模拟开关灯游戏如图所示,一共有n盏灯(n>=5)排成一排,一开始n盏灯都亮着(用1表示灯亮,0表示灯灭)。

游戏规则如下:

1)第1轮,将所有灯都关闭

2)第2轮,将所有偶数(编号为2的倍数的灯打开)

3)第3轮,如果编号为3的倍数的灯开着,则关闭,如果灯关闭着,则打开

4)重复游戏直到第n轮结束

现在给定灯的数目n(5<=n<=200),求最后灯关闭的数目。

编写VB程序,实现上述功能,运行程序,在文本框Text1中输入n盏灯数,单击“确定”按钮Command1,在文本框Text2中显示灯灭掉的数量。程序运行界面如、图所示。

请回答下列问题:

  1. (1) 若要清空文本框Text1,能实现该功能的语句是(单选,填字母:A.Text1.Caption = “” /B.Text1.Text = “” /C.Text1.Clear)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim n As Integer, k As Integer, tmp As Integer, num As Integer

        Dim a(1 To 200) As Integer, i As Integer, j As Integer

        n = Val(Text1.Text)

        For i = 1 To n

            a(i) = 1

        Next i

        For i = 1 To n

             

            Do While tmp <= n

                If _ Then

                    a(tmp) = 0

                Else

                    a(tmp) = 1

                End If

               

            Loop

        Next i

        num = 0

        For j = 1 To n

            If a(j) = 0 Then num = num + 1

        Next j

        Text2.Text = Str(num)

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
以下Case语句中错误的是(    )
A . Case 0 To10 B . Case   is>10 C . Case  is>10  And  is<50 D . Case 3,5, is>10
下面的程序,若想运行结果是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]
有如下VB程序段:

s1 = "567898765"

s2 = ""

n = Len(s1) \ 2

For i = 1 To n

    If Mid(s1,i,1) < Mid(s1, n + 1, 1) Then

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

    Else

        s2 = Mid(s1, n + i, 1) + s2

    End If

Next i

Text1.Text = s2

A . 98765 B . 7898 C . 5678 D . 56789
不能实现分支结构程序设计的语句是(      )
A . IF       THEN  B . SELECT      END  SELECT C . IF    ELSEIF      END  IF D . DO    LOOP
有如下 Python 程序段:

s=0

for k in range(3,1,-1):

    if k <= 1 :

       x = 1

       if k <= 2 :

           x = 2

       if k <= 3 :

           x = 3

       s = s + x

print(s)

执行该程序段后,输出显示的内容是(     )

A . 9 B . 8 C . 6 D . 3
编写VB程序,实现如下功能:在文本框Text1中输入关键词,例如关键词“ok”,单击“查找”按钮Com-mannd1,在左边的列表框List1所列单词中查找包含“ok”的字符串,如果查找成功,将在右边的列表框List2中输出该单词。若该单词多次符合条件,则只显示一次。如果查找失败,则在列表框List2 中显示“查找无结果“。

实现上述功能的VB代码如下,运行效果如图所示。请回答下列问题:

Const n= 5

Dim a(1 To n) As String

Private Sub Form_ Load( )

'将n个字符串分别赋值给数组元素a(1)、a(2)、……、a(n),并在列表list1中显示

'代码略:

End Sub

Private Sub Command1_ Click( )

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

    Dim m As Integer, k As Integer

    Dim flag As Boolean

    s = Text1. Text

    m = Len(s)

    List2. Clear

    flag = False

    For i=1 To n

        k = Len(a(i))

        For j=1 To k- m + 1

            If  = s Then     '①改错

                List2. AddItem a(i)

                flag = True

                Exit For      '退出for 循环

            End If

        Next j

    Next i

    If  Then    '②填空

        List2. AddItem“查找无结果”

    End If

End Sub

  1. (1) 观察运行界面,窗体中一共有个对象。
  2. (2) 程序代码中,加框处①有错,请改正。
  3. (3) 为实现上述功能,请在加框处②填入合适的代码。
  4. (4) 如果删除程序代码中Exit For语句,对程序最终运行结果(选项:有/无)影响。
小明编写VB程序实现有限小数、纯循环小数、混循环小数转化成最简分数。三种类型的小数转化方法如下表所示:

类型

计算公式

结果

有限小数

格式

a. b

(a*x+b)/x

示例

3. 14

(3*10^ 2+14)/10 2

157/50

纯循环小数

格式

a. (b)

(a*(x-1)+b)/(x-1)

示例

3. (14)

(3*(10^ 2-1)+14)/(10^2-1)

311/99

混循环小数

格式

a.b(c)

(a*(t-1)*x+ (b*t+c-b))/((t-1)*x)

示例

3. 14(159)

(3*(10 3-1)*10 2+(14*10 3+159-14))/(10^ 3-1)*10^2)

20923/6660

说明: ()内的数字串表示循环节 x=10 Len(b) t=10' Len(c)

程序运行时,在文本框Text1中输入小数,单击“转化”按钮,输出对应的分数,界面如图所示。

  1. (1) 在文本框中输入“0.0(6)”,转化成分数为
  2. (2) 实现上述功能的部分VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_ Click()

        Dim s As String, xS As String, zS As String

        Dim fz As Long, fm As Long

        Dim i As Integer

        Dim x As Integer, y As Integer

        s = Text1.Text

        i=1

        Do While Mid(s,  i, 1) <> "."

            i=i+1

        Loop

        zs =

        xs=Mid(s, i+1)

        If not(f(xs)) Then

            fm = power (Len(xs))

            fz = val(zs) * fm + vas (xs)

        Else

            If Mid(xs, 1, 1) = "(" Then

                xs = Mid(xs, 2, Len(xs) - 2)

                fm = power(Len(xs)) - 1

                fz = Val(zs) * fm + Val(xs) .

            Else

                x=0: y=0: i=1

                Do While Mid(xs, i, 1) <> "("

                     i=i+1

                Loop

                x=i-1

                y=Len(xs)-i-1

                fm =

                fz= Val (Mid(xs, 1, x)) * power(y)+Val (Mid(xs, i+1, y))-Val (Mid(xs, 1, x))

                fz=Val(zs)*fm+fz

            End If

        End If

        Label2. Caption = Str(fz / gcd(fz, fm)) + "/"+ Str(fm / gcd(fz,  fm))

    End Sub

    Function gcd (ByVal m As Long,  ByVal n As Long) As Long

        Dim r As Long

        Do While m Mod n<>0

            r= m Mod n

            m=n

            n=r

        Loop

       

    End Function

    Function f(s As String) As Boolean     '循环节判断

        '函数返回True代表循环小数,False 不是循环小数,代码略

    End Function

    Function power(x As Integer) As Long      '返回10的x次方

        '代码略

    End Function

在一篇英语短文中统计某字母开头的单词个数的程序,短文以“.”结束,单词之间用空格分隔,单词首写没有大写字母,没有缩写或其他特殊形式。部分程序代码如下所示:

s= Text1. Text    '输人的英语短文

t= Text2. Text    '要统计的开头字母

b=Len(s): f = True

For i=1 To b

  c = Mid(s, i, 1)

  If   ①   Then

    n= n+1

      ②   

  ElseIf c = "" Or c= "." Then

      ③  

  Else

    f = False

  End If

Next i

Label1.Caption= "以" + t + "为开头的单词个数:" + Str(n)

为实现上述程序,划线处应填入的代码是(    )

A . ①f and c=t②f= False ③f= True B . ①f=False and c=t②f= False ③f= True C . ①c=t②f= True③f= False D . ①f= True and c=t②f= True③f= False
某加密程序的代码如下:

s1=input("请输⼊明⽂:")

q="1357902468";

s2="" for ch in s1:

if "0"<=ch<="9":

  s2+=q[int(ch)]

elif "a"<=ch<="z":

  s2+=chr((ord(ch)-ord("a")+2)%26+ord("a"))

else:

  print(s2)

s2+=ch

运⾏该程序,输⼊s1的值为“Mike521@qq.com”,则输出结果为(   )

A .  Mgic053@oo.amk B .  Kgic931@oo.amk C .  Mkmg053@ss.eqo D .  Okmg931@ss.eqo
最近更新