常量、变量及变量的赋值 知识点题库

【加试题】小明设计了一个VB程序(界面如图16所示),随机产生n(n<=100)个大于等于a(a<=100)且小于等于b(b<=100)的整数,并在列表框List1中降序显示。

 

实现上述功能的VB代码如下:

请在划线处填入合适代码。

Private Sub Command1Click()

    Dim a As Integer, b As Integer

    Dim n As Integer, t As Integer

    Dim m(1 To 100) As Integer

    a = Val(Text1.Text)

    b = Val(Text2.Text)

    n = Val(Text3.Text)

    If  a > b Then t = a: a = b: b = t

    Randomize

         ①        

    For i = 2 To n

    m(i) = Int(Rnd * (b - a + 1)) + a

    If m(i) > m(i - 1) Then

           ②     

    For j = i - 1 To 1 Step -1

    If temp < m(j) Then Exit For

    m(j + 1) = m(j)

    Next j

          ③     

    End If

    Next i

    For i = 1 To n

    List1.AddItem Str(m(i))

    Next i

End Sub

程序①处的代码是

程序②处的代码是

程序③处的代码是

有如下Visual Basic程序:

Private Sub Command1_Click()

Dim i As Integer, c As Integer, n As Integer

n = Val(Text1.Text)

c = 0

For i = 1 To n

If i Mod 3 = 0 Then c = c + 1

Next i

Label1.Caption = Str(c)

End Sub

运行该程序,在文本框Text1中输入20,单击命令按钮Command1,在标签Label1中显示的是

用VB编写数据解压缩程序,其功能如下:在文本框Text1中输入压缩后的数据,格式为“字符数字字符数字......,其中的字符只能是单个,而数字可以是多位,表示其前面的字符个数。(即原始数据)“WWWyyyy”输出在文本框Text2中运行界面如图所示。

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

Private Sub Cond1_Click()

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

Dim ch As String, s As String, s1 As String

s=Text.Tet

Tex2.Test=“”

n=0

s1=Mid(s,1,1)

i=2

Do While i<Lend(S)

Ch=Mid(si,I)

If ch>“0”And ch <”9”Then

n=   ①   

Else

Forj=1Ton

Text2 Text=    ②  

Next j

sl=ch

    ③  

Endir

I=i+1

Loop

End Sub

  1. (1) 由代码可知,命令按钮“解压缩”的对象名是
  2. (2) 请在划线处填入合适的代码。

     ② ③ 

  3. (3) 若删除加标处代码,而压缩数据依然为“w3y4”,则解压缩后的数据为
编写VB程序,功能为:单击“发牌”按钮“Command1”后,从一副扑克牌(不包括大王、小王、J、Q、K、A)中随机抽取5张牌,牌的花色(♠♥♣♦)忽略,显示在列表框“List1”中。如果这5张牌由一个对子和一个顺子(3张牌连续)组成,则在标签“Label1”中显示“运气不错:)”,否则显示“运气一般:|”。程序运行界面如图所示。

实现上述功能的VB程序如下:

Private Sub Command1_Click()

  List1.Clear

  Dim five(1 To 5) As Integer

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

  Dim p As Integer, find_pair As Boolean

  '随机抽取5张牌,将牌的点数存储在数组five中,并在List1中显示。代码略

  i = 5: p = 1: find_pair = False

  Do While i>= 2

    j=p

    Do While j <= i - 1

      If five(j) > five(j + 1) Then

        t = five(j): five(j) = five(j + 1): five(j + 1) = t

      ElseIf five(j) = five(j + 1) And Not find_pair Then

        t = five(1): five(1) = five(j): five(j) = t

        t = five(2): five(2) = five(j + 1): five(j + 1) = t

        find_pair = True

        i = i + 1

        p = _____________

        Exit Do

      End If

      j = j + 1

    Loop 

    i = i - 1

  Loop

  k = 0

  For i = 3 To 4

    If  Then k = k + 1

  Next i

  If five(1) = five(2) And k = 2 Then

    Label1.Caption = "运气不错:)"

  Else

    Label1.Caption = "运气一般:|"

  End If

End Sub

请回答下列问题:

  1. (1) 窗体标题显示的文字为“对子和顺子”,是通过修改窗体的属性实现的。
  2. (2) 完善程序在划线处填写正确代码。
  3. (3) 程序代码中,加框处代码有错,请改正。
  4. (4) 单击“发牌”按钮随机抽取的5张牌为“2、1、2、3、2”,则在标签“Label1”中显示的是。(单选,填字母:A .运气不错:) / B .运气一般:|)
如果一个自然数的每个质因数都至少是二重的(即每个质因数乘方次数都大于或等于2),如整数72=2^3*3^2(即72=2*2*2*3*3),判断2~72所有数中全部质因子的乘方次数,找出质因子“2”乘方次数为3;质因子“3”乘方次数为2,不是72的质因子,那么这个自然数称为“漂亮数”。小李编写了一个验证“漂亮数”的VB程序。在文本框输入小于1 000的正整数,单击“检查”按钮在列表框中显示该数的质因子及该因子乘方数,在标签Label1中显示判断结果,在标签Label4中显示所有质因数的分解过程。程序运行界面如下图所示。

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

Private Sub Command1_Click()

Dim a(1 To 999) As Integer

Dim n As Integer

Dim s As String

For i=1 To 999

 a(i)=0

Next i

n=Val(Text1.Text)

s =“”

Do While n<>1     ‘分解质因子过程并统计质因子出现次数

For i = 2 To n

 Do While n Mod i = 0

  s = s&“  ”&i

  a(i)= a(i)+1

       ‘①

 Loop

Next i

Loop

Label4.Caption =“质因子分解过程:” +s

For j = 2 To 999     ‘判断是不是漂亮数

 If Then      ‘②

  Label1.Caption = “不是漂亮数”

  Exit For

 Else

  Label1.Caption =“漂亮数”

  End If

Next j

For j = 2 To 999     ‘在列表框输出质因数及对应的乘方数

 If a(j)>0 Then

  List1.Additem Str(j)+“ ”+Str(a(j))

 End If

Next j

End Sub

 ② 

小刘设计了一个排序算法,该排序算法会将数组a中奇数位的元素从小到大排列,偶数位的元素从大到小排列,程序界面如图,算法的VB程序段如下:

Private Sub Command2_Click()

Dim i As Integer, j As Integer, tmp As Integer

Dim s1 As String, t As Integer, s2 As String

t=1

For i=1 To n-2

    For j= To n Step 2     ‘改错

        If a(i)*t>a(j)*t Then

            tmp =a(i): a(i)= a(j): a(j)=tmp

        End if

    Next j

                   ‘填空①

Next i

For i =1 To n

    If     Then       ‘填空②

        s1 =s1 Str(a(i))

    Else

        s2=s2+Str(a(i))

    End If

Text2. Text=“奇数位:”+s1

Text3. Text=“偶数位:”+s2

End Sub

回答以下问题:

  1. (1) 若要修改按钮 Command上显示的文字,应修改的属性名是(单选,填字母:A .Text/B .Caption/C .Click)
  2. (2) 程序代码中,For语句加框处有错,应改为.
  3. (3) 划线部分的代码应填①
  4. (4) 若将划线处“For i=1 To n-2”修改为“For i=1 To n-1”,是否会出错? (填是/否)
小明编写了一个简单算式计算器程序,功能如下:在文本框Text1中输入一个加法的算式,形式为a+b,a和b都为正整数,单击按钮 Command1后,在标签 Label1上显示算式的计算结果。程序运行界面如图所示。

  1. (1) 在设计程序界面时,应使用图b所示“控件工具箱”中的(填数字编号)添加标签对象。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1 _Click( )

    Dim key As String

    Dim a As Integer, b As Integer, ans As Integer, ch As String

    key =Text1.Text

    i=1

    Do While i <= Len (key)

        ch Mid(key, i, 1)

        If ch>= “0” And ch < = “9” Then

               ①   

        Else

            Exit Do   ‘退出循环

        End If

    Loop

    a=   ②  

    b= Val (Mid(key,+1, Len (key)-i))

    ans =a +b

    Label1. Caption= “算式计算结果为: “+str(ans)

    End Sub

     ② 

  3. (3) 程序运行时,在文本框中输入“123+10”,单击“计算”按钮后,对语句ch=Mid(key, i, 1)执行的次数是
下列程序段执行后,变量max的值用于存储(  )

Dim i As Integer, max As Integer

Dim a (1 to 10) As Integer

‘代码略,随机产生10个不重复的数存于数组a的10个元素a⑴~a⑽中max=1

For i=2 To 10

If a (i) > a(max) Then max=i

Next i

A . a(2)-a(10)的最大值 B . a(1)~a(10)的最大值 C . a(2)~a(10)的最大值在数组中的下标值 D . a(1)~a(10)的最大值在数组中的下标值
数组a中存储的是左右交替上升的n个正整数,如下表所示:

a(1)

a(2)

a(3)

a(n-2)

a(n-1)

a(n)

3

25

38

55

31

12

依据对分查找思想,设计一个在数组a中查找数据key的程序,实现该功能的VB程序如下,但加框处代码有错,请改正

Private Sub Command1_Click( )

Const n = 6

Dim a (1 To n) As Integer, flag As Boolean

Dim i As Integer, j As Integer, m As Integer, key As Integer

‘读取一组正整数,按上述规则存入数组a中

‘代码略

key = Val(Text1. Text)

i = 1

j = (n+1) \2

flag= False

Do While     And Not flag     ‘①

  m = (i+j) \2

  If key = a(m) Then

    flag= True

  ElseIf key < a(m) Then

    j = m-1

  Else

    i = m+1

Loop

If Not flag And j > 0 Then

  m =       ‘②

  If key = a(m) Then flag = True

End If

If flag Then

  Text2.ext = str(m)

Else

  Text2.Text= “找不到”

End if

End sub

①加框处应改为

②加框处应改为

下列选项中,与代码"Do while i <= j And Flag = False"功能相同的是(  )
A . Do while Int(j - i) >= 0 And Not Flag B . Do while i*a <= j*a And a > 1 And Flag = Not True C . Do while Int(i - j) <= 0 And Not Flag = True D . Do while j > Int(i) And (Not Flag) = True
有如下VB程序段

s=Text 1.Text

t=Mid(s, Len(s),1)

Max= 0

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

    If Mid(s, i, 1) <Mid(s, i+1, 1) Then

     t=t+Mid(s, i, 1)

     If Len(t) >Max Then Max=Len(t) :ans=t

    Else

      t=Mid(s, i, 1)

  End If

Next i

Text 2.Text=ans

在文本框Text 1中输入“aaabcdebb”,执行该程序段后,文本框Text 2中显示的是(  )

A . aaabcde B . aaa C . abcde D . edcba
回文数是从左向右读和从右向左读结果一样的数字串,例如:1和363都是回文数。编写VB程序,构造一个大于给定正整n的最小回文数p。构造方法如下:

⑴根据数字串n的左半部分子串st,构造对称的右半部分,生成回文数p;

⑵若p>n,则p即为最小回文数,如:98712→98789。

⑶若p<=n,则需重新构造p,方法是:从右向左查找字符串st中第一个非“9”的字符;若不存在,则形成“10…01”的回文数p,p的长度比n的长度多1为,如9999→10001。若存在,则将第一个非“9”字符加1,并将该字符后面部分用字符“0”填充,最后构造对称的右半部分,生成回文数p,如:98992→99099。98989

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

  1. (1) 如果n为69999,则p为
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim n As String, st As String, p As String

    Dim In As Integer, i As Integer, j As Integer

    n = Text1.Text

    k = Len(n)

    st =Mid(n, 1, (1n +:1)\2)

    p=st

    For i = k\2 To 1 Step-1

    p=p+ Mid(n, i, 1)

    Next i

    If    ①     Then

    i=(k +1)\2

    Do While i > 0

    If Mid(st, i, 1)="9" Then    ②     Else Exit Do

    Loop

    If i <1 Then

    p="1"

    For i= 2 To k

    p=p+"0"

    Next i

    p=p+"1"

    Else

    p=Mid(st, 1, i-1)

    p=p+ Chr(Asc(Mid(st, i, 1))+1)

    For j=i+1 To k-i

    p=p+"0"

    Next j

    If    ③     Then p = p+ Mid(p, i, 1)

    For j=i-1 To 1 Step-1

    p=p+ Mid(p, j, 1)

    Next j

    End If

    End If

    Text2.Text = p

    End Sub

    ①处代码;②处代码;③处代码

某算法的部分流程图如图所示,执行这部分流程后,输出s的值为64,则①处应填入

A . i \ 4 = 2 B . Sqr(i) = Int(Sqr(i)) C . i Mod 2 = 1 D . i Mod 2 = 0
有如下Python程序,当程序运行后输入15000,则程序输出结果为:(  )

salary=float (input( ))

if salary<=5000:

    tax=0

elif salary<=7000:

    tax=(salary-5000)*0.1

elif salary<=10000:

    tax=200+(salary-7000)*0.2

else:

    tax=800+(salary-10000)*0.4

print(salary-tax)

A . 2800 B . 2800.0 C . 12200 D . 12200.0
地球上任意位置可以用纬度、经度描述,纬度区间是[-90,90],经度区间是[-180,180]。如:浙江省绍兴市越城区鲁迅故里的纬度是29.9924099,经度为120.58552218。为表达位置间的邻近关系,引入了地理区域编码,某算法的核心思想如下:

•将地理上某点经纬度分别转换成二进制编码。例如,对于给定纬度lat(299924099),编码规则为:

•将区间[-90,90]二分为[-90,0),[0,90],称为左、右区间,1at属于右区间[0,90],标记为1;

•将区间[0,90]二分为[0,45),[45,90],lat属于左区间[0,45),标记为0;

•重复上述过程,不断划分区间,lat属于左区间则记录0,属于右区间则记录1。直到达到指定编码长度 length(一般为5的倍数)为止类似地,可对经度lng(120.58552218进行二进制编码。

·Base32编码合成为地理区域字符串。以编码长度 length=10为例,如前述计算得到,鲁迅故里的纬度编码为10101 01010,经度编码为11010 10110。地理区域字符串生成规则:

•生成新串:奇数位放经度,偶数位放纬度,将两串编码组合:110110 11001 10011 01100;

•分组转换:将11100 11001 10011 01100每5位一组转成1个十进制整数,分别对应为28,25,19,12;

•Base32编码:使用数字0~9、小写字母(去掉字母a,i,1,o)这32个字符进行Base32编码(见下表)。十进制整数28,25,19,12对应的编码组合就是“wtmd”,即为该位置的地理区域字符串。

  1. (1) 规定编码长度 length为5,经度lng为120.125 082 58,则经度lng的二进制编码为
  2. (2) 小沈根据上述描述,设计了一个“利奇马”台风中心途经经纬度转换为地理区域字符串的算法。该算法VB程序实现如下,请在划线处填入合适的代码

    Const m=48, length=20'纬度、经度二进制编码长度均为 length

    Dim a(1 To 2*m)As Double

    Dim b(1 To m) As string

    ′读取m个时刻台风中心的经纬度数据并存入数组a,代码略'a(1),a(2)为台风在时刻1的纬度、经度,a(3),a(4)为台风在时刻2的纬度和经度,......

    ′b(1)保存台风在时刻1的地理区域字符串,b(2)保存台风在时刻2的地理区域字符串,......

    Private Sub Command1_Click()

    ′lat为纬度、1ng为经度,code为地理区域编码

    Dim lat As double, Ing As Double, code As String

    Dim strLat As String, strLng As String, s As String

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

    Const base32="0123456789bcdefghjkmnpqrstuvwxyz"

    For i=1 To m

    lat=a(2*i-1)

    Ing=a(2*i)

    S=""

    strLat= DoubleToBits (lat,—90,90)      ′纬度转换为二进制编码

    strLng=DoubleToBits(lng,—180,180)      ′经度转换为二进制编码

    For j=1 To length

    s=①      ′将两串二进制编码组合

    Next j

    n=0: code=""

    For j=1 To Len(s)

    If j Mod 5=0 Then

    code= code+Mid(base32,n+1,1)

    n=0

    End If

    Next j

    b(i)=code

    Next i

    ′输出地理区域编码,代码略

    End sub

    ′函数 Doubletobits根据指定的区间[ lower,upper],计算 value的二进制编码

    Function Double ToBits( value As Double,lower As Double,upper As Double) As String

    Dim ret As String, i As Integer, middle As Double

    ret="": i=1: middle=0

    Do While i<= length

    middle=(upper+lower)/2

    If ③Then

    lower=middle

    ret=ret+"1"

    Else

    upper=middle

    ret=ret+"0"

    End If

    i=i+1

    Loop

    DoubleToBits=ret

    End function

下列属于正确的VB赋值语句的是(  )。
A . x+y=10 B . 5=a+b C . p=True D . 2a= Text1. Text
某算法的部分流程图如图所示。执行这部分流程,若输入x的值为23,则输出n的值为(    )

  图片_x0020_16

A . 3 B . 4 C . 5 D . 6
某解密程序:对输入的字符串进行解密处理,输出解密后的字符串。已知数据加密方法为对原始字符串中的每个字符进行如下处理:

①将该字符的ASCII码转换为8位二进制数;

②将后4位二进制数逐位取反(1变0,0变1)

③将操作②生成的4位二进制数均右移一-位, 原第4位变成新的第1位;

④将原来的前4位二进制数连接新的后4位二进制数成为最终加密后字符的内码。

例如字符“A”经过上述加密运算,可得到字符“M”。

ASCII码

转二进制数

后4位取反

后4位右移

拼合

转十进制

转字符

65D

0100 0001B

1110

0111

0100 0111B

71D

G

程序运行界面如图所示,在文本框Text1中输入加密字符串。点击“解密”按钮后,在文本框Text2中输出原始字符串。

  1. (1) 若加密后的字符为F,则原字符为
  2. (2) 请在横线处填入合适代码。

    Private Sub Command1_ Click()

      Dim s As String, s1 As String, s2 As String, n As Integer

      Dim x As Integer, i As Integer, j As Integer, C As Integer

      Dim a(15) As String

      a(0) = "000": a(1) = "0001": a(2) = "0010": a(3) =“011": a(4) = "0100":a(5) = "0101": a(6) ="0110": a(7) = "111": a(8) = "1000" a(9) ="1001":a(10) = "1010": a(11) ="1011": a(12) = "1100"a(13) = "1101": a(14)= "1110":a(15) ="1111"

      s2 = "": s = Text1. Text

      For i=1 To Len(s)

        n = Asc(Mid(s, i, 1))

        c=n Mod 16

        s1 = 

        x = Va1(Mid(s1, 1,1))

        For j=2 To  4

          x=x+

        Next j

        x=(n/16)*16

        s2 = s2 + Chr(x)

      Next i

      Text2. Text = s2

    End Sub

  3. (3) 加框处代码出错,请改正。
疫情发生后,小罗收集了某省南北两区共15个城市的累计病例人数和治愈人数,用以分析统计各区治愈率最高的n个城市。规则如下:每个城市包含区域名、城市名、累计病例人数和治愈人数,以“/”分隔,以“;”结尾。如“北区/A市/1467/530;”,表示北区的A市累计病例人数1467人,治愈人数有530人。

小罗编写VB程序实现上述功能:程序运行时,读取所有城市数据保存在变量shuju中并显示在列表框List1中。在文本框Text1中输入“南区”或“北区”,文本框Text2中输入n的值,单击“排名”按钮Command1,对数据进行统计分析,并在列表框List2中显示治愈率最高的n个城市,如有与第n个城市相同治愈率的城市,则同时输出。程序运行界面如图所示,请回答下列问题。

  1. (1) 代码“List2.AddItem”中的 AddItem是(单选,填字母:A . 事件名/ B . 属性名 / C . 方法名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim shuju As String, a(1 To 100) As String

    Dim t As Integer, i As Integer, j As Integer, c As String, p As Integer, temp As String, q as String Dim f As Boolean, n As Integer, k As Integer

    '读取所有城市数据保存在变量shuju中,并显示在列表框List1中,代码略

    t = Len(shuju)

    i = 1: p = 0: j = 1

    Do While i <= t

      c = Mid(shuju, i, 1)

      If c = "/" Or c = ";" Then

        p = p + 1

        a(p) = j = i + 1

      End If

      i = i + 1

     Loop

    q = Text1.Text : n = Val(Text2.Text) : i = 1

    Do While i <= p \ 4 - 1

      k = i

      IfThen f = True Else f = False

      For j = i + 1 To p \ 4

        If a(4 * j - 3) = q Then

          If Val(a(4 * j)) / Val(a(4 * j - 1)) > Val(a(4 * k)) / Val(a(4 * k - 1)) Or Not f    Then k = j

           

          End If

        End If

      Next j

      If k <> i Then

        temp = a(4 * k - 3): a(4 * k - 3) = a(4 * i - 3): a(4 * i - 3) = temp

        temp = a(4 * k - 2): a(4 * k - 2) = a(4 * i - 2): a(4 * i - 2) = temp

        temp = a(4 * k - 1): a(4 * k - 1) = a(4 * i - 1): a(4 * i - 1) = temp temp = a(4 * k): a(4 * k) = a(4 * i): a(4 * i) = temp

      End If

      If  Then

        List2.AddItem a(4*i-3) & "/" & a(4*i-2) & "/" & Format(Val(a(4*i)) / Val(a(4*i-1)), "0.00%") & ";"

        i = i + 1

      Else

        Exit Do

      End If

    Loop

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
在VB中,变量名的命名规则是:变量名必须是开头,长度不能超过个字符。变量名中包含字母、,同一范围内必须是唯一的。