4.4.4 循环控制的应用 知识点题库

阅读下列程序,请写出正确的运行结果

Dim i,j As Integer

s=0

For i=1 to 3

   for j=1 to 5

       s=s+1

   Next j

Next i

Print s

程序运行输出结果是:

有VB程序段如下:

Const n =6

Max = 0

For i = 1 To n

 d(i)= 1

 For j = 1 To i - 1

  If a(j)< a(i) And d(j)+ 1 > d(i) Then d(i)= d(i)+ 1

 Next j

 If d(i)> Max Then Max = d(i)

Next i

数组元素a(1)到a(6)的值依次为“2,40,15,1,25,37”,执行该程序段,变量max的值为(  )

A . 2 B . 3 C . 4 D . 5
  小明编写了一个字符串加密程序,功能如下:在文本框Text1中输入明文,单击“加密”按钮Command1后,在文本框Text2中显示加密后的密文,运行界面如图所示。加密算法如下:

1)将明文中每个字符用8位二进制ASCII码(不足八位的左端补0,凑足八位)表示;如“A”的二进制ASCII码值为01000001;

2)对8位二进制编码进行取反码(0变1,1变0)操作,如01000001的反码是10111110;

3)将8位二进制反码用2位十六进制表示,得到该字符的密文;

4)将每个字符的密文按照明文的倒序连接。

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

Private Sub Command1_Click()

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

Dim c As String, x As Integer, y As Integer

Dim d(1 To 8) As Integer  '数组d存储字符ASCII码二进制从左到右的各位数码

Dim mw As String          'mw存储密文

mw = ""

For i = 1 To Len(Text1.Text)

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

  For j = 1 To 8

             ‘I处

  Next j

  m = Asc(c)

  k = 8

  Do While   ‘II处

 d(k)=     ①      

     m = m \ 2

     k = k - 1

  Loop

  mw = btoh(d) + mw

Next i

Text2.Text = mw

End Sub

Function btoh(m() As Integer) As String

 ′自定义函数是将m数组中的二进制数转换成对应的十六进制数

Dim s As Integer, i As Integer

Dim str As String, ch As String

str = "0123456789ABCDEF"

s = 0: ch = ""

For i = 1 To 8

  s = s * 2 + m(i)

  If      ②       Then

     btoh =btoh+ Mid(str, s + 1, 1)

     s = 0

  End If

Next i

End Function

阅读分析程序代码,请回答下列问题:

  1. (1) 按照加密算法,字符“Z”的密文是
  2. (2) 请在划线处填入合适代码。

     ② 

  3. (3) 若I处方框内代码改成d(j)=0,则II处的方框内代码应改为:
为分析数组a中各元素依次变化的情况,进行如下定义:

·变化段:数组中相邻两个元素构成一个变化段。变化段有上升段(a(i)>a(i-1))、下降段(a(i)<a(i-1))和持平段(a(i)=a(i-1))。数组a中的n个元素可构成n-1个依次排列的变化段。

·波峰:从上升段转到下降段形成一个波峰。波峰的起点是峰顶前所有连续上升段中的第1个。终点是峰顶后所有连续下降段中的最后1个。

·对称波峰:上升段与下降段个数相同的波峰称为对称波峰。

图为一组数据的变化段及波峰示意图。

现要求统计数组a中各元素依次变化过程中“对称波峰”的个数,小李依据上述描述设计了如下VB程序,请回答下列问题:

  1. (1) 数组元素“1,4,3,3,2,5,8,7,8,3,4,7,9,6,3,1”依次变化过程中,“对称波峰”的个数为
  2. (2) 请在画线处填入合适的代码。

    Const n=20

    Dim a(1 To n)As Integer

    Private Sub Form_Load( )

    ´读取数据,并存储到数组a中。代码略

    End Sub

      Dim flag As Integer     ‘存储变化段的状态:1表示升,-1表示降,0表示平。

      Dim count As Integer      ‘存储对称波峰的个数

      Dim steps As Integer

      Dim i As Integer

      flag=0:steps=0:count=0

      For i=   ①   To n

        If a(i)>a(i-1)Then

          If IsSymPeak(flag, steps)Then count=count+1

          If flag=0 Or flag=-1 Then

             ②   

          Else

            steps=steps+1

          End If

          flag=1

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

          If IsSymPeak(flag, steps) Then count=count+1

          steps=0:flag=0

        Else

          steps=steps-1

          flag=-1

        End If

      Next i

      If IsSymPeak(flag, steps) Then count=count+1

      Text1. Text=Str(count)

    End Sub

    Function IsSymPeak(flag As Integer, steps As Integer) As Boolean

      If   ③   Then

        IsSymPeak=True

      Else

        IsSymPeak=False

      End If

    End Function

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

有VB程序段如下:

p = Val(Text1.Text)

t = 0: j = 2: flag = True

s = Text1.Text + "="

Do While p > 1 And flag

   If p Mod j = 0 Then

      t = t + 1

      p = p \ j

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

   Else

      If t = 1 Then flag = False

      t = 0: j = j + 1

   End If

   If p = 1 And t = 1 Then flag = False

Loop

If flag Then

   Text2.Text = Mid(s, 1, Len(s) - 1)

Else

   Text2.Text = Text1.Text + "不是漂亮数"

End If

执行该程序段,在文本框Text1中输入6,则文本框Text2中显示的内容为(    )

A . 6= 2* 3 B . 6= 2* 3* C . 6= 1* 2* 3 D . 6不是漂亮数
有如下 VB 程序段:

Dim i As Integer

Dim a(1 To 10) As Integer

a(1) = 1

For i = 2 To 10

    a(i) = a(i-1)*i

Next i

Text1.Text = Str(a(i))

运行该段程序后,出现的错误提示为(    )

A . 下标越界 B . 溢出 C . 子程序或函数未定义 D . 类型不匹配
有如下VB程序段,实现镜像数功能,若s的值为123456,则输出结果t为123456654321,代码如下:

s = 123456

i = 10: t = 0

Do While s > 0

      

Loop

Text1.Text = str(t)

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

①i = i * 100

②s = s \ 10

③t = t * 10 + s Mod 10 + (s Mod 10) * i

顺序正确的是(   )

A . ①③② B . ②③① C . ②①③ D . ③②①
下列VB程序功能为:先把数组中最小的元素放到中间位置,再把第二小的元素放到中间的后一个位置,然后把第三小的元素放到中间的前一个位置,以此类推。如数组元素a(1)到a(9)的值依次为72,61,3,95,39,38,64,65,98,程序运行后,数组元素a(1)到a(9)的值依次为98,72,64,39,3,38,61,65,95。

m = (1 + n) \ 2       ‘n为数组元素的个数,m为数组中间位置元素的下标

For i = 1 To n

    If a(i) < a(m) Then t = a(i): a(i) = a(m): a(m) = t

Next i

p = m: q = m

For i = 1 To n - 2

    If i Mod 2 = 1 Then

        k = q + 1: q = q + 1

    Else

        k = p - 1: p = p - 1

    End If

    pos = k

    For j = 1 To n

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

    Next j

    If pos > k Then

        t = a(pos): a(pos) = a(k): a(k) = t

    End If

Next i

上述程序段方框处的代码为(  )

A . j < p And j > q B . j > p Or j < q C . j < p Or j > q D . j > p And j < q
某排序算法,VB代码如下:

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

数组元素a(0)到a(5)依次为:“0,41,22,53,99,36”,经过该程序段处理后,数组元素a(3)的值为(   )

A . 36 B . 53 C . 41 D . 22
以下python程序段运行后,s的值是(   )

n=0

s=0

while  s<=10:

    n=n+3

    s=s+n

print(s)

A . 0 B . 3 C . 18 D . 30
小禾编写了一个VB程序,功能如下:在文本框Text1中输入英语文章,并在文本框Text2中输入要查找的英语单词,单击“开始查找”按钮Command1后,在文本框Text3中显示英语文章中出现该单词的次数,在文本框Text4中显示该单词在英语文章中两次出现的最大间距,程序运行界面如下图所示。请回答以下问题:

Private Sub Command1_Click()

    Dim a(1 To 1000) As Integer         '数组a存储文中出现该指定单词的各个位置

    Dim s, c, ch As String

    Dim n, max, i As Integer

    s = Text1.Text

       ①  

    n = 0

    max = 0

    For i = 1 To Len(s) - Len(c) + 1

        ch =    ②  

        If ch = c Then

            n = n + 1

               ③  

            If n >= 2 Then

                If a(n) - a(n - 1) - Len(c) > max Then max = a(n) - a(n - 1) - Len(c)

            End If

        End If

    Next i

    Text3.Text = Str(n)

    Text4.Text = Str(max)

End Sub

  1. (1) 该应用程序中共有个对象组成,分别属于类控件
  2. (2) 请将横线处的语句补充完整

     ② ③ 

下面程序的运行结果为

a=[ ]

for i in range(5):

a.append(i*i)

s=a[3]+a[4]

print (s)

星星设计了10*10的矩阵,如图所示,实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )

Dim a(1 To 100)As String

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(  ①  ) ="O"

        End lf

    Next j

Next i

For i= 1 To 100

    s=s +a(i)

    lf   ②   Then

        List1.Addltem s

        s = ""

    End lf

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
水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3=153。这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。

[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。

print ("三位数之内的水仙花是:")

for x in(100,1000):

b=x//100

s=(x//10)

g=

If x=(b**3 +s**3+g**3):

print(

某品牌手机第一年销量为20000台,假设平均每年的销量比上一年增加68%,请问几年后能使总销量达到60000台。下面的程序能实现上述的功能,请将缺失的代码补充完整。

total= every_year=20000

year=1

while :

    every_year + =

    total + = every_year

    year + = 1

print(year)

下列Python程序段运行的结果是

s = 0

i = 1

while i <= 100:

    if i % 10 != 0 :

        s+= i

        i+ =1

print(s) (       )

A . 4500 B . 4578 C . 5050 D . 6657
有一个加密/解密程序,其加密的算法是:将原文中每个字符的ASCII码加上该字符在原文中的位置数(设字符在原文中是第n个字符,则其位置数是n被10除的余数,当余数为0时,其位置数为10.例如,原文字符串为“meet me at sunset”,第一个字符“m”,其位置数为1,而“s”为第12个字符,其位置数是被10除的余数2,其余依次类推)作为密文字符的代码,再将密码字符逆序排列(例如ABCD,逆序排列为DCBA)即为密文。解密算法是加密算法的逆运算,运行效果如下图所示。

  1. (1) 如图所示,如果原文中字母“g”后面添加字母“h”,按“加密”按钮后,字母“h”对应的密文为:
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_ Click( )    '加密

        Dim enc As String, dec As String, i As Integer

        Dim s As String,n As Integer

        dec = Text1. Text

        For i=1 To Len(dec)

            s=

        n=i Mod 10

            If n=0 Then n=10

            enc =Chr(Asc(s)+n) & en

        Next i

        Text2. Text =enc

    End Sub

    Private Sub Command2_Click( )    '解密

        Dim enc As String, dec As String, i As Integer

        Dim n As Integer, s As String, p As Integer

        enc = Text2. Text

        n = Len( enc)

        For i =1To n

            s = Mid(enc, i, 1)

            P=

            If p =0 Then

            dec = Chr(Asc(s) -p) & dec .

        Next i

        Text1. Text = dec

    End sub

有如下 python 程序段:

a=[3,5,1,2,4]

min = a[0]

s = 0

for i in range(1,5):

  if a[i] < min:

    min = a[i]

    s = s + min print(s)

执行该程序段后,变量 s 的值为(     )

A . 1 B . 4 C . 6 D . 15
有n个从小到大排列的正整数依次存储在数组a中,另有m(m<n)个正整数存储在数组b中。现要求只保留上述n+m个数据中从小到大排列的前n个数据,并依次存入数组a中,其余数据被剔除。

小李为了解决该问题,首先结合数组a的有序性,找出a,b两个数组中要剔除的m个数据,再将数组b中保留的数据插入到数组a中。示例如下:

n=10,数组a:2,4,6,8,10,12,14,16,18,20

m=5,数组b:41 , 11,17 , 29,9

处理后的数组a:2,4,6,8,9 , 10,11 , 12,14,16

  1. (1) 若n=8,m=4,数组a的元素依次为“3,4,6,10,13,14,21,25”,数组b的元素依次为“3,18,7,15”,按上述要求剔除m个数据后,数组b中保留的数据个数为个。
  2. (2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

    Const n=1000,m=50

    Dim a(1 To n)As Integer, b(1 To m)As Integer

    Function getImax(k As Integer)As Integer

        ‘在数组元素b(1)~b(k)中找出值最大的元素,返回其下标,代码略

    End Function

    Private Sub Commandl_Click( )

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

        Dim na As Integer, nb As Integer, imax As Integer, mean As Integer

         ‘读取数据分别存入数组a、b,代码略

        na=n : nb=m

        imax=getImax(nb)

        For i=1 To m

            If a(na)<= Then

                b(imax)=b(nb)

                nb=nb-1

                If nb>0 Then imax=getImax(nb)

            Else

                na=na-1

            End If

        Next i

        Do While nb>0

            i=1 : j=na

            imax= getImax(nb)

        Do While i<=j

            mean =(i+j)\2

            If a(mean)<b(imax) Then i= mean +1 Else j=mean-1

        Loop

            For k=na To 1 Step-1

                

            Next k

            a(i+nb-1)=b(imax)

            b(imax)=b(nb)

            

            nb=nb-1

        Loop

        '输出数组a,代码略

    End Sub

某加密程序的代码如下:

def encrypt(code, key):

code_new = ''

for i in range(len(code)):

  code_new = code[(i+key)%len(code)] + code_new

  return code_new

  code = input('请输入加密字符串:')

  key = int(input('请输入偏移位数:'))

print(encrypt(code, key))

当输入“Python”和“3”后,程序输出的结果是 (    )

A .  mvqelk B .   sbwkrq C .    honPyt D .   tyPnoh
最近更新