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

【加试题】某VB程序功能:输入正整数n,单击命令按钮Command1后,则会衍生出一串有规律的数字,形式为“1 2 3…n-1 n n-1…3 2 1 ”。例如n=6时,显示的数字串为“1 2 3 4 5 6 5 4 3 2 1 ”。

Private Sub Command1_Click()

  Dim a As intger, i As intger, s As String

  n = Val(Text1.Text)

  s = ""

  For i = 1 To 2 * n - 1

    If i > n Then          ①          Else          ②            

  Next i

  text2.Text = s

End Sub

为实现以上功能,①②处分别填写(  )

A . ①s=Str(2*n-i)     ②s=Str(i)          B . ①s=s+Str(2*n-i)   ②s=s+Str(i) C . ①s=s+Str(2*n-1)   ②s=s+Str(2*n)      D . ①s= Str(2*n-1)    ②s= Str(2*n)
编写一个统计数组元素a(1)到a(n)中的“升序段”个数s(如图所示的数据序列,其升序段个数为3)的VB程序,部分程序如下:

k=0:s=0

for i=2 to n

    If a(i)>a(i-1) then

        _______①_________

    Else

        k=0

    End If

    if _____②______ then s=s+1

next i

text1.text=str(s)

划线处的正确语句是(   )

A . ① k=k+1 ②  k=1 B . ① k=1 ② k>0 C . ① k=k+1 ②  k>0 D . ① k=1 ② k<>0
有如下VB程序段:

For i=1 To 6

    x=Int(Rnd*10)+1

    If i Mod 2 = 1 Then

        a(i)=2*x+1

    Elself x Mod 2 = 0 Then

        a(i)=x/2

    Else

        a(i)=x-1

    End If

Next i

执行该程序段后,a(1)~a(6)各元素可能的值是(  )

A . 3,2,7,4,22,6 B . 5,0,9,4,13,10 C . 9,3,11,5,17,7 D . 3,3,9,0,19,8
柯桥区各所学校技术考试的分数均存放在数据库中,表中学生考号存储形式如"10101","10203"……,考号第1位数字表示学校代码(1代表柯中,2代表鲁高,3代表越崎,4代表鉴湖,5代表钱清,6代表豫才,7代表轻纺城,9代表鲁中),后4位表示校内编号。现设计VB程序查询学校成绩,查询方式为:在Text1中输入学校名称,在Text2中输入数字n,单击“查询”按钮,在列表框List2中显示该校得分最高的n名学生的考号和技术得分。

  1. (1) 实现上述功能的程序代码如下,请在划线处填入正确的语句。

    Const rs = 2500 '考生总人数(即记录总数)

    Dim kh(1 To rs) As String, cj(0 To rs) As Integer

    Dim xx(1 To 9) As String '数组xx存放学校名称,如xx(1)="柯中",xx(2)="鲁高"……数组下标代表该学校代码,即"柯中"代码是1,"鲁高"代码是2……

    '从数据库中读取考号和成绩数据,存入kh和cj数组,并在list1中显示,代码略。

    Private Sub Command1_Click()

      Dim school As String, n As Integer, i As Integer, j As Integer

      Dim t1 As Integer, t2 As String, flag As Boolean

      xx(1) = "柯中": xx(2) = "鲁高": xx(3) = "越崎": xx(4) = "鉴湖"

      xx(5) = "钱清": xx(6) = "豫才": xx(7) = "轻纺城": xx(8) = "鲁中"

    For i = 1 To 8

        If xx(i) = Text1.Text Then        ①        

    Next i

      n = Val(Text2.Text) : i = 1: flag = True

      Do While flag

        k = i

        For j = i + 1 To rs

          t = Val(Mid(kh(j), 1, 1))

          If t = school Then

            If          ②           Then k = j

          End If

        Next j

        If i > n And cj(k) <> cj(i - 1)  Then flag = False

        If k <> i Then

           t1 = cj(i): cj(i) = cj(k): cj(k) = t1

           t2 = kh(i): kh(i) = kh(k): kh(k) = t2

        End If

        i = i + 1

      Loop

      List2.Clear

      For j = 1 To         ③        

        List2.AddItem kh(j) + " " + Str(cj(j))

      Next j

    End Sub

     ② ③ 

  2. (2) 设鲁中有技术考生150人,如果把程序中加框部分代码删除,当运行程序时在文本框Text2中输入200,单击查询按钮后列表框List2中显示有项(单选,填字母: A .恰好150 / B .恰好200/ C .大于等于150且小于等于200 / D .大于等于200)
用蒙特卡洛法求圆周率PI的近似值,其算法如下:使用随机函数Rnd,随机生成两个[0,1)之间的随机数,由此构成一个投点坐标(x,y),然后根据x2+y2≤1判断投点是否在圆内来求PI的近似值。其中总共随机投点n次,统计落点在单位圆(第1象限)内的点数为s,则4s/n即为所求PI的近似值程序界面图所示,在Text1中输入投点的个数,单击“计算”按钮,PI的近似值结果显示在Text2文本框中。

  1. (1) 要使得“计算”按钮的宽度增加,应修改该对象的属性。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1 _Click( )    ‘蒙特卡洛法

    Randomize    ‘随机数初始化

    Dim i As Long, n As Long, s As Long

    Dim x As Double, y As Double, z As Double

    n =Val(Text1. Text)

    i=1

    s=0

    Do While < = n ‘随机投点n次

        x= Rnd : y = Rnd

        z =     ①   

        If z < = 1 Then

           ②    

        End If

        i=1+1

    Loop

    Text2. Text =    ③    

    End Sub

     ② ③ 

某VB程序代码如下:

n = Val(Text1. Text)

sum=n

k=4

Do While n \ k>0

    Sum = sum + n \ k

n=n \ k+n Mod k

Loop

Text2. Text = Str(sum)

在文本框Text1中输入10,执行该程序段后,文本框Text2中显示的值是(  )

A . 12 B . 14 C . 16 D . 13
有两个以字母结尾的字符串s1和s2,在忽略字符串中空格的前提下判断它们是否相同。实现该功能的VB程序段如下:

i=1:j=1

Do While i<=Len(s 1) And j<=Len(s 2)  

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

      i=i+1:j=j+1

   Else

    

   End If

Loop

If i>Len(s1) And j>Len(s 2) Then Text 1.Text=”相同” Else Text1.Text=“不相同”

方框中的代码由以下三部分组成:

①If Mid(s1,i,1) =“” Then i=i+1

②If Mid(s2,j,1) =“” The nj=j+1

③If Mid(s1,i,1) <>“” And Mid(s2,j,1) <>“” Then Exit Do    'Exit Do表示退出循环
代码顺序正确的是(  )

A . ①②③ B . ②①③ C . ②③① D . ③②①
有下列VB程序段:执行该程序段后,数组元素a(1)到a(5)的数据依次为(  )

a(1)=”231”:a(2)=”44”:a(3)=”23”:a(4)=”244”:a(5)=”124”

For i=5 To 4 step-1

  k=i

  For j=i-1 To 1 Step-1

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

  Next j

  If k<>i Then

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

  End If

Next i

A . ”124”,”23”,”231”,”44”, ”244” B . ”124”,”23”,”231”,”244”,”44” C . ”23”,”44”,”231”,”124”,”244” D . ”231”,”124”,”23”,”244”,”44”
依据对分查找思想设计了如下三分查找程序,已知数字a(1 To 10)中的数据分别为“15,25,40,45,55,59,67,78,89,96”,在文本框 Text1中输入“55”,则列表框 List1 中输入位置值“5”,在文本框 Text1 中输入“47”,在列表框 List1 中输入与“47”左右相邻的位置“4  5”,实现该功能的VB程序段如下:

Key=Val(Text1.Text) i=1:j=10   flag=False

Do While i<=j And Not flag Lmid=  ⑴  

Rmid=j-(j-i)\3

If Key=a(Lmid) Or Key=a(Rmid) Then Flag=True

Elseif  ⑵  Then

i=Lmid+1

j=Rmid-1

Elseif Key<a(Lmid) Then

j=Lmid-1

Else

i=Rmid+1

End if

Loop

If Flag And Key=a(Lmid) Then

List1.AddItem Str(Lmid)

ElseIf Flag Then

List1.AddItem Str(Rmid)

Else

List1.AddItem  ⑶  EndIf

上述程序中方框处可选语句为:

①(j-i)\3+i ②(i+j)\3+1 ③Key<a(Lmid) And Key>a(Rmid) ④Key>a(Lmid) And Key<a(Rmid)

⑤str(i)+str(j) ⑥Str(j)+Str(i)

则(1)(2)(3)处的语句依次为(  )

A . ①④⑥ B . ②③⑤ C . ①④⑤ D . ②④⑥
编写了一个寻找最长连续相同子串的程序,功能如下:程序运行时,在文本框Text1中输入一个非降序字符串。单击输出按钮Command1后,在文本框text2上显示最长相同子串。程序运行界面如图所示。

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

    Private Sub Command1_Click()

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

    Dim i As Integer, m As Integer, n As Integer, pos As Integer

    Dim L As Integer, R As Integer, length As Integer, Max As Integer

    s = Text1.Text

    n = Len(s)

    For i = 1 To n

     a(i) = Mid(s, i, 1)

    Next i

    For i = 1 To n

     L = i + 1: R = n

     Do While L <= R

     m = (L + R) \ 2

     If Then

     L = m + 1

     Else

     R = m - 1

     End If

     Loop

     If length > Max Then

     Max = length : pos = i

     End If

     i = i + length - 1

    Next i

    Text2.Text =

    End Sub

  2. (2) 上述程序段中加框处代码有误,请改正。
  3. (3) 若文本框Text1中输入的非降字符串是“00111222”,执行这段程序后,文本框Text2中输出的内容是
有如下 VB 程序段:

Dim s As String, ch As String

Dim i As Integer, t As Integer

s = Text1.Text : t = 0

For i = 1 To Len(s)

 ch = Mid(s, i, 1)

 If ch <> "," Then t = t * 2 + Val(ch)

 Text2.Text = Text2.Text + Str(t)

Next i

执行该程序,当文本框Text1中输入了“11,10”时,文本框text2中输出的是(  )

A . 3 2 B . 1 3 7 14 C . 1 3 3 7 14 D . 1 3 3 7 14 14
分析完善程序。

“完数”是指一个自然数恰好等于它的因子(不包含本身)之和。如6的因子为1,2,3,而6=1+2+3,因此6就是完数。再如28的因子为1,2,4,7,14,而28=1+2+4+7+14,因而28也是完数。

问题:输入一个正整数n,判断该正整数是否为完数。

要判断一个正整数n是否为完数,最简单的方法是:求出1到n-1之间的所有因子和为Sum,如果Sum的值和n的值相同,则n就是完数。

以下代码是判断n是否为完数的程序片段,请你补全代码:

Dim n As Long

Dim Sum As Long           ‘Sum用来记录n的因子和

n = InputBox(“n=”)

For i = 1 To n-1             ‘求n的因子和Sum

If n Mod i = 0 Then Sum =

Next i

If   Then

Print n & “是完数”

Else

Print n & “不是完数”

End If

编写“二进制加法”程序。

程序运行时,在文本框Text1和文本框Text2分别输入两个二进制数,单击按钮 Command11后在文本框Text3上输出两个二进制相加后的结果。

程序运行如图所示。

  1. (1) 观察代码触发代码执行的事件名是
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

      Dim b1 As String, b2 As String, ans As String, t As String

      Dim dist As Integer, jw As Integer

      b1=Text1.Text: b2 Text2.Text: ans=""

      

      If dist <0 Then

        t=b1: b1=b2: b2=t: dist=-dist

      End If

      For i=1 To dist

        b2="0"+b2

      Next i

      jw=0

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

        x= Val(Mid(b1, i, 1))+ Val(Mid(b2, i, 1))+jw

       

        ans Str(x Mod 2)+ans

      Next i

      IfThen ans ="1"+ ans

    Text3.Text=ans

    End Sub

在JavaScript脚本中,注释多行的语句是(    )
A . //注释的内容 B . /*注释的内容*/ C . /%注释的内容%/ D . <!---注释的内容--->
有一个报数游戏, n个人排成一圈,游戏开始时规定一个报数号m,然后从其中一个人开始按顺时针报数1,2,3,…,n,当某人报到的数为m的倍数时,即被淘汰,其他人继续游戏,直到最后。现用VB设计了一个程序,程序界面如下图所示。在文本框Text1中输入参加游戏的人数n,在文本框Text2中输入报数号m,单击“报数”按钮,即在列表框List1中显示每次被淘汰的人的顺序号。

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

Private Sub Command1_Click()

Dim n As Integer, m As Integer

Dim a(1 To 50)  As Integer

n = Val(Text1.Text)

m = Val(Text2.Text)

For i = 1 To n

Next i

s = 0;j = 0

Do While s < n

t = 0

Do While t < m

                      

    t = t + a(j)

Loop

a(j) = 0

s = s + 1

List1.AddItem “第” + Str(s) + “次:” + Str(j)

 Loop

End Sub

  1. (1) “报数”按钮的对象名称是
  2. (2) 程序代码中,加框处有错,请改正。
  3. (3) 程序代码中,横线处语句补充完整。
  4. (4) 程序运行结束后,变量t的值是
小明想用数据移位思想将一段长度为n的序列a(n), 以t位置为分界,把前t-1个数和后n-t+1个数调换前后顺序,但保持每段中数据的相对位置不变。例如一段长度为6的序列1、2、3、4、5、6。t=4时,数组a中元素顺序变成4、5、6、1、2、3。实现上述功能的代码如下,下列①、②处填写正确的是(  )

t = Val(Text1. Text): m= 2

For i=t-1 To 1 Step-1

  k = a(i)

  For j=i To n- 1

      ① 

  Next j

    ② 

  n=n-1

Next i

A . ①a(j+1)=a(j)  ②a(j+1)=k B . ①a(j)=a(j+1)  ②a(j+1)=k C . ①a(j+1)=a(j)  ②a(j)=k D . ①a(j)=a(j+1)  ②a(j)=k
在VB程序中,不能作为变量名使用的是(    )。
A . Abc B . abc123 C . abc_123 D . 123abc
下列可作为VB变量名的是(    )
A . 4*D B . A_B C . 4ABC D . Dim
现有两个整型变量a,b,以下哪个选项无法实现a,b两个变量的值的交换(   )
A . a,b=b,a

a=b-a   

b=b-a   

B . b=a+b

a=b

b=c

C . c=a

a=a/b

b=a/b

D . b=a*b
四个选项中Python语句没有错误的是(    )
A . n=int(input(“n=5”) B . PRINT(‘a=’,35) C . a,b=b,a D . a=3/{[45-2]*11}