第四章 程序设计基础 知识点题库

下列赋值语句中不正确的是(  )
A . x+y=5 B . x=y<>5 C . Labell.caption =time D . x=x+y
在文本框Text1中输入一个矩形的周长,单击“求解”按钮Command1,在列表框List1中显示构成这个矩形的长和宽(整数)及他的面积,在文本框Text2中输出构成这个矩形的最大面积。程序运行时界面如下图所示:

程序代码如下所示,请补充完整。

Private Sub Command1_Click()

 Dim i As Integer,j As Integer,s As Single,zc As Integer

 Dim max As Integer

 zc=Val(Text1.Text)

 max=0

 If zc Mod 2=1 Then

List1.AddItem ”该周长的矩形长度和宽度不是整数!”

 Else

List1.AddItem ”宽度 长度 面积”

For i=1 To zc \2

 If i>j Then Exit For

 List1.AddItem Str(i)+”   ”+Str(j)+”    ”+Str(s)

 If Then max=s

 End If

 Text2.Text=Str(max)

End Sub

有如下程序:

Private Sub Command1_Click()

  Dim a(5) as Integer

  Dim n as Integer, i as Integer

  n = Val(Text1.Text)

  i = 0

  a(1) = 1

  a(2) = 1

  For i = 3 To n

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

  Next i

  Label1.Caption = a(i)

End Sub

若在Text1中输入5,则点击按钮后的运行结果为(  )

A . Label1中输出5 B . Label1中输出10 C . 报“下标越界”错误 D . Label1中无内容
长整型数据占(  )个字节
A . 2 B . 4 C . 6 D . 8
有如下VB程序段:
Dim a(0 To 6) As Integer
Randomize:
a(0)=0: i=1

Do While i<=6

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

  If a(i) Mod 2<>i Mod 2 Then

    i=i-1

  ElseIf a(i)<a(i-1) Then

    a(i)=a(i)*2

  End If

i=i+1

Loop

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

A . 5, 4, 5, 4, 5, 10 B . 1, 4, 6, 8, 10, 8 C . 7, 2, 5, 4, 5, 4 D . 1, 2, 2, 3, 5, 4
对n项(n<=100)数据序列的前x项求和,可设计如下算法:将数据序列存储在数组a中,并按一定规则转换成数组c,再借助数组c实现求和.

将数组a转换成数组c的方法描述如下:

①将数组a中的元素依次存储到数组c中,把当前数组c看作第一层;

②把第一层中的各元素进行如下处理:奇数项值不变,偶数项的值更新为自己与自己前一项的和,将更新后的数组元素看作第二层;

③把第二层中的各元素,按上述方法进行同样操作,更新后的数组元素看作第三层;

④以此类推,直到当前层中仅有一项 止。

例如x=11时,转换过程如图所示:

借助数组c,可快速计算出数组a中前x项的和.例如,数组a中前11项的和,可由表达式c(11)+c(10)+c(8)得到。表达式具体分析过程如下:

①表达式第一项为c(11);

②将下标11转换成二进制数1011,计算该二进制数最右边的“1”所对应的权值,再用11减去此权值得到10,即表达式第二项为c(10);

③按上述方法继续操作,直到计算结果等于0为止。

小龙依据上述方法设计了如下vb程序.请回答下列问题:

  1. (1) 计算数组a中前22项和的表达式为(填写表达式,如c(11)+c(10)+c(8))。
  2. (2) 请在横线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 1000) As Long, c(1 To 1000) As Long

    Private Sub Form_Load()

    '读取n个数据,并存储到数组a中(代码略)

    End Sub

    Private Sub Command1_Click()

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

      For i = 1 To n

        c(i) = a(i)

      Next i

      k = 2      ‘当前层第一个偶数项的位置

      space = 1      ‘当前层偶数项与前一项的间距

      Do While k <= n

        For i = k To n Step k

          c(i) = c(i) + c(i - space)

        Next i

        k = k * 2

       

      Loop

    End Sub

    Private Sub Command2_Click()

      Dim x As Integer, sum As Long

      x = Val(Text1.Text): sum = 0

      Do While x <> 0

        sum = sum + c(x)

       

      Loop

      Text2.Text = Str(sum)

    End Sub

    Function lowbit(x As Integer) As Integer

      Dim temp As Integer

      temp = x: lowbit = 1

        Do While

          lowbit = lowbit * 2

          temp = temp \ 2

        Loop

    End Function

在VB中,下列属于字符串常量的是(    )。
A . cnt B . 3.14 C . 2018 D . “Visual Basic”
有如下VB程序段:

For i=1 To 9

For j=10 To i+2 Step-1

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

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

End If

Next j

Next i

数组元素a(1)到a(10)的值依次为“3,17,2,14,15,6,7,18,9,4”,执行该程序段后,数组元素a(8)中的值为(    )

A .   3 B .   4 C .   15 D .   17
正整数n的阶乘,在数学上定义为:n!=1×2×3×…×n,如3!=1×2×3,现在输入一个正整数n(n≤30),计算出1~n中的每一个整数的阶乘的精确结果。小北按照上述要求,设计了一个求前n个正整数的阶乘问题的VB程序具有下述功能。在程序中,他采用加法代替乘法的方法来计算阶乘,如:3!=2!×3=2!+2!+2!。程序启动后在文本框Text1中输入n的值,单击“计算”按钮Command1后,在列表框List1中输出前n个数的阶乘,当n=10时,程序运行界面如图所示。

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

Const maxn=80

Dim i, j, k, n, r As Integer

Dim a(1 To maxn)As Integer, b(1 To maxn)As Integer

Dims As String

Private Sub Form_Load( )

    List1.Clear

    For i=1 To maxn

        a(i)=0

    Next i

End Sub

Sub array_sum(j As Integer)    ‘该过程用于计算j!,并将j!的精确值按位保存在数组a中

  For k=1 To j-1

    For i=1 To maxn

        r=    ①   

        If r>=10 Then    ②   =a(i+1)+1

        a(i)=r Mod 10

    Next i

  Next k

End Sub

Private Sub Command1_Click( )

  n=Val(Text1.Text)

  a(1)=1

  List1.AddItem"1!="&.Str(a(1))

  For j=2 To n

    For i=1 To maxn

        b(i)=a(i)

    Next i

    s=""

    Call array_sum(j)      ‘该语句用于调用自定义过程

    s=s+Str(j)+"!="

    k=maxn

    Do While a(k)=0

           ③  

    Loop

    For i=k To 1 Step-1

        s=s+Str(a(i))

    Next i

    List1.Addltem s

  Next j

End Sub

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

有以下程序段:

sum=0

for i in range(1,6)

    sum=sum+i

print(sum, i)

程序的运行结果为(     )

A . 24   5 B . 15  5 C . 24   6 D . 15  6
Python中print(66!=66)结果是(   )。
A . 1 B . 0 C . True D . False
顺序结构程序的执行顺序是(    )
A . 由外到内 B . 自上而下 C . 自下而上 D . 由内到外
有如下VB程序段:

Const n = 50

Din a(1 To n) As Integer, b(1 To 10) As Integer, k As Integer

k=n\ 10

For i=1 To n

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

Next i

For i=1 To k

    For j=I To n Step k

        b(i) = b(i) + a(j)

    Next j

Next i

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

A . 0,60,32,50,150 B . 10,40,70,100,130 C . 5,5,55,75,100 D . 2,5,8,11,14
下列选项的语句中,与“若x小于0则y=-1,否则y=1”功能相同的是(        )

A. if x < 0:

y = -1

y = 1

B. y =1

if x < 0:

y = -1

C. if x < 0:

y = -1

if x > 0:

y = 1

D. if x > 0 :

y = 1

else:

y = -1

A . A B . B C . C D . D
下面的程序,若想运行结果是Best Wishes to you!,则划线处代码可能是(      )

s="Happy National Day!"

m=          

if m=="Happy":

    print("Happy to you!")

elif m=="National":

    print("Best Wishes to you!")

else:

    print("It's a fine Day!")

A . s[6:13] B . s[7:14] C . s[-6:-14:-1] D . s[-13:-5:1]
在Python中,表达式21 % 4的结果是(       )
A . 5 B . 1 C . 15 D . 25
某学校推出一款食堂套餐查询小程序。学生登录该小程序后,可以查询相关套餐信息,系统根据以往购买评分,给出相关套餐的平均评分以及推荐指数。

编写一个VB程序实现如下功能:程序运行后自动读取数据库中关于食堂套餐的相关数据,在文本框Text1中输人查找套餐的关键词,搜索到的套餐信息在列表框List1中显示,程序计算套餐平均评分(四舍五入保留一位小数)和推荐指数,并显示在套餐信息下方。程序运行界面如图所示。

Const n = 50

Dim food(1 To n) As String

Dim price(1 To n) As Integer

Dim score(1 To n) As Single

Private Sub Form_ Load()

‘读取数据库中套餐名称、套餐价格和套餐评分信息分别存储于数组food、price和score中,代码略。

End Sub

Private Sub Command1 _Click()

    Dim food(1 To n) As String, s As String

    Dim price(1 To n) As Integer

    Dim judge(1 To n) As Boolean

    Dim score(1 To n) As Single,  sum As Single,  ave As Single

    Dim i As Integer, j As Integer, t As Integer, q As Integer

    Dim w1 As Boolean, w2 As String, w3 As Integer, w4 As Single

    s = Text1.Text : q= 0

    For i=1 To n

            ①    

        j= 1

        Do While True

            If j+Len(s)-1<=t Then

                If s = Mid( food(i),  j, Len(s)) Then

                    judge(i) = True

                    q=q+1

                Else

                        ②   

                End If

            End If

            If  Then

                Exit Do

            End If

        Loop

    Next i

    For i=1 To n-1

        For j=n To i+1 Step -1

            If Not judge(j-1) And judge(j) Then

                w1 = judge(j): judge(j) = judge(j-1): judge(j-1) = w1

                w2 = food(j): food(j) = food(j - 1): food(j-1) = w2

                w3 = price(j): price(j) = price(j -1): price(j-1) = w3

                w4 = score(j): score(j) = score(j-1): score(j -1) = w4

            End If

        Next j

    Next i

    For i=    ③   

        List1. AddItem food(i) +Str( price(i))+"元"

        sum =sum+score(i)

    Next i

ave = Int(sum/ q * 10 +0.5) / 10

‘根据平均评分ave 的值给出推荐指数。若平均评分高于4.5分显示推荐指数"* **",若平均评分高于4.0分显示推荐指数"* *",4.0分以下的显示推荐指数" *",代码略。

End Sub

  1. (1) 程序编写完成后,若要得到运行文件,则保存文件类型为(单选,填字母:A . *.exe /B . *. frm /C . *. vbp/D . *. txt)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

  3. (3) 程序中加框处代码有错,请改正。
只能产生大于等于10且小于100随机整数的VB表达式是(    )
A . Int(Rnd * 100) B . Int(Rnd* 90+10) C . Int(Rnd* 91)+ 10 D . Int(Rnd * 99)+1
编写VB程序,实现如下功能:在文本框Text1中输入关键词,例如关键词“ok”,单击“查找”按钮Com-mannd1,在左边的列表框List1所列单词中查找包含“ok”的字符串,如果查找成功,将在右边的列表框List2中输出该单词。若该单词多次符合条件,则只显示一次。如果查找失败,则在列表框List2 中显示“查找无结果“。

实现上述功能的VB代码如下,运行效果如图所示。请回答下列问题:

Const n= 5

Dim a(1 To n) As String

Private Sub Form_ Load( )

'将n个字符串分别赋值给数组元素a(1)、a(2)、……、a(n),并在列表list1中显示

'代码略:

End Sub

Private Sub Command1_ Click( )

    Dim s As String, i As Integer, j As Integer

    Dim m As Integer, k As Integer

    Dim flag As Boolean

    s = Text1. Text

    m = Len(s)

    List2. Clear

    flag = False

    For i=1 To n

        k = Len(a(i))

        For j=1 To k- m + 1

            If  = s Then     '①改错

                List2. AddItem a(i)

                flag = True

                Exit For      '退出for 循环

            End If

        Next j

    Next i

    If  Then    '②填空

        List2. AddItem“查找无结果”

    End If

End Sub

  1. (1) 观察运行界面,窗体中一共有个对象。
  2. (2) 程序代码中,加框处①有错,请改正。
  3. (3) 为实现上述功能,请在加框处②填入合适的代码。
  4. (4) 如果删除程序代码中Exit For语句,对程序最终运行结果(选项:有/无)影响。
有如下python程序段:

from random import randint

n=input("请输入一串数字:")

k=randint(0,len(n))       #randint用于随机生成[0,len(n)]之间的整数

for i in range(k):

    for j in range(len(n)-1):

        if n[j]>n[j+1]:

            break

    else:

        n=n[:len(n)-1]

        continue      #continue跳过当前循环的剩余语句,直接进行下一轮循环

    n=n[:j]+n[j+1:]

执行该程序段后,输入“1529”,则变量n可能是(     )

A . "9" B . "12" C . "152" D . "1259"
最近更新