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

某算法的部分流程图如图所示。执行这部分流程,依次输入3,4,-1,则输出s的值是(   )

图片_x0020_6

A . -2 B . -1 C . 0 D . 1
【加试题】有如下程序段:

Dim a(1 to 20) As Integer

For i=2 to 10

For j=2 to 20\i

a(i*j)=a(i*j) +1

Next j

Next i

该程序段运行后,数组a中元素值为0的个数是(  )

A . 3 B . 7 C . 9 D . 11
任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5, 10=5+5,12=5+7,98=19+79。

编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行效果如图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。

Function judge(x As Integer)As Boolean

 ‘函数judge的功能是判断整数x是不是素数,若是素数则返回True,否则返回False

 Dim j As Integer

 judge=True

 j=2

 Do While j<=x-1 And judge=True

If x Mod j=0 Then

judge=False

Else

j=j+1

End If

 Loop

End Function

Private Sub Command1_Click()

 Dim n As Integer, p As Integer, q As Integer, flag As Boolean

 n=Val(Text1.Text)

 p=1

 flag=False

 Do While  And p<n    ‘

 p=p+1

      ‘

If judge(p)And judge(q)Then

Text2.Text=“Yes”

flag=True

List1.AddItem Str(n)+“=”+Str(p)+“+”+Str(q)

  End If

 Loop

 If flag=False Then

Text2.Text=“No”

End Sub

杨氏矩阵数组的特征是每行从左到右是递增的,每列从上到下是递增的,如下图所示为一个4×4的杨氏矩阵。

1

5

7

9

4

6

10

15

8

11

12

19

14

16

18

21

已知数据逐行存储在数组a中,在杨氏矩阵数组中查找某数字是否存在的VB程序段如下:

cz = False : i = 1 : j = n

Do While j >= 1 And i <= n

   

    If key < a(s) Then

          ⑵ 

    ElseIf key > a(s) Then

          ⑶ 

    Else

      cz = True:Exit Do

    End If

Loop

方框中的代码由以下三部分组成:

①j = j - 1

②s = (i - 1) * n + j

③i = i + 1

代码顺序正确的选项是(  )

A . ①②③ B . ②①③ C . ②③① D . ③②①
给定一个字符串(由字母、空格、句末点号组成,单词中不出现其它符号),你需要反转字符串中每个单词的字符顺序且输出均为大写字母,同时仍保留单词的初始顺序、空格和句末点号。小李同学编写的“字符反转”VB程序如下,文本框Text1中输入的是反转前字符串,单击“反转”按钮后,在文本Text2中输出字符串反转结果,程序运行界面如图所示。

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

    Private Sub Command1_Click()

    Dim a(1 To 20)As String

    Dim n,m,i,j As Integer

    Dims,s1,s2 As String

    s1=Text1. Text:n=Len(s1)

    m=0:s=""

    For i=1 To n

        If Mid(s1,i,1)="" Or Mid(s1,i,1)="." Then

           m=m+1

           a(m)=s

           s=""

         Else

           

         End If

    Next i

    For j=1 To m

         n=Len(a(j))

         For k=1 To n

           

            If t﹥="a" And t<="z" Then

             

                s2=s2+t

            Else

                s2=s2+t

            End If

        Next k

        Text2. Text=Text2. Text+s2

        s2=" "

    Next j

    Text2. Text=Text2. Text & "."

    End Sub

  2. (2) 观察程序运行界面和阅读下面程序可知,原字符串输入“ShanShui LianMeng”单击“反转”按钮的则反转结果输出
小红打算用VB程序来查找数组a中下降数列的方法,其算法思想描述如下:

1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)开始为数组a第1个元素;

2)加入方法:将a(i)与数组b中的每个元素依次逐个比较:若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中,并存储在c数组的c(j)中;

3)若数组a各元素的值为:34,54,3,76,2,3时,则3个下降数列分别为:

“34,3,2”,“54,3”,“76”。

程序运行界面如下图所示:

依据上述描述设计了如下VB程序。请回答下列问题:

  1. (1) 若数组a的值是:“145,34,2,134,12”,数组b(1)的值是
  2. (2) 请在划线处填入合适的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Private Sub Form_Load()

        '读取n个数据,依次存储到a(1)、a(2)、……a(n)中,代码略

    End Sub

    Private Sub Command1_Click()

    Dim b(1 To n) As Integer   '存储数列最小的值

    Dim c(1 To n) As String    '存储下降数列

    Dim i As Integer

    Dim j As Integer

    Dim bn As Integer          '存储下降数列个数

      b(1) = a(1)

      bn = 1

      c(1) = Str(a(1))

      For i =

         For j = 1 To bn

           If a(i) < b(j) Then

              b(j) = a(i)

            

              Exit For

           End If

        Next j

        If j > bn Then

           bn = bn + 1

          

           c(bn) = Str(a(i))

        End If

      Next i

    For i = 1 To bn

         List1.AddItem c(i)

    Next i

    Text2.Text = "数列中共有" + Str(bn) + "个下降序列"

    End Sub

有如下程序段

Dim a(1 To 6) As String i = 6

Text1.Text = ""

Do While i > 1

    k = i

    For j = 1 To i - 1

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

    Next j

    tmp = a(k): a(k) = a(i): a(i) = tmp

    Text1.Text = a(i)

    i = i - 1

Loop

其中数据元素 a(1)到a(6)的值依次为“12”、“34”、“8”、“9”、“77”、“23”,执行该程序段后,文本框Text1中显示的内容为(   )

A . 9 B . 8 C . 12 D . 23
如果我国人口每年以平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。在此题中可以用(   )选项补充代码解决问题。(x代表年,p代表人口)

图片_x0020_100011

A . 图片_x0020_100012 B . 图片_x0020_100013 C . 图片_x0020_100014 D . 以上都不正确
有以下Visual Basic程序段:

s = 0 : i = 100        ‘①

Do While i >= 0     ‘②

    i = i + 2          ‘③

    s = s + i         ‘④

Loop

Text1.text=str(s)

执行这部分流程,发现其违背了算法的“有穷性”特征,下列修改方案正确的是(  )

A . 将①处改为i=0 B . 将②处改为s>=0 C . 将③处改为i=i-2 D . 将④处改为s=s-i
一个含有n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了[1,n-1]之间的所有整数,则称之为一组“完美跳数”。小余制作了验证完美跳数的VB程序,功能如下:在文本框Text1中输入一组以逗号分隔且以逗号结尾的整数数组,单击“验证”按钮Command1,在标签Label1中显示验证结果,运行界面如图所示。

Private Sub Command1_Click()

    Dim n As Integer, i As Integer, j As Integer

    Dim a(1 To 100) As Integer, b(1 To 100) As Integer Dim s As String, chr As String, temp As String

    s = Text1.Text

    i = 1: n = 0

    Do While i <= Len(s)

        ch = Mid(s, i, 1)

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

            temp = temp + ch

        Else

            n = n + 1

               ①   

            temp = ""

        End If

        i = i + 1

    Loop

    For i = 2 To n

           ②    

    Next i

    For i = 1 To n - 2

        For j =

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

                t = b(j): b(j) = b(j - 1): b(j - 1) = t

            End If

        Next j

    Next i

    For i = 1 To n - 1

        If b(i) <> i Then Exit For

    Next i

    If i = n Then Label1.Caption = "完美跳数" Else Label1.Caption = "非完美跳数"

End Sub

  1. (1) 观察程序界面,具有Caption属性的对象有个。(填个数)
  2. (2) 请在上述程序的划线处填上合适的代码。

     ② 

  3. (3) 上述程序加框处代码有误,请改正。
有如下VB 程序段:

c =0: k = 1

For i = 2 To 10

    If i Mod 2 <> 0 And a(k) < a(i) Then

        k = i

        c = c + 1

    End If

Next i

数组元素a(1)到a(10)的值依次为“12, 33, 14, 6, 7, 23, 25, 37, 34, 40”,执行该程序段后,变量k和c的值分别为(    )

A . 9 3 B . 10 3 C . 5 1 D . 4 2
星星设计了10*10的矩阵,如下图所示:

实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )
Dim a(1 To 100) As Sting

For i= 1 To 10

    For j=1 To 10

        If i=j Or i Mod 10=0 Or i Mod 10= 1

        Then

            a(  ①  )="●"

        Else

            a(  ①  )="○"

        EndIf

    Next j

Next i

For i= 1 To 100

    s=s+ a(i)

    If   ②   Then

        List1.Addltem s

    End If

Next i

A . ①(j-1)*10+i                     ②i mod 10=1 B . ①(i-1)*10+ j                    ②i mod 10=1 C . ①(j-1)*10+ i                   ②i mod 10=0 D . ①(i- 1)*10+j                    ②i mod 10=0
有VB程序段如下:

Dim a(1 To 6) As Integer, i As Integer

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

For i=2 To 6

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

    If i Mod2=0 Then a(i) = a(i) + a(i) Mod 2

Next i

程序运行后,a(1)-a(6)中可能的值是(     )

A . 95  92  88  86  86  84 B . 95  92  88  87  86  84 C . 95  92  88  86  84  85 D . 100  92  88  86  86  84
在python中,运行下列程序,正确的结果是(   )

x=1

while x>0:

    x=x+1

print( x)

A . 1 B . 1 2 3 4 5 6 7 8 9…… C . 无输出 D . 100
下面程序运行之后的结构是(   )

a=[ ]

for i in range(5):

a.append(i*i)

s=a[3]+a[4]

print (s)

A . 10 B . 12 C . 7 D . 25
完善以下程序代码完成下题。

程序描述:2公里(包括2公里)内,起步价为5元,超过2公里部分(不足整公里的,向上取整),每公里1.6元。

代码如下:

Import   ①    #引用math库

s=  ②  (input("请输入你要去目的地距离出发点的公里数:))

If  ③  :  #2公里(包括2公里)内

   cost =5

else:

  cost = 5+math.ceil(s-2) *1.6

print("你的打的费用是", cost,“元)

①处的语句是,②处的语句是,③处的语句是

①A.math    B.Numpy    C.time    D.Matplotlib

②A.Float    B.Int    C.str    D.Math

③A.s≤2    B.s<=2    C.s>2    D.s≥2

在窗体上有一个命令按钮(Command1),单击Command1产生50个10到100的随机数统计其中能被6整除的个数,并将结果在窗体上打印出来。代码如下,请补充完善。

Private Sub Command1_Click()

    Dim n As Integer,i As Integer, count As Integer

    Randomize

    Print"本次随机产生10到100且能被6整除的数是:";

    For i = 1 To 50

        n=

        IfThen

            Print n;

            count =

        End If

    Next i

    Print“共”;count; "个"

End Sub

有趣的乘法:输入一个个位数不是5的奇数p,寻找一个整数s,使得p×s = 1111...1(每位数字均为1),要求输出整数s及它们乘积中1的个数(即乘积有几个1构成)。例如,当p=13时,13*8547=111111,因此整数s为8547,乘积由6个1构成;当p=23时,整数s为48309178743961352657,乘积由22个1构成。

算法思想:

首先生成一个比p大的全1数a,如果a能整除p,则算法结束,否则继续扩大a的位数,如此继续,直至a整除p。

程序运行界面如下图所示,在文本框Text1中输入整数p,单击“计算”按钮,在文本框Text2中输出整数s,在文本框Text3中输出乘积中1的个数。

小明依据上述描述设计如下VB程序。请回答下列问题:

  1. (1) 当p=3时,整数s为
  2. (2) 请在划线处填入合适的语句。

    Private Sub Command1_Click()

        Dim p As Long, a As Long, b As Long, c As Long, n As Long

        Dim s As String  '存放整数s,因为该数较大,因此采用字符串存储

        Do While True   '判断输入的整数p是否为个位不是5的奇数

            p = Val(Text1.Text)

            If p Mod 2 < > 0 And p Mod 5 < > 0 Then Exit Do

        Loop

        a = 0

        n = 0

        Do While a < p

            

            n = n + 1

        Loop

        c = a Mod p

        s = Str(a \ p)

        Do While c < > 0

            a = c * 10 + 1

            

            s = s & b

            n = n + 1

            

        Loop

        Text2.Text = s

        Text3.Text = Str(n)

    End Sub

用python编辑器打开“Y:\94”下的文件“判断BMI.py”,进行以下操作并保存结果。

⑴请填空,完善该程序,实现功能:输入身高和体重,计算出体重指数BMI的值。体重计指数的计算方法:体重÷(身高*身高),说明:体重的单位为千克,身高的单位为米。

如果体重指数BMI范围是18.5-23.9,输出符合标准,否则不符合标准。

⑵编写完成后,原名保存并关闭应用软件。

注:程序修改时,请把下划线及序号删除;不能删除注释语句。

    #请删除序号及下划线,填写正确的代码,使程序完善。

height=float(("请输入你的身高(米):"))

weight=float(("请输入你的体重(千克):"))

BMI=

if :

    print("你的体重指数BMI为:",BMI,"符合标准!")

else:

print("你的体重指数BMI为:",BMI,"不符合标准!")

某手机APP程序为了增加程序热度,采用“签到换积分得奖品”的形式来吸引用户使用。签到积分的规则为:第1天签到得1分,第2天签到得2分,第3天签到得3分,…第7天及7天以上签到得7分;一旦中途漏签,签到积分从1分开始计算。如下图所示,签到获得的总积分为14分。

现利用“0”、“1”记录签到情况,其中“1”表示正常签到,“0”表示断签,输出获得的总积分数。例如,上图输入可以表示为“101111011”,输出结果为 14 分。

实现上述功能的程序如下,请回答下列问题:

  1. (1) 若签到记录为“100111110111”,则获得的总积分为
  2. (2) 根据题意和程序,本题主要使用的算法控制结构为(   )。(单选,填字母)
    A . 顺序结构 B . 分支结构 C . 循环结构
  3. (3) 为实现上述功能,请在划线处填入合适的代码。

    s=input("输入签到情况:")

    x=0

    c=1

    for i in range(len(s)):

      if s[i]=="0":

       

      elif :

        x=x+c

        c=c+1

      else:

        x=x+7

    print(x)