4.4.4 循环控制的应用 知识点题库

有如下VB程序段:

s = “7218634594”:n = Len(s)

t = 0

For i = 1 To n - 1

 a(i) = Val(Mid(s, i, 2))

Next i

For i = 1 To n - 2 Step 2

k = i

For j = i + 2 To n - 1 Step 2

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

Next j

If k <> i Then

  temp=a(i):a(i)=a(k):a(k)=temp

    t = t + 1

End If

Next i

Text1.Text = Str(t)

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

A . 1 B . 2 C . 3 D . 4
下列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)
已知下列Python程序段,k取下列哪组值是x=4? (       )

for i in range(10):

    k=int(input())

    if k<=20 and k>0:

        if k>15:

            if k>18:

                x=0

            else:

                x=1

        else:

            if k>12:

                x=4

            else:

                x=5

A . 13,16 B . 13,14,15 C . 16,17,18 D . 18,19
索引排序是近年来各类模拟考试中的新宠,而“索引排序”是和“物理排序”相对应的概念,所谓物理排序就是改变数组元素存储的物理位置,即直接对数组进行排序;而索引排序通过增加一个索引数组来存储各数组元素的下标,在排序时不需要对原数组进行排序,只需对索引数组排序即可。小明为了探究索引排序, 编写VB程序演示索引排序算法,功能如下:在文本框Text1中输入各个数据(用“,”隔开和结尾),单击“读取”按钮Command1,将各个数据依次存储到数组a中;单击“排序”按钮Command2,则对索引数组b重新排列,使得数组a中的元素按升序存储到数组c中,分别将处理后的索引数组b和有序数组c显示在标签Label1和Label2中。部分运行界面如图所示。

请回答下列问题:

  1. (1) 下列对象中,无 Caption属性的是(单选,填字母:A .Command1 / B .Text1/C . Form1)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 20) As Integer

    Dim b(1 To 20) As Integer

    Dim c(1 To 20) As Integer

    Private Sub Command1_Click()

        Dim i As Integer, t As String, ch As String

        n = 0: t = ""

       

        Do While i <= Len(Text1.Text)

            ch = Mid(Text1.Text, i, 1)

            If ch = "," Then

                n = n + 1

                

                b(n) = n

                t = ""

            Else

                t = t + ch

            End If

            i = i + 1

        Loop

    End Sub

    Private Sub Command2_Click()

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

        For i = 1 To n - 1

            For j = n To i + 1 Step -1

                If  Then

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

                End If

            Next j

        Next i

        For i = 1 To n

            

            Label1.Caption = Label1.Caption + Str(b(i))

            Label2.Caption = Label2.Caption + Str(c(i))

        Next i

    End Sub

  3. (3) 程序加框处代码有错,请改正。
为庆祝新学期到来,某校学生会组织开展文体演艺活动,现按活动要求,将各班学生编排成“三角”队形。队形有以下要求:

第一排正中间安排1人;第二排正中间安排3人;第三排正中间安排5人……,如此循环,直至班级人数不足以站满一排后结束编排。

三角队形外围一圈的同学对服装有特殊要求,需要进行标记(中间的同学用“●”标记,外围的同学用“▲”标记)

编写VB程序,实现队形编排功能:在文本框Text l中输入班级人数,单击“展示队形”按钮Command1后,将班级学生队形显示在列表框List 1中。例如,当班级学生数为54的时候,程序运行界面如图所示。

图片_x0020_100010

  1. (1) 根据题意,如果输入的班级人数为70,则三角队形的最后一行人数为
  2. (2) 程序代码中加框处有错误,请改正。

    Private Sub Command 1_Click( )

        Dim i As Integer,j As Integer

        Dim cnt As Integer,nAs Integer,tmp As Integer

        Dim kw As String,zw As String,c As String

        List 1.Clear

        cnt=Val(Text 1.Text)

        n=0:tmp= 1

        Do While 图片_x0020_100011     ‘计算三角队形的行数

            cnt=cnt-tmp

            tmp=tmp+ 2

            n=n+1

        Loop

        For i=1 T on

            kw="":zw=""

            For j=i T on-1

                kw=kw+" "

            Next j

            If i=n The nc="▲" Else c="●"

            For j= 1 To 2*(i-1)-1

                zw=zw+c

            Next j

            IfThen

                ZW="▲"

            Else

                zw="▲"+zw+"▲"

            End If

            List 1.Add Item

        Next i

    End Sub

  3. (3) 实现队形编排功能的VB程序如下,请在划线处填入合适的代码。
四则混合运算是指加法、减法、乘法和除法四种混合运算。现有一程序可计算不带括号的“+”、“-”、“*”三则混合运算。在文本框Text 1中输入表达式(保证符合数学规范),单击“=”按钮Command 1后,在标签Label l中输出运算结果,程序界面如图所示。

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

    Private Sub Command1_Click( )

        Dims As String,ch As String

        Dim i As Integer,t As Integer

        Dim ans As Long,px As Long

        s=Text1.Text

        ans=0:t=0:px= 1

        For i=1 To Len(s)

            ch=Mid(s,i,1)

            IfThen

                t=t*10+Val(ch)

            Else

                px=px*t

               

                If ch= "_" Then

                   

                    px=-1

                End If

                t=0

            End If

        Next i

        Label 1.Caption=Str(ans+

    End Sub

  2. (2) 若删除加框处代码,在文本框Text1中输入表达式“3-2+2*3”,程序运行结束时标签Label1中显示的内容为
有如下VB程序段:

s = Text1.Text

a = "": max = ""

For i = 1 To Len(s)

    c = Mid(s, i, 1)

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

        a = a + c

    Else

        If a > max Then max = a

            a = ""

    End If

Next i

Label1.Caption = max

执行该程序段,在文本框Text1中输入“153-023-583-65-”,则Label1中显示的结果是(    )

A . 023 B . 65 C . 153 D . 585
查找最短26个字母字符串:在文本框Text1中输入任意一串包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮command1,若无解,则在标签Label1中输出“无解!”,反之程序在标签Label1中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示:

⑴确定初始右边界:从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。

⑵调整子串左边界:若左边界有重复的字母则表明该子串可缩短,故左边可右移1位……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。

⑶调整子串右边界:子串右边界继续右移,在新子串符合条件后,记录并进行比较。

重复(2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。

图片_x0020_100011

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

Const n = 300

Dim i As Integer, k As Integer, length As Integer, L As Integer

Dim pos As Integer, s1 As String, res As String

Dim f(1 To 26)As Integer    '数组f记录每个小写英文字母的出现次数

Dim s(1 To n)As Integer    '数组s记录每个输入字符在字母表中的位置

Private Sub Command1_Click()

    res = ""

    s1 = Text1.Text

    For i = 1 To Len(s1)

        s(i)=        ①         

    Next i

    k = 0: pos = 1: length = n

    For i = 1 To 26

        f(i)= 0

    Next i

    For i = 1 To Len(s1)

        If f(s(i))= 0 Then k = k + 1

        f(s(i))= f(s(i))+ 1    '调整右边界,直到达到26个字母

        Do While         ②        

            f(s(pos))= f(s(pos))- 1

            If         ③          Then

                k = k - 1

                If i - pos + 1 < length Then

                    length = i - pos + 1

                    res = Mid(s1, pos, length)

                    L = pos

                End If

            End If

            pos = pos + 1

        Loop

    Next i

    If res <> "" Then

        Text2.Text = res

        Label1.Caption = "最短长度:" + Str(length)+ "开始位置:" + Str(L)

    Else

        Label1.Caption = "无解!"

    End If

End Sub

  1. (1) 对于字符串“qbwcadsgeqbdatcy”,包括字母“abcde”的最短字符串长度为(填数字)。
  2. (2) 请在画线处填入合适的代码。

     ② ③ 

利用格里高利公式 求π,直到最后一项的值小于0.0001为止,输出π的值。

Private Sub Command1_Click()

    Dim Pi As Single, t As Single

    Dim n As Integer, s As Integer

    Pi = 0

    t = 1: n = 1: s =1

    Do While Abs(t) >= 0.0001

        Pi = Pi + t

        n =

        s=

        t = s / n

    Loop

    Text2.Text =

End Sub

编写程序,找到并输出100以内的偶数个数。
在使用循环时,当循环次数一定时一般使用循环,当循环次数未知时一般使用循环。
下列VB程序段功能为:数组元素a(1)至a(20)中存储的是0-9之间的随机整数,查找在数组a中连续出现数字b的数组元素个数和起始位置,若有多个相同元素个数,则记录最后出现的起始位置。

b = 5

k = 0: imax = 0

For i = 1 To 20

    If a(i) = b Then

        k = k + 1

        If   ⑴   Then

            imax = k

              ⑵ 

        End If

    Else

        k = 0

    End If

Next i

Label1.Caption = "最大长度:" +Str(imax) +",起始位置:" + Str(st)

划线处可选代码为:

①k > imax ② k >= imax ③ st = i - imax + 1 ④ st = i

下列选项中,代码顺序正确的是(    )

A . ①③ B . ①④ C . ②③ D . ②④
有以下程序段:

sum=1

for i in range(2,5):

    sum=sum*i

print(sum, i)

程序的运行结果为(    )。

A . 24 5 B . 120 5 C . 24 4 D . 120 4
小林编写了一个用于1至9之间整数加减乘除运算的小程序,具体功能如下:在文本框Text1中输入一个算术表达式(该表达式仅包含1至9之间的整数和加减乘除运算符,其中最后一个运算符肯定是乘或除,且乘或除运算符的前和后一个运算符仅可能为加减或没有),单击“计算”按钮Command1,将运算结果显示在Label2中。程序运行界面如图所示,实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 将窗体标题更改为“简单算术运算",应修改窗体的属性的属性值。
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1_ Click()

        Dims As String, c As String, i As Integer

        Dim sum As Single, sum1 As Single, sum2 As Single, k As Integer,j As Integer

        s = Text1.Text : sum2=0:k= 1

        For i= 1 To Len(s)

            c=

            If c= "*" Or c= "/" Then

                If c="*" Then

                    sum = Val(Mid(s,i+ 1, 1)) * Val(Mid(s,i- I, 1))

                Else

                    sum = Val(Mid(s, i- 1, 1))/ Val(Mid(s,i+ 1,1))

                End If

                j=i-2

                Do While

                    c = Mid(s,j, 1)

                    If c="+" Then sum1 = Val(Mid(s,j-1, 1)) + sum

                    If c="-" Then sum1 = Val(Mid(s,j- 1, 1)) - sum

                    sum=sum1

                    j=j- 1

                Loop

                If k=1 Then

                    sum2 = sum2 + sum

                Else

                    c= Mid(s, k, 1)

                    If c =“+" Then sum2 = sum2 + sum

                    If c="" Then sum2 = sum2 - sum

                End If

                k=

            End If

            sum=0

        Next i

        Label2.Caption = sum2

    End Sub

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

Dim i As Integer, Sum As Integer

Dim a(1 To 11) As Integer

Sum = 6

a(11) = 49

For i = 10 To 1 Step -1

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

    If a(i) Mod 3 = 0 Then Sum = Sum + a(i)

Next i

Text1.Text = Str(Sum)

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

A . 174 B . 180 C . 36 D . 42
有VB程序段如下:

s = "United by Emotion": s1 = "”

For i=1 To Len(s) Step 4

    c = Mid(s, i,1)

    If Asc(c) >= Asc("a") Then

        c = Chr(Asc(c) - Asc("a") + Asc("A"))

        s1=c+s1

    End If

Next i

程序运行后,s1的值是(     )

A . "UEYON" B . "NOYE" C . "EYON" D . "UEEI"
有如下VB 程序段:

For i = 1 To 7

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

Next i

s = 0

For i = 1 To 6

  If a(i) < a(i + 1) Then

    f(i) = 1

  ElseIf a(i) > a(i + 1) Then

    f(i) = -1

  Else

    f(i) = 0

  End If

  s = s + f(i)

Next i

执行该程序段后,变量s的值为0,则数组a各元素的值可能是(   )

A . 9 8 4 1 3 3 9 B . 1 2 3 6 5 3 0 C . 1 8 6 2 4 3 8 D . 6 4 4 5 6 7 1
有如下VB程序段:

flag = False: txt = "Fighting"

For i = 1 To Len(txt)

    ch = Mid(txt, i, 1)

    If (ch>="a" And ch<="z" Or ch>="A" And ch<="Z") And Not flag Then

        s = ch + s: flag = True

    Else

        flag = False

    End If

Next i

Text1.Text = s

程序运行结束后,Text1中显示的内容是(   )

A . Fighting B . ntgF C . gnithgiF D . Fgtn
FOR I= 3 TO 19 STEP 4,循环体执行次。
下列VB程序的功能是:程序运行时,在文本框Textin中输入正整数n.单击命令按钮Command1后,统计1至n的整数中包含数字2的整数个数,并在文本框Textout中输出结果,若n=20,有2、12和20三个整数包含数字2,则文本框Textout中输出“3”。

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

Private Sub Command1_Click()

    Dim i As Long, n As Long, t As Long

    Dim s As Long     ′s用于统计1到n之间包含数字2的整数个数

    Dim k As Boolean

    s = 0

    n = Val(Textin.Text)

    For i = 1 To n

        k = False

        t = i

        Do While Not k And t > 0

            

            t = t \ 10

        Loop

        If k Then

    Next i

   Textout.Text = Str(s)

End Sub

最近更新