算法与程序设计 知识点题库

编写VB程序,实现如下功能:在文本框Text1中输入整数n(1≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,再单击“对角线”按钮Command2,则在标签Label1中输出该矩阵对角线(左上角到右下角)上的数值,运行界面如图所示,程序代码如下。
  1. (1) 要使文本框Text1上显示的默认文本由“8”改为“10”,可在其属性窗口中将属性的属性值改为“10”。

  2. (2) 为了实现上述功能,请在划线处填入合适的代码。

    Const MAXNUM = 100

    Dim i As Integer, n As Integer

    Dim a(1 To MAXNUM ^ 2) As Integer

    Private Sub Command1_Click()

      Dim line As String

      n = Val(Text1.Text)

      line = ""

    List1.Clear

      Randomize

      For i = 1  To  n ^ 2

        a(i) =            ①         

        If i > 1 And i Mod n = 1 Then

           List1.AddItem line

           line = Str(a(i))

        Else

           line =        ②         

        End If

      Next i

      List1.AddItem line

    End Sub

    Private Sub Command2_Click()

      Label1.Caption = ""

    For i = 1  to     ③    

         Label1.Caption = Label1.Caption & Str(a(i + (i - 1) * n))

      Next i

    End Sub

     ② ③ 

能被对象所识别的动作是(   )
A . 事件 B . 方法 C . 属性 D . 过程
小婷编写了一个VB程序,实现如下功能,在文本框Text1中输入一个4位整数zs,单击解密按钮后,在List1列表框中显示当前zs值降序开始的10位相邻整数“解密前”和“解密后”的信息,运行界面如图所示。

解密规则:将整数中各个位中的每一位值乘以5,然后除以8所得余数即为该位的值,然后将所得数的首末位进行交换。如数字9357,解密后的值为3715。

  1. (1) 观察程序代码,可知“解密”按钮的对象名是
  2. (2) 实现上述功能,请在划线处填入合适的代码。

    Private Sub Decryp_Click( )

    Dim zs As Long, g As Integer

    Dim b As Integer, q As Integer

    Dim m As Integer, s As Integer

    Dim jmh As String

    zs = Val(Text1.Text)

    For m = zs To

    q = (m \ 1000) * 5 Mod 8

    b = ((m \ 100) Mod 10) * 5 Mod 8

    s = ((m \ 10) Mod 10) * 5 Mod 8

    g = (m Mod 10) * 5 Mod 8

    List1.AddItem Str(m) + "  " + jmh

    Next m

    End Sub

  3. (3) 由上述算法可知,四位数“6124”对应的解密数值是
编写VB程序,实现如下功能:在文本框Text1中输入十进制整数,文本框Text2中输入待转换进制(范围2~16),单击“转换”按钮Command1,在列表框List1中输出该整数对应的进制结果,运行效果如图1所示。

图片_x0020_7

图片_x0020_8

图1

图2

  1. (1) 设计时,属性窗口对象列表如图2所示,则该程序共有个对象。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

       Const code = "0123456789ABCDEF"

       Dim s1 As String, s As String   '变量s存储转换后的结果

       Dim x As Long, R As Integer

      

       If R >= 2 And R <= 16 Then

          x = Val(Text1.Text)

          s = ""

          Do While x > 0

            y = x Mod R

            x =

            s1 = Mid(code, y + 1, 1)   '将余数转换为对应的字符

            s =

          Loop

          List1.AddItem "(" & Text1.Text & ")10" & " →(" & s & ")" & R

        End If

    End Sub

  3. (3) 在Text1中输入180,在Text2中输入8,list1中输出
【加试题】字符串中任意个连续的字符组成的子序列称为该字符串的子串,如字符串“123”的子串有“1”“2”“3”“12”“23”“123”。输出字符串s所有子串的VB程序段如下:

  s=Text1.Text

  List1.Clear

  Len1=Len(s)                            ‘①

  For i=l To len1                           ‘②

    For j=1 To len1-i                       ‘③

        List1.Addltem Mid(S,j,i)         ‘④

     Next j

   Next i

运行时发现未输出所有子串,则修改(  )

A . ①处所在行的语句为len1=Len(Text1.text) B . ②处所在行的语句为For i=1 To len1+1 C . ③处所在行的语句为For j=1 To len1+1-i D . ④处所在行的语句为List1.AddItem Mid(s,i,j)
在窗体上显示杨辉三角形,如下图所示:如果显示6行,则第1行数字前有5个空格,第2行前有4个空格,第3行数字前有3个空格……

解决该问题的VB程序段如下,在划线处填入正确的语句以实现功能。

Dim a(0 To 10) As Integer

Dim b(0 To 10) As Integer

n = 10

For i = 0 To 10

a(i) = 0

Next

a(1) = 1

b(1) = 1

For i = 1 To n

s = ″ ″

For j = 1 To

s = s + ″ ″'在s中加入一个空格

Next

For j = 1 To i

b(j) =

s = s + Str(b(j))

Next

Print s

For j = 1 To i

a(j) = b(j)

Next

Next

在VB中,表达式Left(“2014年青奥会”,6)的值为(   )
A . 2014年青 B . 2014年 C . 2014年青奥会 D . 2014
用VB编写一个寻找第n个素数的程序,程序功能:在text1中输入一个正整数n,单击“寻找”按钮commnad1后,在label2中输出第n个素质,如n=1,第1个素质是2,程序运行界面如图a所示。

图a

图b

  1. (1) 结合程序功能,在设计程序界面时,应使用图b所示“控件工具箱”中的 (填写相应编号)添加该程序的“输出”对象。
  2. (2) 实现上述功能的VB程序如下,请在划线处填写合适的代码。

     Private Sub Command1_Click()

    Dim n As Integer, i As Integer, s As Integer, x As Integer, f As Boolean

    n = Val(Text1.Text)

    f = False: s = 0

    i = 2

    Do While f = False

        x = 2

        Do While x <= Int(Sqr(i)) And i Mod x <> 0

             ①    

        Loop

        If x > Int(Sqr(i)) Then

           s = s + 1

           If   ②    Then

              Label2.Caption = "第" & Str(n) & "个素数是:" & Str(i)

              f = True

           End If

        End If

           i = i + 1

    Loop

    End Sub
     ② 

  3. (3) 若在text1中输入n为3,则单击“寻找”按钮后,label2中输出的是
有如下VB程序段:

y=0

n=Len(Text 1.Text)

For i=1To n

    c=Mid(Text 1.Text,i,1)

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

        x=Val(c) :a(x) =a(x) + 1

    End If

Next i

For i= 0 To 9

    If a(i) >0Then y=y+ 1

Next i

Label 1.Caption=Str(y)

a数组各元素的初值为0,程序运行时,在文本框Text 1中输入内容“pi=3.1415926535”,单击按钮Command 1后,标签Label 1中显示的内容是(  )

A . 6 B . 7 C . 8 D . 9
在探究冒泡排序过程中数据的“移动”情况,小明编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text11中输入初始位置(即下标值),单击“排序”按钮Command1后,在标鉴Label4中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。

实现上述功能的VB程序如下:

Dim a(1 To 8) As Integer

Dim n As Integer

Private Sub Form_Load()

'排序前的8个数据存储在数组a中,并在列表框List1中显示

'代码略

End Sub

Private Sub Command1_Click()

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

Dim pos As Integer        '变量pos存储指定数据的位置(即下标值)

Dim s As String            '变量s存储pos变化情况

s = Text1.Text

pos = Val(Text1.Text)

For i = 1 To n - 1

For j = n To i + 1 Step -1

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

k = a(j - 1)

a(j)=a(j-1)    '(2)改错

a(j) = k

'如果pos位置的数据参与交换,则更新pos值,记录pos变化情况

If pos = j Then

pos = j - 1

s = s + "→" + Str(pos)

ElseIf                        Then '填写代码

pos = j

s = s + "→" + Str(pos)

End If

End If

Next j

Next i

Label4.Caption = "位置变化情况:" + s

For i = 1 To n

List2.AddItem Str(a(i))

Next i

End Sub

  1. (1) 要使程序运行后,窗体Form1标题立即自动显示为“冒泡排序程序探究”,可在(单选,填字母:A . Form_Load / B . Form_Click / C . Command_Click)事件过程中添加语句Form1.Caption=“冒泡排序程序探究”。
  2. (2) 程序代码中,加框处代码有误,请写出正确程序    
  3. (3) 程序代码中,ElseIf  Then 语句处代码缺失,请补充正确程序
  4. (4) 根据程序,若在Text1中输入的初始位置为3,则Label4中显示的内容为  。
有如下VB程序段:

Dim d(1 to 5)as integer, i as integer

Dim flag as Boolean, j as integer

‘给数组元素d(1)至d(5)赋初值为1,代码略

Randomize

For i=1 to 5

  J = 1: flag = True

  d(i) = int(Rnd*9)

  Do while j< =i-1 and flag = True

    d(i) = int(Rnd*5+1)

    If d(i) = d(j) then i=i-1: flag = False

    j = j+1

  Loop

Next i

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

A . 1 3 4 5 6 B . 3 5 4 1 1 C . 8 3 1 2 5 D . 1 2 6 2 1
有如下VB程序:

a=1:b=2

If a>0 And a>b Then a=a+1

a=a+1

If a<>b Then

  a=a+1

  b=b+1

End If

a=a+b

Label1.Caption=Str(a)

程序运行后,标签Label1上显示的内容为

创建一个list列表,正确的是(   )
A . list[1,2,3] B . list=[1,2,3] C . list(1,2,3) D . list=(1,2,3)
对于数列:1、2、3、4、5,用二分法查找数据“4”,最少的查找次数是(   )。
A . 4次 B . 3次 C . 2次 D . 1次
表达式 'ab' in 'acbed' 的值为(     )
A . False B . True C . 4 D . 5
人的身高一般是脚长的七倍左右。所以在知道一个人的身高后,便能大致推出他的脚长,进而推算出他鞋的码数。脚长与码数的关系如下:

脚长

21.5-22.0

22.0-22.5

22.5-23.0

23.0-23.5

23.5-24.0

24.0-24.5

24.5-25.0

25.0-25.5

码数

34

35

36

37

38

39

40

41

程序代码如下,请回答下面问题:

height=float(input('请输入身高(cm):'))

     ①     

if 21.5<=long<=22.0:

  num=0           # num 为区间标记号,从 0 开始递推 1

else:

  num=7

size=[34,35,36,37,38,39,40,41]

     ②     

print('根据您的身高,推断您鞋的码数为:',size_h)

  1. (1) 请在横线处填入合适的代码。

     ② 

  2. (2) 如果需要对算出的脚长保留一位小数(四舍五入),表达式为(  )
    A . int(long*10+0.5) B . int(long*10+0.5)/10 C . int(long*100+0.5)/10 D . int(long*100+0.5)/100
以下程序段的执行结果是(     )

J=1:N=0

Do While N<3

    J=J*(J+1)

    N=N+1

Loop

Print N; J

A . 1   0 B . 3    3 C . 4    30 D . 3   42
有如下程序段:

For i=1 To 2

    For j=5 To i+1 Step-1

    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(1)到a(5)的值依次为“95,88,66,80,75”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(     )

A . 66,75,95,88, 80 B . 66,75,80,95,88 C . 95,88,66,80,75 D . 95,88,80,75,66
某算法流程图如图所示,若输入n值为30,则算法执行后输出k的值为(    )

A . 3 B . 5 C . 4 D . 2
小萌通过“问卷星”收集到一些学生数据,如图a所示。在按关键字“用户名”进行排序的过程中,对数据进行整理,删除重复数据,处理结果如图b所示。

  1. (1) 在数据整理时,常见的数据问题有(   )(多选,选填字母)。
    A . 数据缺失 B . 数据重复 C . 逻辑错误 D . 格式不一致
  2. (2) 实现上述功能的Python程序如下,请在划线处填入合适的代码。

    a=[]

    csv_file=open("xuehao.csv", "r", encoding='utf-8')

    flines=csv_file. readlines()  #将文件中所有数据按行读入flines中

    csv_file. close()           #关闭文件

     # 将每个数据行中的各项信息以“,”作为分隔符切割成字符串存入列表a中

    for line in flines:

       tmp=list(line. strip("\n"). split(","))

       a. append(tmp)

    n=len(a)

    i=1; m=n-1    #变量m表示删除重复数据后的实际数据个数

    while i<n:

       for j in range(m, i, -1):

         if :

           tmp=a[j]; a[j]=a[j-1]; a[j-1]=tmp

         elif a[j][4]==a[j-1][4]:

           a[j]=a[m]

          

       i+=1

    for i in range (m+1):

       print (a[i])

最近更新