第二章 算法与问题解决 知识点题库

将输入的字符连接成字符串,直到输入-1为止(输入字符保存在C变量中),如果依次输入以下字符:      3,S,2,D,1,-2,-1,f,-1

则最后得到的字符串是:(   )

A . ” 3S 2D 1-2-1f-1” B . ”3S 2D 1” C . ”3S 2D 1-2” D . ”3S 2D 1-2-1”
【加试题】一个酵母细胞每10分钟分裂为2个,在下一个10分钟,就有4个细胞,然后,8个、16个、……。一个酵母细胞,经过多少分钟后数目超过100个。解决此问题的部分算法流程图如图所示:

空白矩形框中应该填入的是(   )

A . x←x^2 B . x←x*x C . x←x/2 D . x←x*2
某算法的部分流程图如图所示。输入n的值为100执行这部分流程后,输出的值为(  )

A . 2,2,5,5 B . 1,2,2,5,5 C . 1,4,5,5 D . 1,2,5,10
有如下Visual Basic程序:

Private Sub Command1_Click()

  Dim sum As  Double, x As Double

  sum=0

  n=0

  For i=1 To 5

     x=n/i

     n=n+1

     sum=sum+x

  Next i

End Sub

该程序计算了一个表达式的值,这个表达式是(  )

A . 1/2+2/3+3/4+4/5 B . 1+1/2+2/3+3/4 C . 1+1/2+2/3+3/4+4/5 D . 1+1/2+1/3+1/4+1/5
在Visual Basic中程序段是计算(  )公式的

 s=0

   For i=1 To 10

     t=1

     for j=1 to i

t=t*j

     next j

     s=s+t

   Next i

A . s=1+2+3+4+5+6+7+8+9+10 B . s=1*2*3*4*5*6*7*8*9*10 C . s=1!+2!+3!+4!+5!+6!+7!+8!+9!+10!  D . s=1+2*3+3*4+4*5+5*6+6*7+7*8+8*9+9*10
某算法的部分流程如下图所示:

若流程执行时,输入x的值为13,那么输出的依次是(  )

A . 1 1 0 1 B . 1 0 1 1 C . 0 0 1 0 D . 0 1 0 0
某算法部分流程图如图所示。执行这部分流程,依次输入7、-5、12、0,则输出值是(  )

A . 12 B . 17 C . -20 D . 5
如下VB程序段:

x=Val(Text1.Text)

If x>3 Then

    If x<=6 Then y=2*x 

    Else y=3*x

Else

y=4*x

End If

Print y

若程序运行时在文本框Text1中输入6,则y的值是 (  )

A . 24 B . 18 C . 12 D . 6
已知数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。小王设计了一个模拟碰撞的小球的程序,其功能为:在文本框Text1、Text2和Text3中分别输入线段长度L、小球数量n以及运动时间t,在文本框Text4中输入n个小球的初始坐标位置,单击“求解”按钮Command1,计算t秒之后,各个小球的位置,并在标签框Label5上显示结果。

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

    Private Sub Command1_Click()

        Dim n As Integer, L As Integer, t As Integer

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

        Dim s As String, result As String

        Dim a(1 To 50) As Integer, dir(1 To 50) As Integer

        L = Val(Text1.Text): n = Val(Text2.Text): t = Val(Text3.Text) s = Text4.Text

        s = s + ".": tmp = 0: k=0

        For i = 1 To Len(s)

            ch = Mid(s, i, 1)

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

                tmp = tmp * 10 + Val(ch)

            Else

                k = k + 1

                a(k) = tmp: dir(k) = 1

                tmp = 0

            End If

        Next i

        For i = 1 To t

           For j = 1 To n

                IfThen dir(j) = -dir(j)

                Else

                    For c = 1 To n

                        IfThen dir(c) = (-1) * dir(c)

                        dir(j) = (-1) * dir(j)

                    End If

                Next c

            End If

           

        Next j

        Next i

        For i = 1 To n

            result = result + Str(a(i))

        Next i

        Label5.Caption = Str(t) + "秒后小球的位置为:" + result

    End Sub

  2. (2) 若文本框Text3中输入的内容为“4”,单击“求解”按钮后,在标签框Label5中显示的结果为
编写“提取数字”程序,实现如下功能:在文本框Text1中输入文本信息,点击“提取”按钮Command1,将文本信息中的数字以“,”间隔输出到文本框Text2中。程序运行界面如图所示。

  1. (1) 观察界面,程序中未使用到的控件是(填字母:A . /B . / C . / D .   )
  2. (2) 根据题意,请将划线处代码补充完整。

    Private Sub Command1_Click()

      Dim zf As String, tmp As String

      Dim s As String, i As Integer, ch As String

     

      tmp = ""

      s = ""

      For i = 1 To Len(zf)

        ch = Mid(zf, i, 1)

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

         

        ElseIf tmp <> "" Then

          s = s + tmp + ","

          tmp = ""

        End If

      Next i

     

      Text2.Text = s

    End Sub

  3. (3) 当输入的文本信息如图所示,若删除加框代码,则文本框Text2中显示的内容为
有如下VB程序:

Private Sub Command1_Click ( )

Dim t As Long, s As string

s = Text1. Text

For i = 1 To Len (s)

    s = Mid(Text1. Text, i, 1)

    If s > = “0” s < = “9” Then

        t = t * 10 + Va1 (s)

    ElseIF s > = “a” And s< = “z” Then

        t = 10

    End If

Next i

Text2. Text = Str(t)

End Sub

运行该程序,在文本框Text1中输入“2018 Iphone7”,单击命令按钮Command1后,文本框Text2中显示的内容是(  )

A . 2018 B . 107 C . 20187 D . 7
执行如图所示的程序段后,输出s的值是(  )

s=0

For k=1 To 5

s=s * k

Next k

Print s

A . 120 B . 0 C . 15 D . 1
有如下 VB 程序段:

m = Int(Rnd * 4 + 2)

For i = 1 To 6 - m

  For j = 1 To 6 - i

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

      t = a(j): a(j) = a(j + 1): a(j + 1) = t

    End If

  Next j

Next i

数组元素a(1)到 a(6)的值依次为“49,45,5,61,42,71”,执行该程序段后,a(1)~a(6)各元素值不可能的是(         )

A .  61,49,71,45,42,5 B . 49,45,61,42,71,5 C . 49,61,45,71,42,5 D . 71,61,49,45,42,5
下列关于算法的叙述,正确的是(    )。
A . 解决一个问题的算法只有一种 B . 有穷性是算法的基本特征之一 C . 可行性不属于算法基本特征 D . 算法对程序设计没有任何作用
根据算法的特征,下面描述正确的是:(   )
A . 一个算法有0个或多个输入 B . 一个算法可以有0个输出 C . 算法步骤可以无限 D . 算法的每个步骤都具有确定的含义。
阅读以下“辗转相除法”的程序代码,运行结果为:

a=98

b=63

r=a%b

while r!=0:

    a=b

    print('a的值是',a)

    b=r

    print('b的值是',b)

    r=a % b

print('r的值是',r)

有如下VB程序段:

Dim a As Integer, b As Integer

a=Len("China")

b=a-2

If a Mod b=2 Then a=a^2 Else a=b^2

该程序段运行后,a的值为(  )

A . 3 B . 5 C . 9 D . 25
日本数学家谷角静夫在研究自然数时发现一个规律:对于任意一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。按此做法经过有限次的运算后,总可以得到自然数1。人们把谷角静夫的这一发现叫作“谷角猜想”,请用合适的方式来描述验证谷角猜想的算法。
已知S=1+2+3+....+N,找出一个最大整数N,使得S<3000。 编写程序,解决此问题,最合适的程序结构是(    )
A . 环型结构 B . 顺序结构 C . 选择结构 D . 循环结构
学校历届校友的海量数据存储在校网络中心服务器中(共10000条,无重复数据),某管理员因为误操作删除了一位校友的ID号(8位整数)信息,恰好在备份数据库中保存了一份所有人员ID号的文件(无重复数据,无序)。参考流程图阅读下列快速找出被误删的ID号程序代码

关于异或,下列选择错误的是(    )

A . target=target^int(line)是异或运算 B . 异或应用于逻辑运算,其运算法则为:0^0=0,1^0=1,0^1=1,1^1=0 C . 0异或任何数=任何数,1异或任何数=任何数取反,任何数异或自己=把自己置0 D . 以上都不对