循环结构语句及程序实现 知识点题库

小红打算用VB程序来查找数组a中下降数列的方法,其算法思想描述如下:

1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)开始为数组a第1个元素;

2)加入方法:将a(i)与数组b中的每个元素依次逐个比较:若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中;

3)若数组a各元素的值为:34,54,3,76,2,3时,则3个下降数列分别为:

“34,3,2”,“54,3”,“76”。

程序运行界面如下图所示:

依据上述描述设计了如下VB程序。请回答下列问题:

  1. (1) 若数组a的值是:“145,34,2,134,12”,数组b(1)的值是
  2. (2) 请在划线处填入合适的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Private Sub Form_Load()

        '读取n个数据,依次存储到a(1)、a(2)、……a(n)中,代码略

    End Sub

    Private Sub Command1_Click()

    Dim b(1 To n) As Integer   '存储数列最小的值

    Dim c(1 To n) As String    '存储下降数列

    Dim i As Integer

    Dim j As Integer

    Dim bn As Integer          '存储下降数列个数

      b(1) = a(1)

      bn = 1

      c(1) = Str(a(1))

      For i =

         For j = 1 To bn

           If a(i) < b(j) Then

              b(j) = a(i)

            

              Exit For

           End If

        Next j

        If j > bn Then

           bn = bn + 1

          

           c(bn) = Str(a(i))

        End If

      Next i

    For i = 1 To bn

         List1.AddItem c(i)

    Next i

    Text2.Text = "数列中共有" + Str(bn) + "个下降序列"

    End Sub

某地区有8个城市爆发疫情,需要发放救援物资。各城市的相邻关系用0表示不相邻,1表示相邻。例如:图a的邻接矩阵对应关系图如图b所示。

救援物资一共有4种(第1种口罩、第2种酒精、第3种防护服、第4种耳温枪),每个城市仅能分配到1种物资,要求相邻城市所分配到的救援物资各不相同。

算法分析:采用试探法分配物资(每个城市都从第1种物资开始逐个试探)。

第i个城市能否分配第c种物资,关键取决于第i个城市的周边是否有分配到相同物资的城市。如果已有相邻城市分配到第c种物资,则换第c+1种物资,否则就将第c种物资分配给第i个城市,继续探索第i+1个城市。

如果第i个城市,4种物资都无法分配到,则退回到第i-1个城市,调整第i-1个城市的物资,重新试探下一种物资。直至所有城市的救援物资都分配好。

例如:给城市1分配第1种物资,然后给第2个城市分配物资时,也从第1种物资开始试探,若发现第1种物资已分配给相邻城市,则试探第2种物资,以此类推。

小金同学编写VB程序实现上述功能:程序运行时,各城市之间相邻关系矩阵显示在列表框List1中。单击“分配”按钮Command1,在列表框List2中显示物资分配方案。程序运行界面如图c所示,请回答下列问题。

图c

  1. (1) 若按照上述算法,8个城市的相邻关系矩阵图如图 a、图 b所示,则城市 8所分配到的物资是(填:口罩/酒精/防护服/耳温枪)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click() Const n = 8

    Dim a(1 To n * n) As Integer, t(1 To n) As Integer, Dim w(1 To 4) As String Dim c As Integer, i As Integer, j As Integer,Dim f As Boolean

    w(1) = "口罩": w(2) = "酒精": w(3) = "防护服": w(4) = "耳温枪"

    ‘读取8个城市的邻接矩阵对应关系,存入a数组中,并显示在列表框List1中,代码略

    c = 1 t(1) = c i = 2

    Do While 

      For j = 1 To i - 1

        If Then

          Exit For

        End If

      Next j

      If j < i Then

        c = c + 1

        Do While c > 4

          i = i - 1

          If i = 0 Then

            List2.AddItem "no answer"

            Exit Sub

          End If

          c = 

        Loop

      Else

        t(i) = c

        i = i + 1

        c = 1

      End If

    Loop

    List2.Clear

    For i = 1 To n

      List2.AddItem "城市" & i & ":" & w(t(i))

    Next i

    End Sub

下面VB程序段的输出结果是(   )

For n = 1 To 4

 s = n * n

Print s;

Next n

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

s = Text1.Text

If Mid(s, 1, 1) = "(" Then flag = True Else flag = False

cnt = 0: sum = 0

For i = 2 To Len(s)

  c = Mid(s, i, 1)

  If flag = True Then

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

      sum = sum + 1

    Else

    If sum <> 0 Then cnt = cnt + 1: sum = 0

    End If

  End If

  If c = "(" Then flag = True

  If c = ")" Then flag = False

Next i

文本框Text1的内容为一串只包含小写字母、左右括号和空格的字符串“(we can) do (better) we (should (be )better)”,执行程序段后,变量cnt的值为(   )

A . 3 B . 4 C . 5 D . 6
在Python中,下列代码执行后的输出结果为(   )

t=1

for i in range(1, 5):

  t=t*i

print(t)

A . 55 B . 45 C . 40 D . 24
编写程序,实现以下功能:计算s=1+2/5+3/10+……i/i^2+1 的值,n由键盘输入,计算结果s保留3位小数。

Private Sub Command1_Click()

  Dim n as integer, i as integer,s as double

  n=val(inputbox("请输入n的值"))

  s=0: i=1

  do while      ①        

         ②        

    i=i+1

  Loop

  s=

  Print s

End Sub

  1. (1) 实现该程序功能的主体算法结构是
  2. (2) 上面的VB程序,请完善划线处内容,完成上述功能。
      ②
  3. (3) 方框处能使变量s的值四舍五入精确到小数点后第3位小数,以下可以实现的语句是(     )。
    A . Int(s * 100) / 100 B . Int(s * 1000) / 1000 C . Int(s * 100 + 0.5) / 100 D . Int((s * 1000 + 0.5)) / 1000
下列程序段执行后,x的值为(  )

x=0

For i=1 To 3

  For j=1 To i

    For k=j To 3

      x=x+1

    Next k

  Next j

Next i

A . 16 B . 14 C . 9 D . 8
有如下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
有如下程序段

s = Text1.Text

s1 = ""

For i = 1 To Len(s) \ 2

    m = Mid(s, i, 1)

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

    If m > n Then

        s1 = s1 + m + n

    Else

       s1 = s1 + n + m

Next i

Text2.Text = s1

在Text1中输入“8523691”,则执行该程序后,Text2中输出的是(   )

A . 819562 B . 8159823 C . 815926 D . 8195623
用Python程序实现统计随机数出现的次数。若随机产生30个[0,9]的整数,统计数字0~9出现的次数。以下是部分Python程序段,请回答下列问题: .

import random

def check(a):

b=[0]*10     #初始化列表b,列表元素为10个0

for i in range(0,len(a)):

            ①        

return b

list=[0]*30

for i in range(0,30):

    num = random.randint(0,9)

           ②         

print(list)

print("0~9数字依次出现次数.:"       ③        )

  1. (1) check函数的功能是
  2. (2) 程序中划线处应填入的代码是什么?

     ② ③ 

两个长度相同的字符串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 S, i As Integer

S=0

For i=1 To 100

    S=S+i

Next i

Print "S="&S

A . S=5050 B . 5050 C . S=101 D . 101
下面程序运行结果是:(    )

for i in range(2,11,2):

    print(i,end=" ")

A . 2 4 6 8 9 B . 2 3 4 5 6   C . 2 4 6 8 10 D . 2 4 5 8 10
素数迁移:小王编写了一个VB程序,在左边List1中显示随机生成的10个介于[2,99]的随机整数,单击命令按钮Command1后,其中的素数全部迁移到右边的List2中并进行显示,同时只有那些非素数(合数)的才继续在List1中显示,运行界面如图所示。

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

  1. (1) 根据代码可知,若要产生20个随机数,只需将的值修改为20即可。
  2. (2) 请在划线处填入合适代码。

    Const n = 10

    Dim a(1 To n) As Integer

    Private Sub Command1_Click()  '素数迁移模块

        Dim i As Integer

        List1.Clear                 '清除列表框

        List2.Clear

        For i = 1 To n

            For j = 2 To a(i) - 1

                If  Then

                    Exit For             'Exit For的功能是退出For循环

                End If

            Next j

            If Then

                List2.AddItem Str(a(i))

            Else

                List1.AddItem Str(a(i))

            End If

        Next i

    End Sub

    Private Sub Form_Load()        '随机数初始化模块

        Randomize                    '随机数种子初始化

        For i = 1 To n

            a(i) =

            List1.AddItem Str(a(i))

        Next i

    End Sub

有如下VB程序段:

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

Dim s2 As String,pwd As String

s=Text1.Text:pwd="71zhYEAR":s2="":t=0

For i = 1 To Len(s)

    c=Mid(s,i,1)

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

        t=t*10+Val(c)

    Else

        s2=s2+Mid(pwd,t Mod 8+1,1)

    End If

Next i

Text2.Text=s2

运行该程序段,在文本框Text1中输入“20B13A8”,文本框Text2输出的是(   )

A . hY B . YE C . YE7 D . Hya
请阅读以下材料,并回答问题:

材料一:珠穆朗玛峰的高度为848.86米。

材科二:有个科学猜想节目:如果有-张足够 大的纸,其厚度为0.1毫米,对折一次纸的厚度增加1倍设张纸的厚度为h,对折k次,那么纸的厚度为h*2”。

材料三:纸对折多少次后可以超过珠穆朗玛峰的高度的算法流程图表示如下。

  1. (1) 材料二中由“纸的厚度为h,对折k次,得出纸的厚度为h*2”,这个过程属于用算法解决问题的哪个步骤(单选题,填字母: A .抽象与建模;B .设计算法;C .描述算法)。
  2. (2) 材料三种加虚线框的过程属于算法控制结构中的结构。
  3. (3) 用Python语言实现上述算法,请在划线处填入代码。

    h=0.0001

    k=0

    while

        k=k+1

        h=h*2

    print("需要对折",k,"次")

  4. (4) 解决此问题的算法是(填“解析算法”或“枚举算法”)。
以下程序段的执行结果是(     )

J=1:N=0

Do While N<3

    J=J*(J+1)

    N=N+1

Loop

Print N; J

A . 1   0 B . 3    3 C . 4    30 D . 3   42
阅读下列程序,写出运行结果

s = 1

for i in range(1,10,3):s = s *i

print(s)

运行输出结果是:

阅读下图程序,分析程序意义,写出运行结果。

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

运行结果是:

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

程序运行后,输入:2021

运行结果是: