4.4.2 while循环的应用 知识点题库

编写VB程序,实现如下功能:单击“生成密文”按钮Command2,在文本框Text3中产生与每个小写字母对应的密文(每个明文字母对应1个不重复的密文字母)。在文本框Text1中输入单词字符串,单击“加密”按钮Command1后,进行逐个字符加密,加密方法:在“明文”中找到相应字符,再得到明文对应位置的密文,并在文本框Text2中显示对应密文(运行效果如图所示)。实现上述功能的VB代码如下,请完善程序代码。

Dim m2 As String

Private Sub Command1_Click()

Dim flag(1 To 26) As Boolean

Dim num As Integer,t As Integer

Randomize

num = 1

Text3.Text = “”

For i = 1 To 26

 flag(i) = False

Next i

Do While num <= 26

 x = Int(Rnd * 26) + 97

 

 If flag(t) = False Then

m2 = m2 + Chr(x)

num = num + 1

 End If

Loop

Text3.Text = m2

End Sub

Private Sub Command2_Click()

Dim s As String, m As String, result As String

Dim k As String, c As Integer

s = Text1.Text

m = “abcdefghijklmnopqrstuvwxyz”

For i = 1 To Len(s)

 k = Mid(s, i, 1)

 If k >= ”A” And k <= “Z”  Then

k = Chr(Asc(k) + 32)

 End If

 c = 1: continue = True

 Do While

If k = Mid(m, c, 1) Then

 continue = False

End If

c = c + 1

 Loop

 

Next i

Text2.Text = result

End Sub

有如下VB程序段:

s ="cbafedgh"

m=3:c="":n= Len(s)

For i =1 To n

  j=(i-1)Mod 3 + 1

  If m> n Then Exit For               '退出For循环

  c=c+ Mid(s,m-j+1,1)

  If j Mod 3 =0 Then m =m+3

Next i

If i < n Then c = Mid(s,i,n-i + 1)+c

执行该程序段后,变量c的值是(    )

A . Abcdef B . Abcdefgh C . Ghabcdef D . hgabcdef
有如下VB程序段:

For i = 1 To 6

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

  If a(i) Mod 2 = i Mod 2 Then

    a(i) = a(i) + 1

  Else

    a(i) = a(i) Mod 2

  End If

Next i

执行该程序段后,在下列选项中,a(1)~a(6)各元素可能的值是(    )

A . 0,1,1,0,0,1 B . 0,5,6,6,10,9 C . 3,6,7,8,11 D . 2,1,8,3,12,5
有如下VB程序段(数组a中各元素的初始值均为0):

n=Len(Text1.Text):c=1

For i=1 To n

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

    If s>="0"And s<="1"Then

        a(c)=a(c)*2+Val(s)

    Else

        If a(c)>0 Then c=c+1

    End If

Next i

在文本框Text1中输入“A:1010 C:1100 E:1110”。执行该程序后,数组a(2)中的元素值为(  )

A . 2 B . 12 C . 22 D . 2200
任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5,12=5+7,98=19+79。

编写一个验证哥德巴赫猜想的VB程序,程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按键Command1后,如果猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式;否则显示“No”。程序运行界面如图所示。

实现上述功能的VB代码如下,但加框处代码有误,请改正。

Function judge(x As Integer) As Boolean

  Dim j As Integer

  judge=True

  j=2

    Do While j<=x-1 And judge=True

        If x Mod j=0 Then

            judge=False

        Else

            j=j+1

        End If

    Loop

End Function

Private Sub Command1_Click()

  Dim n As Integer, p As Integer

  Dim q As Integer, flag As Boolean

  n=Val(Text1. Text)

  p=1

  flag=False

  Do While  And p<n           ‘①

    p=p+1

                                ‘②

    If judge(p) And judge(q) Then

        Text2. Text="Yes"

        flag=True

        List1. Addltem Str(n)+"="+Str(p)+"+"+Str(q)

    End If

  Loop

  If flag=False Then

    Text2.Text="No"

  End If

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾, 程序运行界面如图1所示。

图1

图2

  1. (1) 观察以下代码,该代码中 Command1_Click()是(选:A . 对象名 /B . 事件名 /C . 事件处理过程名)
  2. (2) 在设计应用程序界面时,应使用图2所示“控件工具箱”中的添加列表框List1.
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Dim a(1 To 100) As String ,s As String, ch As String, word As String

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

      s = Text1.Text : k = 0 : word = ""

      For i = 1 To Len(s)

        ch = Mid(s, i, 1)

        If ch >= "a" And ch <= "z" Or ch >= "A" And ch <= "Z" Then

          If ch >= "A" And ch <= "Z" Then

            word = word + ch

          Else

            flag = False

          For j = 1 To k

            If a(j) = word Then flag = True

          Next j

          If Not flag And word <> "" Then

            

            a(k) = word

            numb = numb + 1

          End If

          

        End If

      Next i

     Text2.Text = str(numb)

    End Sub

编写Python程序进行成绩分析,学号为1~ 10号同学的信息技术学科成绩依次存储在列表xx中,部分程序代码如下,请回答下列问题:

xx=[35,29,28,42,21,38,17,44,18,19]

sum=0

for i in           

sum=sum+i

          

print("信息学科平均分为:"+str(ave))

  1. (1) 程序中划线处应填入的代码是什么?
  2. (2) 学号为1~ 10号同学的通用技术学科成绩依次存储在列表ty中,若要实现统计技术学科分数(技术学科分数为信息技术与通用技术两学科分数之和)大于等于80分的人数,则程序中划线处应填代码是什么?

    xx=[35,29,28,42,21 ,38,17,44,18,19]

    ty=[29,31,26,38,40,41,26,41,21,33]

    c=0

    for i in :

         if :

         c=c+1

    print("技术学科分数大于等于80分的学生有:"str(c)+"个"

卡普利加数又称雷劈数,是指将该数的平方数拆分成两部分,若这两部分的和与该数相等,则该数为卡普利加数。小陈编写VB程序,实现功能:文本框Text1输入一个正整数,单击“判断”按钮,在标签Label2中显示该数的平方,如果该数是卡普利加数,在标签Label3中显示两数和相加的等式,否则显示“该数不是卡普利加数”。运行界面如下图所示:

  1. (1) “判断”按钮的对象名为
  2. (2) 请在划线处填入合适的代码。

    Private Sub Judge_Click( )

        Dim x As Integer, i As Integer

        Dim y As Long, flag As Boolean

        flag = False

        x = Val(Text1.Text)

        i = 10

       

        Label2.Caption = "该数的平方是:" + Str(y)

        Do While y \ i > 0 And flag = False

            t1 = y \ i

            t2 = y Mod i

            If  Then

                flag = True

                Label3.Caption = Str(t1) + "+" + Str(t2) + " = " + Str(x)"

            End If

            i =

        Loop

        If Not flag Then Label3.Caption = "该数不是卡普利加数"

    End Sub

  3. (3) 已知55是卡普利加数,根据以上程序,在文本框Text1中输入55,则标签Label3中显示的表达式是:
平地上整齐地铺满了边长为1分米的正方形砖块,以某四块砖的交点为圆心,画一个半径为r (r≥ )分米的圆,计算圆内所能包含的砖块数量,如图所示。

因为圆是一个中心对称图形,所以我们可以先计算出1/4圆区域内的砖块数量。因为正方形砖块的边长是1分米,所以1/4圆区域内共有n=int(r)列砖块,我们只需把每一列的砖块数量累加起来,就能计算出总的砖块数量。

我们可以按照上述算法编写程序,在文本框Text1中输入圆的半径,单击“计算”按钮(Com and1)后,在文本框Text2中输出圆内所能包含的砖块数量。

  1. (1) 若输入圆的半径为3分米,则圆内所能包含的砖块数量为:
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dimr As Double, s As Double

        Dim x As Integer, y As Integer, n As Integer

        r = Val (Text1. Text)

        n= Int(r)

        s=0:x=1:y=0

        Do While x<= n

            y =Int(Sqr()

            s=s+y

            x=

        Loop

        Text2. Text =

    End Sub

有如下 VB 程序段:

x = 86420: s1 = "ByeBye2020": s2 = "Fighting2021" result = ""

Do While x > 0

    r = x Mod 10

    If r Mod 3 = 0 Then

        result = Mid(s1, r + 1, 1) & result

    Else

        result = result & Mid(s2, r + 1, 1)

    End If

    x = x \ 10

Loop

Text1.Text = result

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

A . Bgt22 B . eBihg C . 2Bgt2 D . 2yeFn
某垃圾分类VB程序功能如下:在文本框Text1中输入一串字符(数据用逗号分隔,以逗号结尾),单击“统计”按钮Cmd1后,程序实现计算干、湿垃圾的重量及总重量(单位:斤)。输入字符串中的前后两个数字字符为一组,第一个数字字符代表垃圾种类,1表示干垃圾,2表示湿垃圾,第二个数字字符代表该垃圾的重量。例如:输入字符串“2,1,1,12,”,程序统计结果为干垃圾12斤,湿垃圾1斤,总重量13斤。程序运行界面如图所示。

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

    Private Sub Cmd1_Click()

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

        Dim k As Integer, bh As Integer, w As Integer

        Dim w1 As Integer, w2 As Integer

        s = Text1.Text: k = 1: t = 0: bh = 0      'bh存储当前垃圾的垃圾编号

        w1 = 0: w2 = 0

        For i = 1 To Len(s) s1 = Mid(s, i, 1)

            If  Then

                t = t * 10 + Val(s1)

            Else

                If Then

                    bh = t

                Else

                    If bh = 1 Then

                        w1 = w1 + t

                    Else

                        w2 = w2 + t

                    End If

                   

                End If

                k = k + 1

               

            End If

        Next i

        List1.AddItem "干垃圾共" + Str(w1) + "斤"

        List1.AddItem "湿垃圾共" + Str(w2) + "斤"

        Label3.Caption = "总重量共有" + Str(w) + "斤"

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
某手机APP为电影观众选座提供了程序推荐和自主选位功能。当观众购票选择程序推荐时,程序根据电影放映厅内每个座位的优先等级(用一个正整数表示其等级值,如图a所示),自第1排1号座开始,按自左向右逐排的顺序查找满足本次购票人数r的最优空位区(最优空位区是指从某个座位开始的同排连续的r个空位,且其等级值之和最高,若有多个最优空位区,则推荐最先找到的)。若找到,则显示出推荐的座位编号;若找不到,则提示自主选位。

例如:图a中放映厅内座位有9排10列,第5排10个座位的等级值依次为:1,2,3,4,5,5,4,3,2,1。全部座位为空时,当前购票人数为5,推荐座位编号为5排3-7号;如图b所示已经部分选座状态下,当前购票人数为2,推荐座位编号为6排3-4号。

编写VB程序,模拟上述功能。运行程序,在列表List1中显示目前选座状态,黑点表示已选座,白点表示空位,在文本框Text1中输入购票人数后,单击“推荐”按钮Command1,在标签Label3显示当前购票人座位的推荐结果。程序运行界面如图c所示。

  1. (1) 如图a所示,全部座位为空时,第1次购票人数为4人,按程序推荐座位选座,座位等级值之和为 。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const m = 9         'm 表示座位有9排

    Const n = 10        'n 表示每排的座位数为10

    Dim r As Integer         'r 表示当次输入的购票人数

    Dim a(1 to m * n) As Integer   'a 数组存放每个座位的等级值

    Dim b(1 to m * n + 1) As Integer      'b 数组保存当前各座位选座情况,选中为1,未选为 0

    Private Sub Form_Load()

    '从第1排开始,按座位编号从小到大顺序逐排读取座位等级值并依次存入数组a

    '同上述顺序,读取选座状态存入数组元素b(1)至b(m*n)中,输出当前选座状态。代码略

    End Sub

    Function getsum(i As Integer, j As Integer) As Integer

        '从第i排第j列开始,计算第i排中满足r个观众就座的连续空位等级值之和。

        '若无法找到足够的连续空位时,则返回-1

        Dim p As Integer, sum As Integer, k As Integer

        sum = 0

        p = j: k = (i - 1) * n + p

        Do While p <= j + r - 1 And b(k) = 0

            sum =

            p = p + 1: k = k + 1

        Loop

        If p = j + r Then getsum = sum Else getsum = -1

    End Function

    Private Sub Command1_Click()

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

        Dim t As Integer, newi As Integer, newj As Integer, pos As Integer

        r = Val(Text1.Text)

        max = 0

        For i = 1 To m

            For j = 1 To n - r + 1

                

                If max < t Then max = t: newi = i: newj = j

            Next j

        Next i

        If max = 0 Then

            Label3.Caption = "请自主选位" Else

            pos = (newi - 1) * n + newj

            For i =

                b(i) = 1

            Next i

            Label3.Caption = "推荐座位编号:" & newi & "排" & newj & "-" & newj + r - 1 & "座"

        End If

    End Sub

以下Python代码输出结果中说法正确的是(   )。

x=0

for i in range(1,100):

    x=x+i

print(x)

A . 1+100的和 B . 1+99的和 C . 1~99所有整数的和 D . 1~100所有整数的和
有如下VB程序段:

s1 = "00100100" : s2 = "" : flag = True

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

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

    If flag Then

        s2 = Str(ch) + s2

        If ch = 1 Then flag = False

    Else

        s2 = Str(1 - ch) + s2

    End If

Next i

Label1.Caption = s2

执行该程序段后,标签Label1中显示的内容是(   )

A . 1 1 0 1 1 0 1 1 B . 1 1 0 1 1 0 0 1 C . 1 1 0 1 1 1 0 0 D . 1 1 0 1 1 0 0 0
有如下VB 程序段:

s1 = "PROGRAM": s2 = ""

For i = 1 To 4

    t = Int(Rnd * 4) * 2 + 1

    Do While f(t)

        t = Int(Rnd * 4) * 2 + 1

    Loop

    f(t) = True

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

Next i

Label1.Caption = s2

数组f 各元素的初值为False,执行该程序段后,标签Label1上显示的内容可能是(    )

A . PPOM B . MROR C . PROM D . RPAM
某Python程序代码如下:

s='t1Hr2a3'

s1='' ; s2=''; i = 0

while i < len(s):

    if '0'<=s[i]<='9': 

        s1 = s1 + s[i] 

    elif 'a'<=s[i]<='z':

        s2 = s[i] + s2 

        i = i + 1

        ans = s2 + s1

print(ans)

程序执行后,输出的结果是(      )

A . 12art3 B . art123 C . rta123 D . art321
某市实施交通管制,早晚高峰根据车牌号单双号限行。车牌尾号为单号的双号日限行,车牌尾号为双号的单号日限行。若车牌尾号不是数字,则从车牌号中取最后一位数字。

实现上述功能的Python程序代码如下:

chepai = input('请输入您的车牌:浙A')

for i in range(         , -1):

   if '0' <= chepai[i] <='9':

      lastnum = int(chepai[i])

      if lastnum % 2 == 0:

         print('车牌尾号双号,单号日限行!')

      else:

         print('车牌尾号为单号,双号日限行!')

break

划线处应填入代码是(   )

A . len(chepai)-1,-1 B . len(chepai),0 C . len(chepai)-1,0 D . 1,len(chepai)+1
以下程序suixian可以判断某个数字是否为水仙花数,所谓“水仙花数”是指一个3位数,其各个数字立方和等于该数本身。

Private Sub Command1_Click( )

    Dim i As Integer

    For i = 100 to 999

       

    Next i

End Sub

Public Sub suixian(x As Integer)

    Dim i%,j%,k%

    i =

    j = (x -i * 100)\10

    k =

    If   Then Print x

End Sub

试卷运送。五校联考就要到了,本次负责安排运送试卷的路线的是TBY。由于各所学校都参与了一些科目命题工作,所以目前每个学校里都有几个科目的试卷。为了节省运输费用,TBY想要找到一种能连接所有学校且线路总长最短的方案。

一共有n(3<=n<=100)个学校,各所学校之间的线路长度以一行共n*n个数据输入,

第i组的n个数据为从第i个学校出发到其他学校的线路长度,保证第i组的第i个数据为0。

编写VB程序,实现上述功能。运行程序,在文本框Text1中输入学校总数,

在文本框Text2中按题述方法输入各校之间的距离,点击命令按钮Command1后,在标签Label1中显示最短的线路总长。程序运行界面如图所示。

请回答下列问题:

  1. (1) 若n=4,各校距离为0242831240352528350303125300,则最短的线路总长为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Const INF = 2147483646

    Dim n As Long, a As Long

    Dim dis(1 To 10001) As Long, flag(1 To 10001) As Boolean

    Dim head(1 To 10001) As Long, nxt(1 To 10001) As Long

    Dim ed(1 To 10001) As Long, value(1 To 10001) As Long

    Dim cnt As Long, tby As Long, sss As String

    Dim i As Long, j As Long

    Private Sub Command1_Click()

        cnt = 0

        n = Val(Text1.Text)

        For i = 1 To n

            dis(i) = INF : flag(i) = False : head(i) = 0

        Next i

        tby = 1

        sss = Text2.Text

        For i = 1 To n

            For j = 1 To n

               

                If i <> j Then Call addedge(i, j, a)

            Next j

        Next i

        Dim ans As Long

        dis(1) = 0 : ans = 0

        For i = 1 To n

            Dim hg As Long, u As Long

            hg = INF

            u = 0

            For j = 1 To n

                If  Then

                    hg = dis(j)

                    u = j

                End If

            Next j

           

            flag(u) = True

            Dim p As Long

            p = head(u)

            Do While p <> 0

                Dim v As Long

                v = ed(p)

                If Not flag(v) And dis(v) > value(p) Then

                    dis(v) = value(p)

                End If

                p = nxt(p)

            Loop

        Next i

        Label1.Caption = Str(ans)

    End Sub

    Sub addedge(a As Long, b As Long, x As Long)

        cnt = cnt + 1

        value(cnt) = x

        ed(cnt) = b

        nxt(cnt) = head(a)

        head(a) = cnt

    End Sub

    Function Getin() As Long

        Dim aaa As String

        aaa = Mid(sss, tby, 1)

        If aaa = " " Then tby = tby + 1

        aaa = Mid(sss, tby, 1)

        Dim bbb As Long

        bbb = 0

        Do While aaa <> " " And tby <= Len(sss)

            bbb = bbb * 10 + Val(aaa) : tby = tby + 1

            aaa = Mid(sss, tby, 1)

        Loop

        Getin = bbb

    End Function

某算法的部分流程图如下图所示,执行这部分流程后,输出x,y的值分别是(  )

A . 0,3 B . 3,1  C . 3,0 D . 0,35
最近更新