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

有如下VB程序段

a=12

b=54

a=b

b=a

该程序段运行后,a,b的值分别为,该程序结构属于结构(选填:顺序、选择、循环)。

【加试题】有如下程序段:

  Function delStr(S As String,m As Integer)As String

    Dim n As Integer:n=Len(S)

    If m<1 Or m>n Then delStr=“输入位置有误!”

    If m=1 Then delStr=Mid(s,2,n-1)

    If m<n Then delStr=Mid(s,1,m-1)+Mid(s,m+1,n-m)

    If m=n Then delStr=Mid(s,1,n-1)

  End Function

  Private Sub Command1_Click()

    Dim S As String:Dim i As Integer

    S=Text1.Text

    For i=1 To 10 Step 2

      S=delStr(S,i)

    Next i

  Text2.Text=S

  End Sub

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

A . apybrtda B . apbrhday C . Happybirhday D . day
已知a=5、b=6,则执行如下语句后

a = a + b

b = a + b

a和b的值分别为(   )

A . 11、17 B . 11、11 C . 17、11 D . 5、6
某编码由4个信息位和3个校验位组成,通过对编码信息进行验算,能够检测并纠正一位错误代码。该7位编码中b1~b4为信息位,p1~p3为校验位,位置如下:

编码中位

1

2

3

4

5

6

7

对位信息

p1

p2

b1

p3

b2

b3

b4

校验的方式如下,求校验值g1、g2、g3:

g1 = p1 Xor b1 Xor b2 Xor b4

g2 = p2 Xor b1 Xor b3 Xor b4

g3 = p3 Xor b2 Xor b3 Xor b4

其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,

p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。

⑴若计算得到的校验值g1、g2、g3均为0,说明校验正确,数据无错误。例如:若7位编码为1101001,计算校验值g1、g2、g3值均为0,验证正确。

⑵若校验值g1、g2、g3不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3位,原位置上“1”应为“0”,正确编码为1101001。

小明为此编写了VB程序,程序运行时,在文本框Text1中输入编码值,单击“校验”

按钮Command1后,在文本框Text2中输出运行结果,如图所示。

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

  1. (1) 若按上述规则的7位编码为1001000,其中一位有错,则正确的编码应为
  2. (2) 请在划线处填入合适的代码。

    Function check(s As String) As Integer

    Dim i As Integer g1 As Integer, g2 As Integer, g3 As Integer

    Dim c(1 To 7) As Integer

    For i = 1 To 7

    c(i) = Val(Mid(s, i, 1))

    Next i

    g1 = c(1) Xor c(3) Xor c(5) Xor c(7)

    g2 = c(2) Xor c(3) Xor c(6) Xor c(7)

    g3 = c(4) Xor c(5) Xor c(6) Xor c(7)

    If g1 + g2 + g3 = 0 Then check = 0 Else check =

    End Function

    Private Sub Command1_Click()

    Dim i As Integer, m As Integer, Outs As String

    m =

    If m = 0 Then

    Text2.Text = "验证正确,数据无错误"

    Else

    For i = 1 To 7

    If i = m Then

    Outs = Outs + Chr( Asc(Mid(Text1.Text, i, 1)) Xor )

    Else

    Outs = Outs + Mid(Text1.Text, i, 1)

    End If

    Next i

    Text2.Text = "第" + Str(m) + "位上数据有错误,正确编码应为:" + Outs

    End If

    End Sub

有如下VB程序:

Private Sub Command1_Click()

 Dim a(1 To 5) As Integer

 a(5)=Val(Text1.text)

 For i=4 To 1 Step -1

   a(i)=a(i+1)\2

 Next i

 Label1.caption=str(a(1))

End sub

在文本框Text1中输入“100”,单击命令按钮Command1后,标签Label1中显示的内容是(  )

A . 25 B . 6 C . 12 D . 50
下列语句使用正确的是(  )
A . DIM A(6 TO 2) AS SINGLE B . LIST2.REMOVEITEM  “北京” C . LIST2.CLS D . LIST2.LISTINDEX=0
有如下VB程序段:

Dim a(1 To 100) As Integer

Dim b(1 To 100) As Integer

Dim c As Integer

a(1) = 0: a(2) = 2: b(1) = 1: b(2) = 2: c = 0

For i = 2 To 6

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

  b(i + 1) = b(i) ^ 2 / b(i - 1)

c = c + a(i + 1) + b(i + 1)

Next i

Label1.Caption = Str(c)

该程序运行后,Label1中显示的内容是(  )

A . 46 B . 88 C . 164 D . 76
小明为了将十进制数转化为k进制数(k值范围在2到16之间)设计如下程序:在文本框Text1中输入一个十进制数,在文本框Text2中输入整数k,单击“运行”按钮 Command1,程序将十进制数转化为k进制数,并在标签Label1中输出结果。请回答下列问题:

  1. (1) 程序窗体中“运行”所用的控件是 (A . /B . /C . /D .
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

     Private Sub Command1 _Click( )

     Dim As Integer, k As Integer, r As Integer

     Dim s As String, c As String

        d =Val(Text1. Text)

        k =Val(Text2.Text)

        s = “”

        Do While d > 0

            r=d Mod k

            If r > = 10 Then

                c = mid (“ABCDEF”,   ①   ,1)

            Else

                c= str(r)

            End If

            s=   ②    

            d =d \k

        Loop

    Label1. Caption= “结果为: “+s

    End Sub

     ② 

  3. (3) 运行该程序,在文本框Text1中输入“28”,文本框Text2中输入“16”,单击“运行”按钮,则 Label1显示的内容是
小明编写了一个寻找最长连续相同子串的程序,功能如下:程序运行时,在文本框Text1中输入一个字符串。单击“最长子串”按钮后,在标签上显示最长连续相同子串的字符个数。实现上述功能的VB程序代码如下,程序运行界面如图所示。请回答以下问题:

  1. (1) 根据代码可知,本程序共有个对象。
  2. (2) 请在划线处填入合适的代码。

    Private Sub Cmd1_Click( )

    Dim i As Integer, n As Integer

    Dim max As Integer, count As Integer

    Dim s As string

    s= Text1. Text

    n= Len(s)

    count = 1 : max =1

    For i= 2 To n

        If   ①   Then

        count= count+ 1

        Else

            If count > max Then

                max count

            End If

            count =     ②   

        End If

    Next i

    Label1. Caption= "最长连续子串字符数为:"+str (max)

    End Sub

     ② 

  3. (3) 若删除加框处的代码,输入保持不变,则程序结果是(填写数字)。
某老师用VB设计了一个学生7选3的选课查询系统,学生选课信息存储在数据库文件“student. accdb”的“data”表中,数据表及选课查询系统程序运行界面如图所示。

程序功能:在文本框Text1中输入课程名称,单击“查询”按钮Command1,在列表框List1中显示选择该科目的学生信息。如果没找到在列表框List1中显示“该科目没人选择!”。按此要求将程序补充完整。

Private Sub Command1_Click ( )

Dim conn As New ADODB Connection

Dim rs As New ADODB. Recordset

Dim h(1 To 40) As String, m(1 To 40) As String

Dim n As Integer

conn Connectionstring = "provider = microsoft. ACE OLEdB. 12.0; data source ="+ App. Path + “\       ①       “

conn. Open

Set rs, ActiveConnection conn

strsql ="select xh, xm from       ②        where km = ‘ “ & Text1. Text &“ ‘ “

rs Open strsql

List1. Additem "学号" + "姓名”

Do While Not rs EOF

  n = n+1

  h(n)= rs Fields ("xh")

  m(n) =      ③       

       ④     

Loop

If n=0 Then

  List1. AddItem “该科目没人选择!”

Else

  For i =1 To n

    List1.AddItem h(i) &” ” & m (i)

  Next i

End If

rs Close

conn. Close

Set rs = Nothing

Set conn = Nothing

End Sub

 ② ③ ④ 

数组a中存储的是一组正整数,特征是:以三个数为一组,每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依次递减;③数组中数的总个数为3的倍数。依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。

Private Sub Command 1_Click()

  Const n = 15

  Dim a(1 To n)As Integer,search As Integer,key As Integer

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

  '读取一组正整数,按上述规则存入数组a中,代码略

  key = Val(Text1.Text)

  i = 1:j = n:search = 0

  Do While i <= j

    m =(i+j)\2

    If m Mod3<>0 Then m=      ‘⑴把m调整到三个数一组的最后一个数的位置

    If key = a m)Then

      search = m:Exit Do

    Elself key <a(m)Then

      j = m - 3

    Elself  Then    ‘⑵

      i= m + 1

    ElseIf key = a(m-2)Then

      search = m-2 :Exit Do

    ElseIf key = a(m- 1)Then

      search = m-1:Exit Do

    Else

      search = 0:Exit Do

    End If

  Loop

  If search <>0 Then

    Text2.Text = Str(search)

  Else

    Text2.Text ="找不到"

  End If

End Sub

 ⑵ 

某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:

①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;

②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。

最后把所得到的字符连接起来就是密文。

例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。

该加密过程使用VB来实现。具体功能设计如下:在Text 1中输入明文,Text 2中输入密钥,单击“开始加密”按钮Command 1后将密文显示在Text 3中,界面设计如图所示。

请回答以下问题:

  1. (1) 如果密钥为“bc”,字符“d”加密后的密文为:(字母“a”的ASCII码为97)
  2. (2) 请完善以下程序代码。

    Private SubCommand1_Click( )

      Dim s As String, sn As String

      Dim i As Integer, t As Integer, u As Integer

      Dim p As Integer, g As Integer

      sn=“”

      For i=1To Len(Text 1.Text)

          t=Asc(Mid(Text1.Text, i, 1) )

          If t>=Asc(“a”) Then

            g=Asc(“a”)

         Else

            g=Asc(“A”)

         End If

          u=Asc(Mid(Text 2.Text,(i-1) Mod Len(Text 2.Tex kwt)+1,1))

         p=  ① 

         t=t-g

        If i Mod 2= 1 Then

          t=(t+p) Mod 26

        Else

          t=  ② 

        End If

        sn=sn+Chr(t+g)

      Next i

      Text 3.Text=sn

    End Sub

    Function txor(xk wAs Integer, y As Integer) As Integer     'x、y求异或并返回十进制

      Dim a As Integer, b As Integer, r As Integer, i As Integer

      a=x:b=y

      r=1

      For i= 1 To 7

         If a Mod 2<>bMod 2 Then   ③ 

         a=a\2

         b=b\2

         r=r*2

      Next i

    End Function

     ② ③ 

输入123,以下流程图描述的算法,执行结果是

某次考试的流程为先笔试再面试,笔试成绩达到面试资格线的可以入围参加面试。入围面试的资格线根据计划录取人数的200%划定,即如果考试最终录取x人,则第2*x名选手的笔试分数为面试资格分数线(该分若有同分者可一同参加面试)。现在编写VB程序功能如下:自动读取数据库中考生考号和笔试成绩,依次存储在数组kh(i)、cj (i)中,并显示在Listl列表框中。

用户从Text1中输入计划人数,单击“入围划线”按钮Command1,面试分数线显示在文本框Text2 中,入围面试最终人数显示在 Text3中,进入面试考生的考号和笔试成绩显示在List2列表框中,如果成绩相同,则按考号从小到大的顺序显示。程序界面如图所示。

Dim kh(1 To 500) As String, cj(1 To 500) As Integer

Dim n As Integer ′参加考试总人数

Private Sub Form_Load()

Dim conn As New ADODB.Conncction

Dim rs As New ADODB.Recordset

conn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;datasource=”+App.Path + ”\BSCJ.accdb”

conn.Open

Set rs.ActiveConnection = conn

rs.Open “select * FROM scoreinfo”

′本过程其他代码略

End Sub

Private Sub Commandl_click()

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

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

For i = 1 To n - 1

  For j = 1 To

    If cj(i) < cj(j) Then

      t1 = cj(i): cj(i) = cj(j): cj(j) = t1

      t2 = kh(i): kh(i) = kh(j): kh(j) = t2

    EleIf      ①      Then

      t2 = kh(i): kh(i) = kh(j): kh(j) = t2

    End If

  Next j

Next i

m =     ②     

If m <= n Then

  i = m

  flag = Flase

  Do While i < n And Not flag
    If cj(i) = cj(i + 1) Then

      i = i + 1

 Else

             ③     

 End If
  Loop

  Text2.Text = Str(cj(m))

  Text3.Text = Str(i)

  For j = 1 To i

    List2.Addltem kh(j) + “ ” + Str(cj(j))

  Next j

Else

  Text2.Text = “面试人数超过了总人数”

End If

End Sub

  1. (1) 由代码可知,读取的数据库文件名为
  2. (2) 下面加框处代码有错误,请改正。
  3. (3) 请在划线处填入适当的代码。

     ② ③ 

某VB程序部分程序段如下:

For i = 1 To n - 1

For j=____________

If a(j) < a(j - 1) Then

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

End If

Next j

Next i

为了使此程序段能实现数组a中的数据升序排列,则划线处应填入的代码是(  )

A . 1 to n-i B . 2 to n-i+1 C . n to i+1 D . i+1 to n
某算法的部分流程图如图所示,输入s=11200,执行这部分流程后,输出m和n的值分别是(   )

A .   14 4 B .   21 4 C .   22 5 D .   42 5
在Python中,关于变量的说法,正确的是(     )
A . 变量必须以字母开头命名 B . 变量只能用来存储数字,不能存储汉字 C . 在python中变量类型一旦定义就不能再改变 D . 变量被第二次赋值后,新值会取代旧的值
a = 3:b = 4

a = a + b:b = b + a

Print b

该程序段运行后变量b的值是

能代表语句的符号是(     )。
A . > B . NOT C . = D . \
a=5:b=3

a=a+b:b=b+a

print a,b

这段程序的执行结果是(      )

A . 15   21 B . 5  8 C . 6   9 D . 8   11