算法的控制结构 知识点题库

【加试题】下列程序用于计算s=1*2+3*4+5*6+7*8+9*10,请问划线处分别为(   )
s=0
for  k = 1  to  10  step     
s = s +         
next  k
A . 1 ,k B . 2 ,k C . 1,k*(k+1) D . 2,k*(k+1)
【加试题】有如下程序段:For i =1 To 2
   For j = 1 To 6 –i
     If a(j) <a(j +1 ) Then
        k =a(j):a(j)=a(j+1):a(j+1) =k
     End   If
  Next  j
Next  i
数组元素a(1)到a(6)的值依次为“71,54,58,29,31,78”,经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为(   )
A . 29,31,54,58,71,78 B . 78,71,58,54,31,29 C . 54,29,31,58,71,78 D . 71,58,54,78,31,29   
有如下程序段:

i = 1

Do While i <= 5

      If i = 0 or a(i - 1) <= a(i) Then

        i = i + 1

      Else

        t = a(i): a(i) = a(i - 1): a(i - 1) = t

        i = i - 1

      End If

Loop

For i = 1 To 5

      List2.AddItem  a(i)

Next i

数组元素a(0)到a(5)的值依次为“0,71,22,48,79,27”,经过该程序段“加工”后,数组元素a(4)的值为(   )

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


  1. (1) 在设计程序界面时,应使用图b所示“控制工具箱”中的(填写相应编码)添加“生成”按钮。
  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 . 执行次数小于等于
某算法的部分流程图如图所示。执行该算法,依次输入3,5,7,9,11,12后变量m的值是(  )

A . 15 B . 9 C . 6 D . 5
如下VB程序段:

x = InputBox("输入x的值:")

If x > 3 Then

   If x <= 6 Then

     y = 2 * x

   Else

     y = 3 * x

   End If

Else

   y = 4 * x

End If

Print y若x、y均是整型变量,程序运行并输入6,则y的值是(   )

A . 24 B . 18 C . 12 D . 6
观察图2所示的流程图(计算100以内自然数的和),回答以下问题。

  1. (1) 根据题意完善流程图。
  2. (2) 用Visual Basic语言写出流程图对应的程序代码。
有如下VB程序段:

Dim a(l To 100) As String

Private Sub Commandl_Click()

  Dim c As Integer, t As String, ans As String

  s = Textl. Text

  k = Val(Text2. Text)

  ans =“”

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

    c = c + 1

    a(c) = Mid(s, i, 1) + Mid(s, i + k + 1, 1)

    If check(c) Then

      ans = ans + a(c) + ","

    Else

      c = c - 1

    End If

  Next i

  Text3. Text = ans

End Sub

Function check(k As Integer) As Boolean

  Dim i As Integer

  check = True

  For i = 1 To k - 1

    If a(i) = a(k) Then check = False: Exit For

  Next i

End Function

若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是(  )

A . 若在文本框Text1中输入“ZGBG”,Text2中输入“0”,则Text3中显示“ZG,GB,BG” B . 若在文本框Text1中输入“CCAA”,Text2中输入“1”,则程序运行结束时变量c的值为2 C . 将数组a的定义语句改为“Dim a(1 To 9) As String”,程序依然能够正确运行 D . 若a(1)到a(4)的值为“AB”,“AC” ,“BC” ,“AC”,则调用函数check(4)的结果为False
有如下图所示的流程图,根据此流程图可知,最后s的值为(   )

A . 10 B . 32 C . 46 D . 94
有10个数据23、15、51、36、78、47、39、9、88、96依次存放在数组a(1 To 10)中,使用如下程序段找出最大值:

   max=a(1)

   For i=2 To 10

  

   Next i

当虚线框内的语句刚好执行完第6次后(此时循环变量i的值为7),变量max的值是(  )

A . 23 B . 39 C . 78 D . 96
下面程序段用于计算分段函数 的值,不正确的是(  )
A . If x<0 Then  y=0 Else If x<1 Then  y=1 Else  y=x End If B . If x<0 Then  y=0 Else  If x<1 Then   y=1  Else   y=x  End If End If C . If x<0 Then y=0 If x<1 Then y=1 If x>=1 Then y=x D . If x<0 Then y=0 If x>=0 and x<1 Then y=1 If x>=1 Then y=x
某VB程序段如下:

i=1:j=10:temp=a(5)

Do While a(j)>temp

j=j-1

Loop

Do While a(i)<temp

i=i+1

Loop

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

数组元素a⑴到a(10)的值依次为“36 91 36 17 93 99 2 9 97 97”,执行该程序段后,a(5)的值为(  )

A . 93 B . 9 C . 36 D . 97
某算法的部分流程图如图所示。执行这部分流程后,变量S和a的值分别为(  )

A . 3和3 B . 3和5 C . 5和3 D . 5和15 
有如下VB程序段:

For i= 1 To 8

    a(i) =Int(Rnd*2)

Next i

sum= 0

For i=1 To 8 Step 3

    For j=i To 8

        a(j)=1-a(j)

    Next j

    sum=sum+a(i)

Next i

Text 1.Text=Str(sum)

执行该程序段后,文本框Text 1中显示的内容不可能是(  )

A . 0 B . 2 C . 3 D . 4
某算法的部分流程图如图所示,执行这部分流程,变量s的值为(  )

A . 10 B . 24 C . 6 D . 23
设某汉字由7×7的0、1点阵图案组成。依照以下规则生成压缩码:连续-组数值,从汉字点阵图案的第一行第一个符号开始计算,按书写顺序由左到右,从上到下。压缩码第一个数表示起始的数字(例如0),第二个数表示连续有几个0,第三个数表示接下来连续有几个1,第四个数表示接下来连续有几个0,第五个数表示接下来连续有几个1,以此类推……

例如,以下汉字点阵图案:

0001000

0001000

0001111

0001000

0001000

0001000

1111111

对应的压缩码是031616431616137,表示开始数字是0,有3个,接下来1个1,6个0,1个1……

  1. (1) 修改程序中的错误。

    Private Sub Commandl_Click()

    Dim code As String,c As Integer,res As String,k As Integer

    code=Text 1.Text

    k=0

    res=""

    c=Val(Mid(code,1,1))

    For i=2 To Len(code)  

      For j=1 To     ‘①

          res=res +Str(c)

          k= k+1

          If k=7 Then

            List1.AddItem res

            k=0

            res=""

          End If

      Next j

      c=    ‘②

    Next i

    End Sub

  2. (2) 现给出如下点阵图:

    则压缩码为

有如下VB程序段:

Dim a(1 To 5) As Integer

a(1) = 1

For i = 2 To 5

 a(i) = Int(Rnd( ) * 3) + 3

Next i

For i = 2 To 5

 If a(i) Mod 2 = 1 Then

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

 Else

 a(i) = a(i) / 2

 End If

Next i

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

A . 1,2,6,10,13 B . 1,4,9,2,7 C . 1,5,8,15,22 D . 1,2,5,11,1
阅读如下图程序,完成填空:

  1. (1) 本程序中使用了2个变量,变量名称分别是,变量的数据类型分别是
  2. (2) 本程序的基本结构是,使用了语句来实现这个结构。
  3. (3) 本程序中使用了2个关系式,分别是:
  4. (4) 本程序文件名称为,保存位置为
某商场促销打折,折扣规定如下:消费500元以内的打8.8折;满500元(含500元)的打8折,满1000元及以上的打7折。用算法描述这一消费规定,合适的算法控制结构是(    )
A . 顺序结构 B . 分支结构 C . 循环结构 D . 树形结构
有部分流程图结构如图,其算法结构属于(     )

A . 顺序结构 B . 重复结构 C . 分支结构 D . 循环结构