4.3.2 if…elif…else语句的应用 知识点题库

以下程序段语句执行后,Y的值是(   )

X=16

If  X<0  then

 Y=abs(X)

Else

 Y=sqr(X)

End if

A . 4 B . 其他三项都不对 C . 16 D . 256
某 VB 程序段如下:

Dim a(1 To 6)As Integer

Randomize

a(1)=Int(Rnd*2)+1

For i=2 To 6

  a(i)=Int(Rnd*i)*2+1

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

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

  End If

Next i

执行该程序段后,数组元素a(1)到a(6)的值可能是(   )

A . 2,4,6,8,10,12 B . 1,1,3,7,12,23 C . 2,5,9,11,10,15 D . 1,3,15,16,20,23
如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下列算法即可获得一个回数:

⑴把该整数的数字顺序颠倒,求得该数的逆序数;

⑵将该整数和其对应的逆序数相加;

⑶若相加结果不是回数,则将结果作为新的整数,返回步骤⑴。

小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。

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

Private Sub Command1_Click()

   Dim t As String, a As Long, b As Long

   Dim count As Integer       ‘count用于存储回数猜想的验证次数

   t = Text1.Text

   count = 1

   Do While Check(t) = False And count <= 10

     a = Val(t)

           ①       

     c = a + b

     List1.AddItem Str(a) & " +" & Str(b) & " =" & Str(c)

     count = count + 1

     t = c

   Loop

   If Check(t) Then

      List1.AddItem  "验证成功!"

   Else

      List1.AddItem  "10次内未验证成功!"

   End If

End Sub

' 自定义函数Turn

Function Turn(x As String) As Long

   Dim s As String, i As Integer

   s = ""

   For i = Len(x) To 1 Step -1

      s = s & Mid(x, i, 1)

   Next i

   Turn =      ②        

End Function

‘自定义函数Check,检查x是否为回文数

Function Check(x As String) As Boolean

   Dim i As Integer

   Check = True

   For i = 1 To Len(x) \ 2 Step 1

      If Mid(x, i, 1) <>       ③        Then Check = False mid(x,len(x)+1-i,1)

   Next i

End Function

  1. (1) 程序代码中,自定义函数Turn(x)的功能是
  2. (2) 请在划线处填入合适代码。

     ② ③ 

有如下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
查找并删除重复数据的算法是基于顺序查找的优化,主要思路是把待查数据的起点元素设置成查找关键字,然后从后往前查找,通过结束时所停留的数据位置来判断查找结果(即结束时若停留在数据序列的起点,则表示数据序列中无重复数据;否则,存在重复数据,删除该数据后继续查找)。

编写VB程序,实现上述算法。程序功能如下:运行程序时,在列表框List1中显示数组a中的原始数据,并在列表框List2中输出去重后的数组a中的数据,即相同的数据仅保留一个。同时在标签Label1中显示删除的数据总个数,运行效果如图所示,程序代码如下:

Const maxn=10

Dim a(1 To maxn)As Integer

Private Sub Form_Load( )

´maxn个数据在数组a中,并在列表框List1中显示

End Sub

Private Sub Command1_Click( )

  Dim i As Integer, n As Integer       ‘n用于存储当前查找的数字长度

  Dim j As Integer, key As Integer       ‘key用于存储本次查找的关键字的数据位置

    key=1:n=maxn

    Do While key<=n

    i=n-1

    Do While       ‘①

        i=i-1

    Loop

    If i=key Then        ‘找到重复数据,删除;未找到,设定下一查找关键字

       key=key+1

    Else

      For j=i To n-1

          a(j)=a(j+1)

      Next j

      n=n-1

    End If

  Loop

  For i= 1To n

      List2.AddItem a(i)

  Next i

  Labell.Caption="共删除重复数据:"&___________&"个"

End Sub

  1. (1) 程序代码“Sub Form_Load( )”中,Load是(单选,填字母:A .属性名/B .事件名/C .方法名/D .类名)。
  2. (2) 程序代码中,加框处循环条件有误,请改正。
  3. (3) 请将程序代码中的画线处赋值语句补充完整。
  4. (4) 如图所示的原始数据中,重复数是“1,7,10”,该程序运行时,最先删除的重复数是
(约瑟夫问题)n个人围成一圈,从第1个人开始从1报数,数到3的人出圈;再由下一个人继续从1开始报数,数到3的人出圈……输出依次出圈的人的编号和最后一个留在圈里的人的编号。如输入n=8,则依次出圈的人的编号是3,6,1,5,2,8,4,最后留在圈内的是7号。

以下VB程序在a数组中保存了下一个要报数的人的编号,即若。(w)=p,则表示当第w个人报过数2后,下一个要报数的是第p号。程序在列表框Listl中输出了依次出圈的人的编号,在标签Label1中输出了最后剩下的人的编号。请完善程序。

Private Sub Command1_Click( )

  Dim i As Integer, n As Integer, w As Integer, num As Integer

  Dim a(1 To 100)As Integer, t As Integer

  n=Val(Text1.Text)

  For i=1 To n-1

      a(i)=i+1

  Next i

  a(n)=1

  w=n        ‘变量w表示当前检查的是第w号数组元素,即从第n号开始检查

  t=0       ‘变量t用以模拟报数

  Do While   ①   

      num=a(w)    ‘当前报数的人的编号

      t=t+1

      If t=3 Then

          List1.AddItem Str(num)

        a(w)=   ②   

        t=0

      Else

             ③   

      End If

  Loop

      Label1.Caption=Str(w)

End Sub

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

某数据存储算法如下:使用长度为n的一维数组h来存储m个不同的整数型数据(m<n),数据的存储位置t根据存储数据的值除n取余计算得到。例如使用长度为11的数组来存储67,45,1275,119,145,269,64,共7个数据,先存储第1个数据67,67 Mod 11=1,在第1个位置上目前没有数据,故存放在第1个位置上。第2个数据为45,45 Mod 11=1,而在第1个位置上已存有数据,那么查找下一位置有没有数据,现第2个位置上没有数据,故存放在第2个位置。在查找空位时,如果到了数组最后一个位置还没有空位,则从头继续查找,以此类推。举例数据存储结果如下表所示。

位置

0

1

2

3

4

5

6

7

8

9

10

数据

64

67

45

145

269

119

1275

  1. (1) 若按上述规则,再存储一个数据79,则应存储在第个位置。
  2. (2) 当n=97时,实现上述数据存储及相应数据查找的VB程序如下,运行结果如图所示,请在画线处填入合适的代码。

    Const n=97

    Dim d(0 To 96)As Integer,h(0 To 96)As Integer

    Dim m As Integer     ‘变量m为数据个数

    Private Sub Command1_Click( )      ‘数据存储

      Dim i As Integer, t As Integer

      ‘从数据库读取数据并先存储在数组d中,代码略

      List1.Clear

      For i=0 To n-1

          h(i)=-1          ‘数组元素初始化

      Next i

      For i=0 To m

             ①   

          Do While h(t)<>-1

              t=(t+1)Mod n

          Loop

          h(t)=d(i)

      Next i

      For i=0 To n-1

          List1. AddItem Str(i)&""& Str(h(i))

      Next i

    End Sub

    Private Sub Command2_Click( )    ‘数据查找

      Dim x As Integer, y As Integer

      x=Val(Text1.Text)

      y=x Mod n

      x=1

      Do While   ②   

          z=z+1

          y=(y+1)Mod n

      Loop

      If h(y)=x Then

          Label2.Caption= "共查找了 "&Str(z)&"次,在第"&Str(y)&"个位置找到"

      Else

          Label2.Caption="共查找了" &Str(z)&"次,没有找到"

      End If

    End Sub

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

  3. (3) 将数组h中的元素值初始化为一1表示的含义是
x的范围为(0 255),下列选项中,与语句"n=x\128"功能相同的是(    )
A . n=0 If x> 128 Then n= 1 B . n=0 If x<128 Then n=1 C . n= 1 If x<128 Then n=0 D . n=1 If x>128 Then n=0
有Visual Basic代码段如下:

s = Text1.Text : sum = 0

c = 1 : j = 0

For i = 1 to len(s)

    ch = Mid(s, i, 1)

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

        j = j + 1

    Else

        If c mod 2 = 1 then sum = sum + Val(Mid(s,i-j,j))

        j=0 : c = c + 1

    End If

Next i

Label1.Caption = Str(sum)

在文本框Text1中输入“20a20b1c29d9”,执行该段代码后,标签Label1中的结果是(   )

A . 70 B . 21 C . 30 D . 79
有如下VB程序段:

Dim i As Integer, sum As Integer, a(0 To 7) As Integer

Dim s As String , ch As String , num As String

s="2-3-4-5-6-7-0"

sum=1:num=""

For i=1 To Len(s)

    ch=Mid(s,i,1)

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

        num=num+ch

    Else

        sum=sum*Val(num)

        a(Val(num))=Val(num)

    End If

Next i

Text1.Text=Str(sum)

执行该程序段后,下列说法正确的是(  )

A . 文本框Text1中显示“0” B . 文本框Text1中显示“5040” C . 程序报错,提示“溢出” D . 程序报错,提示“下标越界”
某仓库物品代码格式为“X-XXX-XXXXX-Y”,其中“X"和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以……依次类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。用Python设计一个程序,输入物品代码,判断输入的代码中校验码是否正确,如果正确输出“正确”,否则输出“错误”。运行样例如下所示:

样例1:

输入: 2-163-91475-4

输出:正确

样例2:

输入: 2-163-91475-5

输出:错误

  1. (1) Python程序实现如下,请在划线处填入正确的代码:

    s=input("输入物品代码: ")

    a=[ ]

    for i in range(0, 13) :

        if

            a. append(int (s[i]))      #append( )函数用于在列表末尾添加新的对象

    sum=0

    for i in range(0, 9):

       

    sdm=sum%10

    if sdm== ydm :

        print("正确")

    else:

    print("错误" )

有如下VB程序段:

s=0:t=0

For i=1 To 5

    If a(i)-a(i+1)<t Then

        t=a(i)-a(i+l)

        s=s+1

    End If

Next i

数组元素a(1)到a(6)的值依次为“4,5,3,2,7,5”,执行该程序段后,变量s的值为(    )

A . 1 B . 2 C . 3 D . 4
以下VB 程序段执行后,输出的结果是(    )。

m=1

n=2

if true then print m else print n

A . 1 B . 2 C . 1 2 D . 2 1
随机生成正整数数组a,并将数组中各元素以金字塔显示,要求对金字塔每层中的数据排序处理,奇数行升序排列,偶数行降序排列,效果见下图。请为划线处选择合适的代码。(    )

 

Dim a(1 To 15) As Integer, num As Integer, s As String

'生成数组a,a(1)=73,a(2)=58, a(3)=62, a(4)=36…代码略

Private Sub Command1_Click()’对数组进行排序

    num = 5: k = 1: f = 1

    For i = 1 To num

        k = k + i

        For m = k - i To  ①         

            For n = k - i To 2 * k - 2 - i - m

                If     ②     Then t = a(n): a(n) = a(n + 1): a(n + 1) = t

            Next n

        Next m

        f = f * (-1)

    Next i

    '将处理后的数组,以金字塔形显示,代码略

End Sub

A . k-1   f * a(n) < f * a(n + 1) B . k-1   f * a(n) > f * a(n + 1) C . k-2   f * a(n) > f * a(n + 1) D . k-2   f * a(n) < f * a(n + 1)
有n个整数存放在数组a中,整数k1与k2且k1<k2。某程序段如下:

i = 1: L = 0: R = n + 1

Do While i < R

If a(i) < k1 Then

L = L + 1

If L <> i Then tt = a(i): a(i) = a(L): a(L) = tt

i = i + 1

ElseIf a(i) > k2 Then

R = R - 1

tt = a(i): a(i) = a(R): a(R) = tt

Else

i = i + 1

End If

Loop

则执行上述代码后,下列说法正确的是(   )

A . 数组a变成升序排列 B . a(L)<=k1 C . a(R)>=k2 D . a数组中大于等于k1小于等于k2的元素个数为R-L-1
以下Case语句中错误的是(    )
A . Case 0 To10 B . Case   is>10 C . Case  is>10  And  is<50 D . Case 3,5, is>10
有如下VB程序段:

k=1 :ch= Mid(s, 1,1)

For i=2 To Len(s)

    If k=0 Then

        ch = Mid(s,i,1):k= 1

    Else

        If ch = Mid(s,i,1) Then

            k=k+1

        Else

            k=k-1

    End If

Next i

变量s分别取下列值并运行程序段后,ch的值不为"Q"的是(    )

A . "QQTQT" B . "TQTTQ" C . "QTRTQ" D . "RTTQQ"
有如下VB程序段:

Dim a(0 To 10) As String

s= Text1.Text

a(0)= "": a(1)= Mid(s, 1, 1):t= 1

For i= 2 To Len(s)

     If t>= 1 And Mid(s, i, 1)= a(t) Then

         t=t- 1

     Else

         t=t+ 1: a(t)= Mid(s, i, 1)

     End If

Next i

运行程序段,在文本框Text1中输入以下字符串,运行后变量t的值与其它三项不同的是(    )

A . AABAB B . AAABA C . BAABA D . BBABA
用Python编辑器打开“Y:\123”下的文件“能力值.py”,进行以下操作并保存结果。

俗话说日有所进,月有所长,假设每个人的初始能值是1,经过一天的努力学习和工作后,能力会比之前增长1%。

如果周一到周五努力学习提升能力,而周末休息,且休息一天能力就降低1%。时通过取余运算来判断某一天是学习日还是休息日,如果余数是0或者6,那么这一天就是休息日;余数是其他数值时,余数是其他数值时,这一天是学习日。

请完善程序,计算两种情况下,一年后能力值增长情况。

#天天向上

dayup=1                             #设置dayup为能力值, factor为能力变化幅度

factor=0.01

for i in range(0,):

    dayup =  * (1+factor)

print("天天向上的能力值:%.2f" % dayup)

#五上二下

dayup=1

for i in range():

    if in [6, 0]:                   # 判断是否为休息日,是则能力下降;否则能力上升。

        dayup = dayup*(1-factor)

    else:

        dayup = dayup*()

print("向上5天向下2天的能力值:%.2f" % dayup)        #打印结果

甲乙双方进行一场球类比赛,一局计分的规则是:赢1球得1分,用“1”表示;输1球失1分,用“0”表示。当任一方得分大于等于6分,且领先对方2分及以上,领先方赢一局。如甲选手一局比赛数据为“101110101”,表示甲选手得6分失3分,局比分

小王用一个字符串记录了甲选手多局比赛数据,其中有一处错误,位于连续多个“0”的最后一个。为了找出错误,小王的处理方法如图a所示,对示例中疑似错误位置6和20分别修改数据,并统计每局比分。他编写了VB程序,功能如下:在窗体Form l的文本框Text l中输入记录数据,单击“分析”按钮Command 1,在列表框List 1中输出修改位置以及修改后每局的比分。程序运行界面如图b所示。

图a

图b

  1. (1) 下列对象中有Text属性的是(单选,填字母:A .Command 1/B .Form 1/C .Text 1)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command 1_Click( )

        Dim sp As String, s As String s       ‘s存储甲选手多局比赛的记录数据, 长度小于50

        Dim a(1 To 50)As Integer, e(1 To 20)As Integer

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

        Dim f1 As Integer, f2 As Integer

        s=Text 1.Text

        n=Len(s)

        For i=2 To n

            a(i)=Val(

        Next i

        m=0 : i=1

        Do While i<=n

            k=i

            Do While a(i)=0 And i<=n       找出疑似错误位置

                i=i+1

            Loop

            If  Then

                m=m+1:e(m)=i-1

            End If

            i=i+1

        Loop

        For i=1 To m       ‘对每个疑似错误位置分别修改数据,并统计每局比分

             f1=0 : f2=0

             k=e(1)

             a(k)=1

             sp="" & k &""

             For j=1 To n

                 If a(j)=1 Then f1=f1+1 Else f2=f2+1

                 If  Then

                     sp=sp & "/" & f1 &":" & f2

                     f1=0 : f2=0

                 End If

             Next j

             If f1+f2>0 Then sp=sp & "" & f1 & ":"& f2

             List 1.AddItem sp

            

        Next i

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
最近更新