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

编写VB程序,实现如下功能:在文本框text1中输入自然数n,单击“产生n个随机数,并求和与最大数计算”按钮Command1,则在列表框List1中输出n个小于100的随机整数,并输出n个随机数的和与最大值,界面如图所示。

  1. (1) 观察运行界面,选项中没有用到的控件是      
    A . B . C . D .
  2. (2) 设计该窗体界面时,需要将窗体form1的属性设置为“最大随机数”。
  3. (3) 请完善下列程序代码:

    Private Sub Command1_Click()

    Dim a(1 To 10) As Integer

    Dim s As Integer

    Dim max As Integer

    n = Val(Text1.Text)

    i = 1

    Do While i <= n

       a(i) = Int(Rnd * 100)

       List1.AddItem Str(a(i))

       s = s + a(i)

            ①     

    Loop

    max = a(1)

    For i = 2 To n

       If a(i) > max Then          ②  

    Next i

    List1.AddItem "和为:" +        ③     

    List1.AddItem "最大值为:" + Str(max)

    End Sub

    供①②选填:A.n=n+1      B. i=i+1       C.max=a(i)     D.a(i)=max

    ①应选;②应选

    空格③处应填写的代码为:

【加试题】要求将某一字符串中指定的字符改写成小写或大写(如果原先是大写就改成小写,反之改成大写),并将处理后的字符重新输出。

程序界面如下图所示,在Text1中输入原始字符串,在Text2中输入需要改变的字符,单机“改变”按钮后,在Text3中输出处理后的结果。程序代码如下:

 

Private Sub Command1Click()

Dim s As String, result As String, k As String

Dim zs As String, n As Integer

result = ""

s = Text1.Text

k = Text2.Text

For n = 1 To Len(s)

         ①      

  If zs = k Then

     If Asc(zs) >= 65 And Asc(zs) <= 90 Then

        zs = Chr(Asc(zs) + 32)

     ElseIf Asc(zs) >= 97 And Asc(zs) <= 122 Then

        zs = Chr(Asc(zs) - 32)

     End If

  End If

        ②       

Next n

        ③      

End Sub

在程序①、②、③划线处,填入适当的语句或表达式,把程序补充完整:

程序中①划线处应填入

程序中②划线处应填入

程序中③划线处应填入

珠心算是在大脑中以算珠表象作为载体,运用珠算法则所进行的计算。某学校的珠心算老师采用一种快速考查珠心算加法能力的测验方法。他随机给出一个正整数集合,集合中的数各不相同,然后要求学生回答:其中共有多少个数恰好等于集合中另外两个(不同的)数之和?例如对于集合{1,2,3,4},一共有2个数等于集合中另外两个数之和,它们是3、4(4=3+1,3=2+1)。将上述算法编写成程序,其功能如下:程序运行时产生n个范围在[1,100]内的不同的随机整数存储在数组a中,并在列表框List1中显示。单击按钮Command1后,在标签Label1上输出结果,如图所示。

  1. (1) 对于集合{1,2,3,4,5,6},一共有个数等于集合中另外两个数之和。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Const n=12

    Dim a(1 To n) As Integer

    Dim flag(1 To 100) As Boolean

    Private Sub Form_Load()

    Dim i As Integer, t As Integer

    For i=1 To 100

      flag(i)=False

    Next i

    i=1

    Do While i <=n

      t=Int(Rnd * 100)+1

      If Not flag(t) Then

      

        List1.AddItem Str(t)

        flag(t)=True

        i=i+1

      End If

    Loop

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, ans As Integer

    ans=0

    For i=1 To n

      For j=i+1 To n

       If a(i)+a(j) <=100 Then

         IfThen

           ans=ans+1

           flag(a(i)+a(j))=False

         End If

      

      Next j

    Next i

    Label1.Caption="共有"+Str(ans)+"个数!"

    End Sub

编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入一个整数,单击“转换”命令按钮,在列表框List1中显示结果,运行结果如图a所示。结果包含两列数据,第1列为两数之间的厘米值g(间隔1厘米、升序),第2列为对应的码值m。

鞋子尺码换算:常用的两种鞋码一种是欧制的码m,而我国采用的标准为厘米数g,鞋子尺码的换算公式:欧制m=中国制g*2-10。例如25是我国采用的厘米数,换算成欧制的码为25*2-10=40(码)。

  1. (1) 根据程序界面(图a)和其属性窗口(图b)所提供的信息,可以得知“转换”命令按钮的对象名称是
  2. (2) 为实现上述功能,请在划线处填入合适的代码或选项。

    Private Sub Command1_Click()

    Dim g1 As Integer, g2 As Integer

     Dim i As Integer, temp As Integer

     Dim m As Single

     List1.Clear

     g1 = Val(Text1.Text)

     g2 = Val(Text2.Text)

     IfThen

      temp = g1: g1 = g2: g2 = temp

     End If

     i = g1

     Do While i <= g2

     

      List1.AddItem Str(i) + “” + Str(m)

      i = i + 1

    Loop

    End Sub

  3. (3) 如果调试程序时在文本框中输入小数,例如第一个数输入24.5,第二个数输入29.5,则在列表框中(选填:能/不能)看到包含小数的厘米数。
编写VB程序,实现如下功能:单击按钮“确定”,在列表框中输出1-100里所有的完全平方数。程序界面如图所示:

为实现上述功能,请将以下程序补充完整。

Private Sub Command1_Click()

Dim j As Integer, k As Integer

List1.Clear

For k = 1 To 100

    j = Int(Sqr(k))

    If Then List1.AddItem

Next k

End Sub

数组a存储n个学生的性别和身高数据,其中奇数位置存储性别,偶数位置存储身高,数组的存储结构如下表所示:

1

2

3

4

5

6

……

2n-1

2n

性别

身高

性别

身高

性别

身高

……

性别

身高

该 n位学生站成一排合影:男生全部在一侧,从低到高排序;女生全部在另一侧,从高到低排(所有人的身高h为整数,且100≤h≤200),排序前显示于List1,排序后显示于List2,如图所示。

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

Const n = 10

Dim a(1 To 2 * n) As String Private Sub Form_Load()

'读取身高和性别数据,存储在数组a中,并显示于列表框List1中,代码略

End Sub

Private Sub Comd1_Click()

Dim count As Integer, i As Integer, j As Integer count=0

For i = 1 To n-1

        ‘改错①

    For j = n To i+ 1 Step -1

       If a(2 * j - 1) = "男" Then If 

          Then   ‘改错②

          t = a(2 * j - 2): a(2 * j - 2) = a(2 * j): a(2 * j) = t

          t = a(2 * j - 3): a(2 * j - 3) = a(2 * j - 1): a(2 * j - 1) = t start = j

       End If

    ElseIf a(2 * j - 3) = "女" Then

        If      Then   '填空

            t = a(2 * j - 2): a(2 * j - 2) = a(2 * j): a(2 * j) = t

            t = a(2 * j - 3): a(2 * j - 3) = a(2 * j - 1): a(2 * j - 1) = t start = j

        End If

    End If

    Next j i=start-1

    count=count+1 Next i

For i = 1 To n

List2.AddItem a(2 * i - 1) + a(2 * i) Next i

End Sub

  1. (1) “排序”按钮的对象名为
  2. (2) 程序代码中,加框处有错误,请改正。

     ② 

  3. (3) 程序代码中,将下划线处语句补充完整。
  4. (4) 对于数据{男,180,女,165,男,170,女,161,男,176},程序运行后,变量 count的值为
采用排序算法对数组a中的6个数据“10,8,7,2,15,9”进行排序,部分程序如下:

For I = 1 To 5

  t = 1

  For j = i + 1 To 6

    If a(t) < a(j) Then

    If i <> t Then

      temp = a(i)

    a(i) = a(t)

    a(t) = temp

    End If

  Next j

Next i

下列描述正确的是(  )

A . 程序为冒泡排序升序,实线框中的语句共执行了5次 B . 程序为冒泡排序降序,实线框中的语句共执行了7次 C . 程序为选择排序升序,实线框中的语句共执行了5次 D . 程序为选择排序降序,实线框中的语句共执行了7次
有如下VB程序段:

Dim i As Integer, j As Integer, a(1 To 5) As Integer

For i =1 To 5

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

 For j = 1 To i-1

   If a(i)=a(j) Then

    i=i-1 : Exit For

   End If

 Next j

Next i

执行程序后,数组中的数据可能是(  )

A . 1 4 3 2 5 B . 1 1 3 5 4 C . 1 4 5 6 3 D . 2 3 4 5 5
有下列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”
有VB程序段如下:

s=“2019.06VisualBasic6.0”:n=0

For i=1 To Len(s)

  ch=Mid(s,i,1)

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

    m=Asc(ch)-Asc(“0”)+1

    a(m)=a(m)+1

  End If

Next i

Fori=1 To 10

  If a(i)>1 Then n=n+i

Next i

数组a各元素的初始值都为0,执行该程序段后,变量n的值为(  )

A . 2 B . 4 C . 8 D . 10
小明设计了一种纸牌游戏,每张纸牌上都有一个100以内的数字,每个数字对应的纸牌只有一张。初始时所有的纸牌从上到下按数字大小顺序叠成一堆,如果从中抽走一张,小明就按抽走的纸牌位置分成两堆,对于每堆纸牌,小明采用记忆最顶端牌的数字和这堆牌张数的方法来记录。如剩余的牌为1,2,3,5,6,11,牌分成3堆,记录为(1,3),(5,2),(11,1)。现在有些牌采用如下规则要放回牌堆,有4种情况:

①上靠,例如放回的牌数字为7,可以把牌放在第2堆的最下面,则原来登记的记录变成(1,3),(5,3),(11,1),牌还是3堆。

②下靠,例如放回的牌数字为10,可以把牌放在第3堆的最上面,则原来登记的记录变成(1,3),(5,2),(10,2),牌还是3堆。

③上下不靠,例如放回的牌数字为9,则单独放一堆,登记的记录变成(1,3),(5,2),(9,1),(11,1),牌变成4堆。

④上下靠,例如放回的牌数字为4,则合并第1堆和第2堆,登记的记录变成(1,6),(11,1),牌变成2堆。

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

  1. (1) 现在有3堆牌,分别记录为(1,5),(7,3),(11,20),要把牌10放回牌堆,则登记的记录变成
  2. (2) 请在划线处填入合适的代码。

    Const n=5000

    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为原始记录数

    '读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略

    a(0)= 0:b(0)=0:sp=k +1:a(sp)=10000:b(sp)=0

    Private Sub Command1_Click()

    Dim i As Integer

    c=Val(Text1.Text)    'c 为放回的牌号

    i=1

    Do While a(i)<c     '查找牌c放的位置

        i=i+1

    Loop

    i=i-1

    '下面为放牌过程

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

        If     ①   Then  '第4种情况,上下靠

            b(i)=b(i)+1+ b(i+1)

            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

    Elself c+ 1=a(i+1)Then'第2种情况,下靠

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

    Else           '第3种情况,上下不靠

        For j=    ②  

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

        Next j

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

    End If

    '下面为输出登记的记录,不包括虚设的两条记录

    For i=1 To   ③     

        List3.Addltem“第”&Str(i)&“记录(”&Str(a(i))&“,”&Str(b(i))&“)”

    Next i

    End Sub

有VB 程序段如下:

Randomize

For i=1 To 6

  a(i)= lnt(Rnd * 20)+1

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

    a(i)= a(i)-1

  Else

    a(i)= a(i)+2

  End If

Next i

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

A . 13,2,7,12,5,18 B . 22,7,0,15,4,19 C . 20,9,18,23,4,7 D . 6,0,4,21,18,17
有如下程序段:

s=Text 1.Text

t=“”

For i=1ToLen(s) 

  c=Mid(s,i,1)

  If c<“a”Or c>“z”The nt=“”

  t=c+t

Next i

Label 1.Caption=t

执行此程序段时,在文本框Text 1中输入“2020NihaoWolaile”,则标签Label 1中显示的内容是(  )

A . elia loW B . elia lo C . elia D . eli
如下VB程序段“a=13 b=32 a=b”关于语句“a=b”的含义,下列叙述中正确的是(  )。
A . 把变量a的值赋给变量b B . 判断变量a的值是否等于变量b的值 C . 把变量b的值赋给变量a D . 把变量a的值与变量b的值交换
下图为某次信息考试得分情况,字符串数组class中存储班级学号(如“0112”,前两位表示班级,后两位表示学号),score数组中存储得分。某同学设计了VB程序实现如下功能:在Text1中输入班级(1-18之间的数字),在Text2中输入人数m,单击“刷选”按钮,在列表框List1中刷选出该班符合要求的班级学号和得分。

  1. (1) 下列对象中有Text属性的是 (单选:填字母: A . Command1; B . Form1;C . Text1 ;D . List1)
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Const n=640

    Dim class(1 to n )As String

    Dim score(0 to n) As Integer

    ‘从数据库中读取学号和成绩数据,存入class和Score数组,并在Lis2中显示,代码略

    Private Sub Command1Click()

    Dim x As integer, m AS Integer, i As Integer,j As Integer

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

    x=Val(Text1.Text)

    m=Val(Text2.Text)

    i=1: flag=True

    Do While flag

      k=i

      For j=i+1 To n

       

        If t=x Then

          It score (j)>score(k) Or Val(Mid(class(k),1,2))<>x Then k=j

        End If

      Next j

      IfAnd score(k) <> score(i-1) Then flag=Fale

      If k<>i Then

        t1=sore(i): score(i)=score(k): score(k)=t1

        t2=class(i): class(i)=class(k): class(k)=t2

      End If

    i=i+1

    Loop

    List1.Clear

    For j=1 To

      List1.Additem class(j)+""+Str(score(j))

    Next j

    End Sub

给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是:

1)找出等式中单个数字的最大值;

2)从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;

3)如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。

小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。

  1. (1) 根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim s1 As String, ysf As String, t1 As String, t2 As String, t3 As String

    Dim ch As String, t As String, max As Integer, jz As Integer, i As Integer

    s1=Text1.Text

    t1=0: max=0

    For i=1 To Len(s1)

    ch=Mid(s1, i, 1)

    If ch=“+” Or ch=“-” Or ch=“*” Or ch=“\\” Then

        ysf=ch: t1=t: t=“ ”

    ElseIf ch=“=” Then

        t2=t: t=“ ”

    ElseIf ch >= “A” And ch <= “F” Then

        t=t+ch

        temp=

        If max < temp Then max=temp

    Else

        t=t+ch

        If max < Val(ch) Then max=Val(ch)

    End If

    Next i

    t3=t: jz=0

    Do While i <= 16

    If ysf=“+” Then

        If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    ElseIf ysf=“-” Then

        If XtoD(i, t1) - XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    ElseIf ysf=“*” Then

        If XtoD(i, t1) * XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    Else

        If XtoD(i, t1) / XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

    End If

    i=i+1

    Loop

    If jz <> 0 Then

    Text2.Text=“该数属于” +Str(jz)+ “进制”

    Else

    Text2.Text=“没有找到合适的进制”

    End If

    End Sub

    Function XtoD(x As Integer, s As String) As Integer

    Dim j As Integer

    j=0

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

    XtoD=XtoD+Val(Mid(s, i, 1)) * x ^ j

     

    Next i

    End Function

有如下VB程序段: s = "PYTHON5678" For i = 1 To Len(s)

ch = Mid(s, i, 1)

If ch >= "0" And ch <= "9" Then

  k = (Val(ch) - 1) Mod (Len(s) - 4) + 1

  s1 = Mid(s, k, 1) + s1

End If

Next i

Text1.Text = s1

程序执行完后,Text1 中显示的内容是(     )

A . ONPY B . YPNO C . PNOH D . HONP
下面程序执行结束,文本框Text1中显示(    )

Private Sub Form_Click()

  a = "123": b = "456"

  c = Val(a) + Val(b)

  Text1.Text=str(c\100)

End Sub

A . 123 B . 3 C . 5 D . 579
下列不能作为变量名使用的是(   )
A . *Pen B . X1011 C . K_2 D . Yes
“回文”是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也存在这样一类数具有这样的特征,称为回文数。例如: 123454321为回文数。
  1. (1) 若将任意一个三位数存储到整型变量a中,下列语句可实现回文数的是(     )
    A . B . C . D .
  2. (2) 若将任意一个三位数存储到字符串变量a中,下列语句不能实现回文的是(    )
    A . new=a+a[2]+a[1]+a[0] B . new=a+a[::-1] C . new=a+a[-3]+a[-2]+a[-1] D . new=a+a[-1::-1]
最近更新