4.1.1 Python的常量和变量 知识点题库

结束当前程序的语句是(   )
A . Quit B . Exit C . End D . Sub
【加试题】小李编写一个统计学生选考科目的VB程序,算法的基本思想是:检查每位学生选课组合的编码是否有效,对有效选择结果进行科目统计,根据各科次占有效人数的百分率求出各科排名。程序运行时,单击“显示”按钮Commmad1,学生选课数据显示在列表框list1中,各科编号及对应科目名称显示列表框list2中,单击“统计”按钮Commmad2,选课结果按各科百分率由高到低显示在列表框list3中,程序运行结果如图所示。

_x0000_i1043

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

  1. (1) 学生选课的编码数据存储在数据表中,其字段名为
  2. (2) 请在划线处填入合适的代码。

    Dim ach(1 To 500) As String     '存储各学生选课编码

    Dim bno(1 To 10) As Integer     '存储各科目编号

    Dim bname(1 To 10) As String    '存储各科目名称

    Dim bnum(1 To 10) As Integer    '存储各科目被选次数

    Dim bmc(1 To 10) As Integer     '存储各科目被选的名次

    Dim n As Integer, num As Integer

    Private Sub Command1_Click()

    Dim i As Integer, km As String

    km = "物理化学生物政治历史地理技术"

    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String

    cn.Open "provider=Microsoft.Jet.oledb.4.0;Data Source=" + App.Path + "\students.mdb"

    rs.Open "select * from choose", cn

    Do While Not rs.EOF

    n = n + 1 : ach(n) = rs.Fields("subject") : rs.MoveNext

    Loop

    rs.Close

    cn.Close

    Set rs = Nothing

    Set cn = Nothing

    For i = 1 To 7

    bno(i) = i

    bname(i) = Mid(km, (i - 1) * 2 + 1, 2)

       List2.AddItem Str(bno(i)) + "---" + bname(i)

    Next i

    End Sub

    Private Sub Command2_Click()

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

    Dim c As String, per As Integer

    For i = 1 To n

    If check(ach(i)) = True Then

    For j = 1 To 3

    c = Mid(ach(i), j, 1)

    bnum(Val(c)) =      

      Next j

    num = num + 1

    End If

    Next i

    i = 1

    Do While i <= 7'该循环得到各学科被选人数的名次

    bmc(i) = 1

    For j = 1 To 7

    If bnum(j) >bnum(i) Then      

    Next j

    i = i + 1

    Loop

    For i = 1 To 7

    For j = 1 To 7

    If        Then

    per = Int(bnum(j) * 100 / num * 100) / 100

    List3.AddItem Str(bno(j)) + "---" + bname(j) + "---" + Str(per) + "%"

    End If

    Next j

    Next i

    End Sub

    Function check(s As String) As Boolean

       '代码略! 若学生选科代码有效,函数返回True,否则返回False

    End Function

在VB中,与语句b = n \ 10 Mod 10 功能相同的是(   )
A . b = ( n mod 100 ) \ 10 B . b = ( n mod 10 ) \ 100 C . b = n mod 10 \ 10 D . b = n \ 100 Mod 10
小虞编写了一个求数列、……前10项和的程序,VB程序段如下:

s = 1/2 + 2/3 : t = 1: b = 2

For i= 3 To 10

 

Next i

Label1.Caption = "前10项的和是:" + Str(s)

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

①b = r   ②t = b   ③r = t + b    ④s = s + r/(r + b)

代码顺序正确的选项是(  )

A . ④③①② B . ④③②① C . ③④①② D . ③④②①
执行下列程序后,变量X的值是(  )

PRIVATE SUB FORM__CLICK( )

   S=0

  FOR A = 1 TO 5

    FOR B= 1 TO 3

    S=S+1

    NEXT B

  NEXT A

PRINT S

END SUB

A . 70 B . 8 C . 25 D . 15
下列程序段执行后,变量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)的最大值在数组中的下标值
编写VB程序,实现如下功能:程序运行时,单击命令按钮 Command1产生100个随机字符串(每个字符串的长度不超过10),并显示在列表框List1中单击命令按钮Command2对产生的100个随机字符串按权值进行降序排序,将排序结果显示在列表框List2中。每个字符串的权值定义为该字符串中ASCⅡ码值最大的学母的ASCⅡ码值,例如字符串“Hello”中ASC码值最大的字母是“o”(ASCⅡ码值为111),则字符串“Hello”的权值为111。程序运行效果如图所示。

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

Dim a (1 To 100) As String   ‘ 依次存放100个随机字符串

Dim b (1 To 100) As Integer   ‘ 依次存放每个字符串的权值

Private sub command1_Click( )   ‘ 产生100个随机字符串

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

For i=1 To 100

  k=Int (Rnd*7+3)   ‘k表示第i个字符串的长度

  For j = 1 To k   ‘通过循环产生第i个字符串并存储在a(i)中

    If Int(Rnd*2+1) = 1 Then   ‘ 产生一个小写字母的 ASCⅡ码值

      x = Asc("a")+ Int (Rnd*26)

    Else

      x = Asc("A") + Int(Rnd*26) ‘ 产生一个大写字母的ASCⅡ码值

          ①        

    a(i) = a(i)+Chr (x)

  Next j

  List1 AddItem a(i)

Next i

End Sub

Private sub command2_Click( )’ 对100个字符串按字符串权值降序排序

Dim i As Integer, j As Integer, y As Integer, s As string

For i =1 To 99

  k =1

  For = i + 1 To 100

          ③      

  Next j

  If k <> Then

    s = a(k) : a(k) = a(1) : a(1) = s

    y = b(k) : b(k) = b(1):b(i) = y

  End If

Next i

For i=1 To 100

  List2 AddItem a(i)

Next i

End sub

 ② ③ 

有如下VB程序段:

i=1:j=10

Key=Val(Text 1.Text)

If Key Mod 2=1 Then t=1 Else t=-1

Do While i<=j

    m=(i+j)\2

    c=c+1

If t= 1 And a(m) Mod 2= 0 Then

    j=m-1

ElseIf t=- 1 And a(m) Mod 2= 1 Then

    i=m+1

ElseIf Key*t<a(m) *t Then

    j=m-1

Else

    i=m+1

End If

Loop

若数组a(1)到a(10)的值依次为1,3,5,7,9,18,18,16,4,0,若Text 1中输入2,执行该程序段后,下列说法正确的是(  )

A . c=4 B . m的值依次为5,8,9 C . i=2 D . m的值依次为5,2,1
一个十进制整数的二进制表示中,如果数字“1”的个数多于数字“0”的个数,则称该整数为A类数。如十进制整数26的二进制表示为11010,26是一个A类数。下列VB程序的功能是:寻找前1000个自然数中所有A类数,在List1中输出,并统计个数,在Text1中输出。

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

Private Sub Command1_Click()

  Dim i,n,s,t,k As Integer  's为A类数的个数,t为二进制数中“1”的个数,k为“0”的

  个数

  s = 0

  For i = 1To 1000

    n = i:t = 0:k= 0

    Do While n > 0

        If    ①    Then t=t+1Else k=k+1

            ②   

    Loop

    If t>k Then

      List1.Addltem Str(i)

      s = s+1

    End If

  Next i

  Text1.Text=Str(s)

End Sub

奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。

  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

     Dim a As Integer, s As String

     Dim n As Integer, t As Integer, v As Integer

     n = Val(Text1.Text)

     t = 0

     s = ""

     Do While n > 0

    a = n Mod 2

    n = n \ 2

    t=①

    s = "Str(a)" + s

     Loop

     v = t Mod 2

     Text2.Text = s

     Label3.Caption = "校验位值:" +②

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是
酒店房间管理问题:某酒店房间(房间数小于1000)编号按1、2、3……连续编号,客房经理对没有入住的房间使用如下方法来登记管理。连续的空房间,登记第一个房间的编号和连续的空房间数,比如空房间1,2,6,7,8,10,则登记3条记录,分别为1_2,6_3,10_1。某旅客如果退房,需要把这个房间号也登记进去,共有4中情况需要处理:

⑴上靠:若退的房间号为3,则原来登记的记录变为1_3,6_3,10_1;

⑵下靠:若退的房间号为5,则原来登记的记录变为1_2,5_4,10_1;

⑶上下靠:若退的房间号为9,则原来登记的记录变为1_2,6_5;

⑷上下都不靠:若退的房间号为4,则原来登记的记录变为1_2,4_1,6_3,10_1

根据上述规则,小明编写了相应的VB程序,程序启动时读入空房间数据,并在列表框List1中显示,在文本框Text1中输入退房号,单击“退房”按钮后更新列表框List1中的数据。

程序界面如下图所示,请回答下列问题:

  1. (1) 当前登记的记录有3条,分别为2_3,6_2,9_4。某旅客退掉8号房间,则登记的记录将变为
  2. (2) 实现上述功能的VB程序如下,请将划线处的代码补充完整。

    Const n=1000

    Dim a(0 To n)As Integer     ‘a(i)保存第i条记录的开始房间号

    Dim b(0 To n)As Integer     ‘b(i)保存第i条记录的房间数

    Dim c As Integer, k As Integer, sp As Integer      ‘k为原始记录数

    Private Sub Form_Load()

    ‘程序启动时从数据库中读取原始k条记录,依次存入a(1),b(1),a(2),b(2),…,a(k),b(k),代码略

    ‘为了程序处理方便,虚设下面两条记录

    A(0)=0: b(0)=0: sp=k+1: a(sp )=1000: b(sp)=0

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    c=Val(Text1.Text)

    i=1

    Do While a(i)<c

    i=i+1

    Loop

    i=i-1

    ‘以下处理退房登记问题

    If a(i)+b(i)=c Then

    If a(i+1)=c+1Then    ‘处理第3种情况

        ①   

    For j=i+1 To sp-1

    a(j)=a(j+1):b(j)=b(j+1)

    Next j

    sp = sp-1

    Else     ‘处理第1种情况

    b(i)=b(i)+1

    End If

    ElseIf c+1=a(i+1)Then      ‘处理第2种情况

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

    Else     ‘处理第4种情况

    For j=    ②   

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

    Next j

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

    End If

    List1.Clear

    For i=1 To sp-1

    List1.Addltem"第" & CStr(i)  & "条记录" & CStr(a(i)) & "_" & CStr(b(i))

    ‘CStr函数的作用是将数字转成字符串

    Next i

    End Sub

     ② ③ 

在某打游戏中,一开始每个玩家各有17张牌,牌型从小到大分别为“3~10、J、Q、K、A、2”,每种牌最多4张,现在按指定规则的顺序打牌:打完为止,规则如下:

先打顺子牌(顺子指连续的5个及以牌型,如45678,顺子最大到A),若有多个顺子,先长后短长度和同按先小后大的顺序打出然后按4张、3张、2张、1张的顺序出牌,同一个牌型从小到大。

小刘依据上述算法设计了VB程序,其中牌型“10”用数字“0”代替表示,如图所示,请回答下列问题。

  1. (1) 若初始牌型为344445566790JQKA2,第2次出的牌为
  2. (2) 请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    Dim a (1 To 13) As Integer, max As Integer, t As Integer, last As Integer

    Dim sa As String, stem As String, flag As Boolean

    Const s="34567890JQKA2"       '用0代替牌10

    '发牌和洗牌代码略,在标签Label1显示初始牌型,洗牌后数组a各元素分别存储牌型3~2的数量

    t=17      '刚开始牌有17张

    Do While t>0      '打牌

    flag=True

    Do While flag   '寻找牌中有没有顺子牌

    max =0: k =1: flag=False

    For i=1 To 13

    If   ①   Then

    k=k+1

    If k > Max Then

     Max = k

    Last = i+1     '记录连续牌的最后一张

    End If

    Else

    k=1

    End If

    Next i

    If Max >= 5 Then '有顺子牌,把最长的这把顺子打出来

    flag=True: sa= ""

    For j =    ②    To last

    Stem=Mid(s, j, 1)

    sa=sa +stem+ ""

    a(j)=a(j)-1

    Next j

    List1.AddItem sa     '顺子在列表框显示

    t=t-max

    End If

    Loop

    For i= 1 To 13     '出4个一样的牌

    If a(i)=4 Then

    stem=Mid(s, j, 1)

    List1.AddItem stem+stem+stem+stem

    a(i)=0

       ③  

    End If

    Next i

    '3张、2张、单张出牌,具体代码略

    Loop

    End Sub

     ② ③ 

下列四个选项中,能正确地将x和y两个变量中的数据进行交换的是(    )。
A . B . C . D .
数组 a 规模为(m+1)×n,其中 a(1) ~a(m ∗ n)元素中存储数据,数据中m×n个元素按行序排列成一个数字矩阵如图所示。计算每列数据的和,并依次存储在m+1行对应的数组元素中。

依据该算法思想,设计一个VB程序,实现该功能的代码如下,请回答下列问题。

  1. (1) 根据代码可知,该程序的按钮对象名是
  2. (2) 在程序划线处填上合适代码。

    Const m = 6

    Const n = 5

    Dim a(1 To (m + 1) ∗ n) As Integer

    Private Sub Form_Load()

    '数组初始化,生成 m×n 个两位数的随机整数并赋值给数组a

     Randomize

    For i = 1 To m ∗ n

     a(i)=    ①    

    Next i

    End Sub

    Private Sub Cod1_Click()

    Dim i As Integer, j As Integer

    For i = 1 To n

        ②    

    Next i

    '将计算后数据,按 m + 1 行,n 列输出到列表框中,代码略

    End Sub

    Function sum(y As Integer) As Integer         '函数功能是计算每列数据和

    sum = 0

    For i =     ③     

     sum = sum + a(i)

    Next i

    End Function

     ② ③

有如下VB程序段:

i=6

Do While i>= 1

  t= Int(Rnd * 10)+ 1

  If t Mod 2=i Mod 2 Then a(i)=t: i=i-1

Loop

For i=1 To 2

  k=-1

  For j=1 To 5-i

    If a(j) * k>a(j+2) *k Then

      temp= a(i): a(j)=a(j+2): a(j+2)= temp

    End If

    k=-k

  Next j

Next i

执行该程序段后,数组元素a(1)到a(6)值可能是(    )

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

Dim a(1 To 6)As integer

a(1)=1

For i=2 To 6

   Randomize

   a(i)=a(i-1)+Int(Rnd*5+1)

If a(i) Mod 2=1 Then

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

Else

a(i)=a(i)/2

End If

Next i

执行程序后,数组各元素不可能是(    )

A . 1 2 3 4 3 4 B . 1 1 3 4 4 3 C . 1 3 3 3 3 2 D . 1 4 2 4 4 5
以下程序执行后变量y的值为 (     )

t = "abcd123456"

x = Sqr(Len(t))

y = 0

If x >0 Then

  y = 2

ElseIf x >1 Then

  y = 3

ElseIf x >2 Then

  y = 4

Else

  y = 5

End If

A . 2 B .   3 C .   4 D .   5
维吉尼亚(Vigenere)密码。如下图所示,分别用行和列表示待加密的字符(明文)和当前字符的密钥,行和列的交叉点的字符即为加密后的结果(密文)。在加密时,密文与明文的字母大小写形式保持一致,如,明文字母为大写,则加密后的密文字母也为大写;当密钥长度不足时重复使用密钥。例如:当明文M=HelloWorld,密钥K=abc时,密文C=HfnlpYosnd。运算过程如下所示:

明文:HelloWorld

密钥:abcabcabca

密文:HfnlpYosnd

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

B

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

C

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

D

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

E

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

F

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

G

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

H

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

I

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

J

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

K

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

L

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

M

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

N

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

O

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

P

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

Q

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

R

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

S

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

T

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

U

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

V

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

W

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

X

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

Y

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Z

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

依据上述算法描述设计了如下VB程序。请回答下列问题:

  1. (1) 若明文是Jia,密钥是Pass,则输出的密文是:
  2. (2) 请在横线处填上合适的代码。

    Const MIN_ASC = 65       ′字母“A”的ASCII值

    Function X2D(x As String) As String     ′字符串小写转成大写

    Dim s As String, zf As String, i As Integer

    s = “”

    For i = 1 To Len(x)

    zf = Mid(x, i, 1)

    If zf >= “a” And zf <= “z” Then

                s = s +

    Else

          s = s + zf
              End If
        Next i
        X2D = s

    End Function

    Private Sub Command1_Click()

    Dim M As String, K As String, C As String, flag As Boolean

    Dim i As Integer, t As Integer, ch As Integer, pos As Integer, j As Integer

    M = Text1.Text             ′明文

    K = Text2.Text              ′密钥

    t = Len(K)

    K = X2D(K)                   ′将密钥全部转成大写

    C = “ ”                      ′加密后的结果

    For i = 1 To Len(M)

    ch = Asc(Mid(M, i, 1))

    flag = False

    If ch >= 97 And ch <= 122 Then ch = ch - 32: flag = True

      pos =                ′密钥的字符位置值

    If pos = 0 Then pos = t

          j = Asc(Mid(K, pos, 1))               ′密钥字符的ASCII值

         ch = ch - MIN_ASC

         j = j - MIN_ASC

          ch =

          ch = ch + MIN_ASC

      If flag Then ch = ch + 32         ′设置字母的大小写形式

         C = C & Chr(ch)

    Next i

    Text3.Text = C

    End Sub

对某数组a中的n个元素随机赋0、1或2这三种值之一,现按如下算法对数组a从小到大升序排序,设置两个变量:Left记录第一个1的位置,其左侧全是0,Right记录第一个2的前一位置,其右侧全是2。使用i从头到尾查询一遍,根据a(i)的值决定其是否与a(Left)或a(Right)交换,直至i与Right相遇。

left = 1: right = n: i = 1

Do While i <= right

  If a(i) = 0 Then

    tmp = a(left): a(left) = a(i): a(i) = tmp

    left = left + 1

    i = i + 1

  ElseIf a(i) = 1 Then

    i = i + 1

  Else

              

  End If

Loop

要实现上述排序算法思想,则横线处代码应该是(  )

A . tmp=a(i):a(i)=a(right):a(right)=tmp: right =right -1 B . tmp=a(i):a(i)=a(right):a(right)=tmp: right =right-1:i=i+1 C . i=i-1 D . right=right-1:i=i-1
Python 语言中,以下变量名在程序运行过程中不会报错的是(    )
A . 1b B . for C . a_1 D . @1
最近更新