4.3 运用选择结构描述问题求解过程 知识点题库

有如下VB程序段:

For i = 4 To 3 Step -1

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

 tmp = a(i)

 For j = i-1 To 1 Step -1

If tmp > a(j) Then Exit For

a(j+1) = a(j)

 Next j

  a(j+1) = tmp

End If

Next i

数组元素 a(1)到 a(6)的值依次为“19,8,96,92,85,88”,经过该程序段“加工”后,数组元素 a(1)到 a(6)的值依次为(  )

A . 8,19,92,96,85,88 B . 8,19,85,88,92,96 C . 19,8,92,96,85,88 D . 19,8,85,92,96,88
某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:

①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为 1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;

②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。

最后把所得到的字符连接起来就是密文。

例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。

该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。

_x0000_i1034

请回答以下问题:

  1. (1) 如果密钥为“bc”,字符“d”加密后的密文为:(字母“a”的 ASCII 码为97)
  2. (2) 请完善以下程序代码。

    Private Sub Command1_Click()

      Dim s As String, sn As String

      Dim i As Integer, t As Integer, u As Integer

      Dim p As Integer, g As Integer

      sn = ""

      For i = 1 To Len(Text1.Text)

        t = Asc(Mid(Text1.Text, i, 1))

        If t >= Asc("a") Then

          g = Asc("a")

        Else

          g = Asc("A")

        End If

        u = Asc(Mid(Text2.Text, (i - 1) Mod Len(Text2.Text) + 1, 1))

        p =

        t = t - g

        If i Mod 2 = 1 Then

          t = (t + p) Mod 26

        Else

          t =

        End If

        sn = sn + Chr(t + g)

      Next i

      Text3.Text = sn

    End Sub

    Function txor(x As Integer, y As Integer) As Integer    'x、y求异或并返回十进制

      Dim a As Integer, b As Integer, r As Integer, i As Integer

      a = x: b = y

      r = 1

      For i = 1 To 7

        If a Mod 2 <> b Mod 2 Then

        a = a \ 2

        b = b \ 2

        r = r * 2

      Next   i

    End Function

李雷收到了朋友发给他的一封奇怪的邮件,里面有段内容是由一些数字和符号组成的,信上说了这段内容是加密后的内容,并给出了具体的加密方法(假定原文的英文字母都是大写的),具体方法如下:

①“A”变为一个1到100内的随机数*27+1,“B”变成一个1到100以内的随机数*27+2,…,“Z”变为一个1到100以内的随机数*27+26;

②每个字母变为数字后会加一个“一”用来分割数字;

③其他空格和标点字符都按原来的表示。

李雷用VB编写了一个解密程序,功能如下:将邮件中密文的内容复制到文本框Text1中,点击“解密”按钮Command1后,程序会解密密文并将解密后的内容显示在文本框Text2中,程序运行界面如图所示。

  1. (1) 根据描述,若密文为“1905-1442-”,则表示的是
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dims As String, yw As String, t As String

      Dim Value As Integer

      s=Text1.Text

      Value=0

      yw=""

      For i=1 To Len(s)

        t=     ①   

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

            Value=Value *10+Val(t)

        Else If t="-" Then

            yw=yw+Chr(Asc("A")+Value Mod 27-1)

               ②   

        Else

            yw=yw+t

        End If

      Next i

      Text2. Text=yw

    End Sub

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

  已知数组a中的元素按非递减有序排列,在程序运行时显示在Text1中。编写程序实现如下功能:删除数组的重复元素,并更新数组的长度,在Text2输出新的数组元素值。程序运行界面如图所示。

  1. (1) 要是程序运行时,窗体Form1标题立即立即显示为“删除重复数组元素”,可在(单 选:A . Form_Load()/B . Form_click()/C . Command1_Click())事件过程中添Form1.Caption=”删除重复数组元素”语句来实现。
  2. (2) 为实现上述功能的VB程序如下,请在划线处补充缺失的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Dim lena As Integer

    '数组a的实际长度

    Dim s As String

    Private Sub Form_Load()

    '生成lena个长度的非递减序列,并输出到文本框text1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer

        i = 1

        Do While i < lena

            If a(i) <> a(i + 1) Then

                i =

            Else

                For j = i + 1 To lena

                    a(j - 1) =

                Next j

                 

            End If

        Loop

        s = ""

        For i = 1 To lena

            s = s + Str(a(i))

        Next i

        Text2.Text = s

    End Sub

小李编写了一个实现矩阵行列转换功能的VB程序,运行界面如图所示。程序运行时,生成数组a的值并在列表框List1中显示,在文本框Text1中输入要转换的行列序号(相同),单击“转换”按钮Command1后,在列表框List2中显示转换后的矩阵。

$JVK`V7$QL_MI4YPJ{@AB

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

Const k=5

Dim a(1 To k * k)As Integer

Private Sub Form_Load( )

‘生成数组a并以矩阵形式显示在列表框list1中

End Sub

Private Sub Command1_Click()

    Dim b(1 To k, k * k)As Integer

    Dim n As Integer

    Dim row As Integer, col As Integer

    Dim s As String

    s=“”

    n=Val(Text1. Text)

    For i=1 To k * k

        row=(i-1)\k+1

          ①    

        If row=n Then

            b(i)=a((col-1)*k+n)

        ElseIf col=n Then

               ②   

        Else

            b(i)=a(i)

        End If

        s=s+Str(b(i))

        If    ③   Then

            List2. AddItem s

            s=“”

        End If

    Next i

End Sub

  1. (1) 要让窗体左上角显示“矩阵转换”文字,应该通过修改该窗体的(单选,填字母:A . Font/B . Caption/C . Text)属性
  2. (2) 请在划线处填入合适的代码。

     ② ③ 

选择结构不包含(    )
A . 单分支 B . 双分支 C . 多分支 D . 群分支
要求编写一个“统计直角三角形的个数”的程序,功能如下:在文本框Text1中依次输入3*N个数表示三角形的边长(用逗号分隔并以逗号结尾),单击“计算”按钮Command1后,程序统计直角三角形个数,并在标签Label1中显示。程序运行界面如图所示。

Private Sub Command1_Click()

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

    Dim x1 As Single, x2 As Single, x3 As Single, t As Single Dim Totald As Integer, v As Single, s As String

    s = Text1.Text

    k = 0: j = 1: Totald = 0

    For i = 1 To Len(s)

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

            v = Val(Mid(s, j, i - j))       '提取三角形边长,保存在变量v中

               ①    

            If k Mod 3 = 1 Then

                x1 = v

            ElseIf k Mod 3 = 2 Then x2 = v

            If x1 < x2 Then t = x1: x1 = x2: x2 = t

            Else

                x3 = v

                If x1 < x3 Then t = x1: x1 = x3: x3 = t

                If   ②    Then Totald = Totald + 1

            End If

           

        End If

    Next i

    Label1.Caption = "一共构成" + Str(Totald) + " 个直角三角形"

End Sub

  1. (1) 请在划线处补充合适的代码。

     ② 

  2. (2) 加框处代码有误,请改正。
  3. (3) 观察程序代码,若正确完成(1)、(2)后,调试过程中出现如下错误提示,可能是程序代码执行到第行报错。

若执行时输入49,以下流程图描述的算法执行结果是(    )。

A . 7 B . 51 C . 47 D . 9
以下程序的功能是(      )

dim X AS double

X=inputbox(“x=”)

if X<0 then

    X=-X

endif

print X

A .   输入X,输出X的相反数 B .   输入X,输出X的绝对值 C .   输入X,输出X的平方根 D .   输入X,判断其是否小于0,并输出X
模拟一个简单计算器,实现如下功能:输入两个整数和一个运算符(加、减、乘、除),进行算术运算,并输出运算结果。程序运行时,依次输入第一个数、运算符和第二个数,输出运算结果。当输入的运算符是加减乘除(+-*/)四种以外的符号时,则输出“运算符不正确”。当进行除法运算时,如果除数为“0”,提示输出“除数不能为0!”。Python 程序实现如下,在划线处填入合适的代码。

a= int (input(请输入第一个数: "))

fh=input ("请输入运算符: ")

b=int (input("请输入第二个数: "))

flag=True

s=

if fh in s:

    if fh=="+" :

        c=a+b

    elif fh=="-":

        c=a-b

    elif fh=="*":

        c=a*b

    else:

        if

           print("除数不能为0! ")

           flag=False

        else:

           c=a/b

        if flag==True:

           print(运算的结果为: "+)

    else:

        print ("运算符不正确")

有如下Visual Basic程序段:

Private Sub Command1_ Click( )

    Dim a(1 To 10) As Integer, i As Integer, k As Integer

    a(1)=1:a(2)=17:a(3)=8:a(4)=9:a(5)=18

    a(6)=15:a(7)=20:a(8)=13:a(9)=7:a(10)=11

    k=0

    For i= 2 To 9

        If(a(i)-a(i-1))*(a(i+1)-a(i))< 0 Then k=k+1

    Next

    Text1. Text = Str (k)

End Sub

该程序段运行后后,文本框Text1中显示的内容是(    )

A . 6 B . 7 C . 8 D . 9
有如下程序段

Dim i As Integer, s As String, n As Integer

i =2:s=""; n= 100

Do While i< = n

    If  Then s =s + Str(i)

    i=i+1

Loop

用下列表达式替换方框处表达式后,不能实现原程序功能的是(    )

A . iMod10<1 B . i/10=int(i/10) C . i/10=i\10 D . imod2=0orimod5=0
阅读以下程序,该程序的运行结果为    。

score=int(input("请输入一个分数"))

if 100>=score>=90:

  print("A")

if 90>score>=80:

  print("B")

if 80>score>=60:

  print("C")

if 60>score>=0:

  print("D")

if score<0 or score >100:

  print("输入错误!")

以下Case语句中错误的是(    )
A . Case 0 To10 B . Case   is>10 C . Case  is>10  And  is<50 D . Case 3,5, is>10
下面的Python代码实现了读入若干非负整数,统计其中奇数个数的功能。要想实现这一功能,应该在空格处填(  )。

li = map(int, input(). split())

cnt=0

for i in li:

  if                  :

    nt+=1

print("奇数有{ }个。". format(cnt))

A . i%2==1 B . i%2 C . i//2==1 D . i/2==1
现有字符串s,以下程序段实现将字符串中的“ 热情”都替换成“激情”,下列选项中填写到①处无法实现本程序段功能的是(    )

s = Text1. Text

i=1

Do While i<=Len(s)-1

    If Mid(s, i, 2) =“热情”Then

        s=Mid(s,1,i-1)+“激情”+Mid(s,i+2)

          ①   

    Else

        i=i+1

    End If

Loop

A . i=i+2 B . Exit DO C . i=i+1 D . Text1.Text = s
小王基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如图所示。

实现上述功能的VB代码如下,请回答下列问题:

Const n= 10

Dim a(1 To n) As Integer

Private Sub Form_ load( )

'数组初始化,生成1~20之间的随机整数并赋值给数组a,代码略

End Sub

Private Sub Cmd1_Click()

    Dim i As Integer, j As Integer, t As Integer

    Dim bottom As Integer

    bottom= n

    For i=1 To bottom-1

        For j= bottom To i+1 Step -1

            If  Then    '①改错

                t=a(j) : a(j)=a(i) : a(i)=t

            ElselIf a(j)=a(i) Then

                      '②填空

                bottom= bottom- 1

            End If

        Next j

    Next i

    Text2. Text=" "

    For i=1 To bottom

        Text2. Text= Text2. Text+Str(a(i))

    Next i

End Sub

  1. (1) 程序窗体中“排序”按钮的对象名是
  2. (2) 程序代码中,加框处①有错,请改正;
  3. (3) 为实现上述功能,请在加框处②填入合适的代码:
  4. (4) 要想生成范围是1~20的随机整数,VB表达式是
有如下python程序段:

n="p4y2t3h1o9n4";p=""

for i in n:

    if "0"<=i<="9":

        if p=="":

            p+=i

        elif i>=p[-1]:

            p+=i

        elif i<p[0]:

            p=i

执行该程序段后,则p的值是(     )

A . "239" B . "14" C . "19" D . "4"
有如下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:\119“”下的文件“求最小公倍数.py,”,进行以下操作并保存结果。

算法描述:最小公倍数初始值设为较大数,如果能整除,则较大数就是最小公倍数;如果不能整除,让较大数乘以2,3,4...递增1的自然数,直到能整除为止。如输入“11,5”,输出结果为“55”,输入“8,12”,输出结果为“ 24″。

请填空完善该程序,实现功能:键盘上输入两个自然数m和 n(1≤n≤m≤1000),输出这两个数的最小公倍数。编写完成后原名保存并关闭应用软件。

m=int(input("请输入自然数m:"))

n=int(input("请输入自然数n:"))

i=1

if m<n:

    m,n= #两数交换(用大数翻倍)

s=m            #s的初始值较大数

while :

    i = i+1

    s =

print()

最近更新