4.1 程序设计语言的基础知识 知识点题库

有如下程序段:

a(1)=False

For i = 2 To 20

       a(i) = True

Next i

For i = 2 To 20

      If a(i) = True Then

        For j = 2 To 20 \ i

          a(i * j) = False

        Next j

      End If

Next i

t = 0

For i = 1 To 20

      If a(i) = True Then

        t = t + 1

      End If

Next i

经过该程序段运行后,变量t的值为(   )

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

程序界面如下图所示,在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

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

程序中①划线处应填入

程序中②划线处应填入

程序中③划线处应填入

设计人口普查程序,用一个变量表示海南省的人口总数,这个变量的类型应是(   )
A . 整型 B . 实型 C . 长整型 D . 双精度型
【加试题】有VB编写的程序如下:

  Private Sub Command1_Click()

    Dim a(0 To 9)As Integer

    Dim t As Long

    t=Val(Text1.Text)

    Do While t<>0

       a(t Mod 10)=1

       t=t\10

    Loop

    For i=0 To 9

        x=x+a(i)

    Next i

  End Sub

若在文本框Text1中输入10242048,则程序执行后,变量x的值为(  )

A . 1 B . 2 C . 5 D . 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 . ③④②①
小容想设计一个自己的网页,在配色时发现网页使用的颜色是用十六进制表示的,但她习惯使用了十进制RGB颜色模式,学习了VB应用程序开发后,她想通过程序实现十进制到十六进制的转换。实现如下功能:在文本框Text1中输入RGB颜色的十进制,每个值以逗号结束,单击“转换”按钮Command1,在文本框Text2中显示颜色的十六进制值。运行效果如图所示:

  1. (1) 若要将窗体Form1的标题修改为“颜色转换”,则应修改Form1对象的 属性。
  2. (2) 以下程序段运行时,为了实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Const st = "0123456789ABCDEF"

      Dim s, ch, rs As String

      Dim m, r1, r2, n As Integer

     

      For i = 1 To Len(s)

        ch = Mid(s,i,1)

        If ch > "9" Or ch < "0" Then

           

            r2 = m Mod 16

            rs = rs + Mid(st, r1 + 1, 1) + Mid(st, r2 + 1, 1)

            m = 0

        Else

            m = m * 10 + Val(ch)

        End If

      Next i

      Text2.Text = "#" + rs

    End Sub

  3. (3) 若黄色是由红色和绿色混合得到,则输入黄色的RGB值,文本框Text2中显示的内容为
某 VB 段程序如下:

s = Text1.Text

For i = 1 To Len(s) c = Mid(s, i, 1)

   

s1 = s1 + c Next i Text2.Text = s1

程序运行时,在文本框Text1中输入“ABC123xyz”,在文本框Text2中输出“bcd123yza”,则加框①处的代码为( )

A.

A . If c >= "A" And c <= "Z" Then c = Chr(Asc(c)+ 32) If c >= "a" And c <= "z" Then m = (Asc(c) - Asc("a") + 1) Mod 26 c = Chr(m + Asc("a")) End If B . If c >= "A" And c <= "Z" Then c = Chr(Asc(c) + 32) ElseIf c >= "a" And c <= "z" Then m = (Asc(c) - Asc("a") + 1) Mod 26 c = Chr(m + Asc("a")) End If C . If c >= "A" And c <= "Z" Then c = Chr(Asc(c)+32) If c >= "a" And c <= "z" Then m = (Asc(c) - Asc("a") ) Mod 26+1 c = Chr(m + Asc("a")) End If D . If c >= "A" And c <= "Z" Then c = Chr(Asc(c) + 32) ElseIf c >= "a" And c <= "z" Then m = (Asc(c) - Asc("a")) Mod 26 + 1 c = Chr(m + Asc("a")) End If
用VB编写“检查句子格式”的程序,实现如下功能:在文本框Text1中输入要检查的英文句子,单击“检查”按钮Command1. 判断句子“. ”和“?”后的字母是否是大写,如果是小写字母,那么将其转换为大写字母,并在文本框Text2中输出。程序运行界面如图所示。

  1. (1) 要使程序运行时,文本框Text1的Height属性值为900,可在Form_Load事件处理过程中添加语句(单选,填字母:A . Height=900/B . Text1. Height=900/C . Height. Text1=900)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click ()

      Dim s As String, ch As String, flag As Boolean

      Dim ch2 As String, res As String, i As Integer

      s=Text.Text:res=“”

        ① 

      Do While<= Len (s)

        flag= False

        ch= Mid (s, i, 1)

        If i= 1 And ch>=“a”And ch2<=“z”Then

          ch= Chr (Asc(ch)-32)′小写字母转换为大写字母

        End If

        If ch=“.” Or ch=“?”  Then flag=True

          ch2= Mid(s,i+1. 1)

        If flag And ch2>=“a”And ch2<=“Z”Then

          ch2= Chr (Asc(ch2)-32)′小写字母转换为大写字母

          res=   ②  

          i=i+2

        Else

          i=i+1

          res=res+ch

        End If

      Loop

      Text2. Text=res

    End Sub

     ② 

  3. (3) 若在文本框Text1中输入句子:“you are best.”,第1个单词前有空格,则经过上述程序处理后,输出结果首字母“y”是否会变为大写“Y”?(选填:是/否)。
简易加法器:小王用VB编写了一个简易加法器,其功能如下:在文本框Text中输入数字,中间用“,”隔开,单击“计算”命令按钮 Command1后,其计算结果输出在标签框 Label1中。运行界面如图所示,VB程序代码如下,请回答以下问题。

  1. (1) 观察代码,可知“计算”命令按钮的对象名为
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command_Click( )

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

    Dim ch As String, s As String

    s= Text1 Text

    ans = 0:j = 1

    For i =l To Len(s)

           ①    

        If ch = "," Then

            ans =ans Val (Mid(s, j, i-j))

            j=     ②    

        End If

    Next i

    Label1. Caption ="计算结果是:"+Str( ans)

    End sub

     ② 

  3. (3) 运行该程序,在文本框中输入“21,5,3”,则计算结果(值)是
下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。

……

For i=1 To n-1

k=i

For j=i+1 To n

    If d(j) <d(k) Then k=j

Next j

    If i<>k Then kt=d(i): d(i) =d(k): d(k) =kt

Next i

……

框内代码运行结束时,保存最小值的数组元素一定是(  )

A . d(n) B . d(j) C . d(i) D . d(k)
在VB程序设计中,变量的命名要遵循一定的规则。下列变量名合法的是(  )
A . as B . 2a C . a#2 D . china
编写“二进制加法”程序。

程序运行时,在文本框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

某算法的部分流程如图所示,输入“40”并执行这部分流程后,输出的sum的值是(  )

A . 91 B . 90 C . 21 D . 1 275
高精度除法常用于计算两个数位较大的数之间的除法运算,设被除数为s1,除数为s2,保存在字符串中。除法的基本思想是反复做减法,s1能够被s2减多少次,商就是多少。但是这样做显然比较慢。如下算法做了部分优化,以48695除以324为例:

①将324扩大100倍,32400只能被48695减去1次,则百位上的商是1;

②将324扩大10倍,3240能被前一次余的16295减去5次,则十位上的商就是5;

③对于324,不能被最后剩余的95减去,则个位上的商为0。所以最后的商的整数部分为150。

程序运行界面如图所示。

  1. (1) 根据该算法计算5731423除以23345,十位上的商是
  2. (2) 阅读以下程序,在画线处填入合适的代码。

    Dim s1, s2, s3, s, ans As String

    Dim tot As Integer, t As Integer

    Private Sub Command1_Click( )

      Dim a, b, i, j, length As Integer

      s1=Text1.Text:s2=Text2.Text:s3=""

      Length=Len(s1)-Len(s2)

      For i=1 To length

          s2=s2+"0"

      Next i

      For i=0 To length

          s=Mid(s2, 1, Len(s2)-1):tot=0

          Do While   ①   or(Len(s1)=Len(s)And s1>=s)

              tot=tot+1

              ans="":flag=False

              a=Len(s1):b=Len(s)

              For j=a To 1 Step-1

                  t=0

                  If flag Then

                    t=-1:flag=False

                  End If

              If b>0 Then

                  t=t+Val(Mid(s1, j, 1))-Val(Mid(s, b, 1))

              Else

                  t=    ②   

              End If

              If t<0 Then

                     ③  

                  flag=True

              End If

              ans=t&ans:b=b-1

            Next j

            s1=Val(ans)

        Loop

        s3=s3&tot

      Next i

      i=1

      Do While Mid(s3,i,1)="0"

            i=i+1

      Loop

      Text3.Text=Mid(s3,i,Len(s3))

    End Sub

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

编写“加法练习题生成器”程序,实现如下功能:在文本框Text1中输入题数n,单击“生成”按钮Command1,在列表框List1中显示n个两数之和小于100的加法练习题。程序运行界面如图1所示。

图1

  1. (1) 在设计程序界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加“生成”按钮。

    图2

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

    Private Sub Command1_Click()

      Dim n As Integer, i As Integer, a As Integer, b As Integer

      Randomize

      n = Val(Text1.Text)

      i =

      Do While i <= n

        a = Int(Rnd * 100)

        b = Int(Rnd * 100)

        If Then

            List1.AddItem "(" + Str(i) + ")" + Str(a) + "+" + Str(b) + "="

            i = i + 1

        End If

      Loop

    End Sub

  3. (3) 运行该程序,在文本框中输入5,单击“生成”按钮后,对语句a = Int(Rnd * 100)执行次数的描述,最合理的是(单选,填字母:A . 执行次数等于5 / B . 执行次数大于等于5 / C .执行次数小于等于5)
在Python中,我们通常使用(    )来存取数据。  
A . 求知数 B . 表达式 C . 变量 D . 常量
下列VB表达式中值为0的是(      )
A . Len("-20") + 20 B . Sqr(36) + Int(-5. 6) C . Asc(“0”) D . 1001 Mod 100 \ 10
Python中变量的命名遵循的规则,不正确的是(     )
A . 以字母或下划线开头,后面可以是字母、数字或下划线 B . 区分大小写 C . 以数字开头,后面可以是字母、数字或下划线 D . 不能使用保留字
random.randint(1,10)语句作用在1到10中随机生成一个数字。
小明为班会活动的“抽奖环节”设计了一张获奖表。该“抽奖环节”功能如下:班级学生人数为n个,程序运行后,单击“发放号码牌”按钮Command1,随机生成n个不重复的[n+1, 2*n]内的整数,并在列表框list1中显示,学生按学号次序依次领取号码牌,例如:随机生成的第一个整数为54,则学号为1号的学生领取的号码牌为54。单击“抽奖”按钮Command2,在列表框list2中显示获奖表,获奖序列要求:第1名获奖的学生是号码牌数字中偶数最大的,第2名获奖的学生是号码牌数字中奇数最小的,第3名获奖的学生是号码牌数字中偶数第二大的,第4名获奖的学生是号码牌数字中奇数第二小的……取过的数字不能再取,以此类推,直到结束。其程序界面如图所示。

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

Const n = 50

Dim a(1 To n) As Integer

Dim f(n + 1 To 2 * n) As Boolean

Private Sub Command1_Click()

    Dim i As Integer, j As Integer

    Randomize

    For i = n + 1 To 2 * n

        f(i) = False

    Next i

    For j = 1 To n

        a(j) = Int(Rnd * n) + n + 1

        If f(a(j)) = True Then j = j - 1 Else     ①      

    Next j

    For i = 1 To n

        List1.AddItem CStr(i) + "号-" + CStr(a(i))      'cstr 把数值类型转换为字符串类型,并去前导空格

    Next i

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, m1 As Integer, m2 As Integer

    m1 = 0: m2 = n \ 2

    For i = n + 1 To 2 * n

        If    ②    Then

            m1 = m1 + 1: a(m1) = i

        Else

            m2 = m2 + 1: a(m2) = i

        End If

    Next i

    For j = 1 To n \ 2

        List2.AddItem "第" + CStr(2 * j - 1) + "名" + Str(    ③    ) List2.AddItem "第" + CStr(2 * j) + "名" + Str(a(n \ 2 + j))

    Next j

End Sub

  1. (1) 若仅对如下号码牌进行抽奖:1号-57,2号-76,3号-91,4号-83,5号-66,6号-82,则第3名获奖的学生学号是号。

     

  2. (2)  请在划线处填写合适代码,使程序正常运行。