4.3.1 if语句的应用 知识点题库

  小明编写了一个字符串加密程序,功能如下:在文本框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处的方框内代码应改为:
小红打算用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

有如下 VB 程序段:

For i = 1 To 6

  x = Int(Rnd * 10) + 1

  If i Mod 2 <> x Mod 2 Then

    a(i) = x

  Else

    a(7 - i) = x

  End If

Next i

数组a各元素的初始值为0,执行程序后a数组各元素的值不可能是(    )

A . 8,7,0,0,6,5 B . 0,9,8,3,6,3 C . 6,7,2,3,2,0 D . 2,9,4,7,10,3
疫情发生后,小罗收集了某省南北两区共15个城市的累计病例人数和治愈人数,用以分析统计各区治愈率最高的n个城市。规则如下:每个城市包含区域名、城市名、累计病例人数和治愈人数,以“/”分隔,以“;”结尾。如“北区/A市/1467/530;”,表示北区的A市累计病例人数1467人,治愈人数有530人。

小罗编写VB程序实现上述功能:程序运行时,读取所有城市数据保存在变量shuju中并显示在列表框List1中。在文本框Text1中输入“南区”或“北区”,文本框Text2中输入n的值,单击“排名”按钮Command1,对数据进行统计分析,并在列表框List2中显示治愈率最高的n个城市,如有与第n个城市相同治愈率的城市,则同时输出。程序运行界面如图所示,请回答下列问题。

  1. (1) 代码“List2.AddItem”中的 AddItem是(单选,填字母:A . 事件名/ B . 属性名 / C . 方法名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim shuju As String, a(1 To 100) As String

    Dim t As Integer, i As Integer, j As Integer, c As String, p As Integer, temp As String, q as String Dim f As Boolean, n As Integer, k As Integer

    '读取所有城市数据保存在变量shuju中,并显示在列表框List1中,代码略

    t = Len(shuju)

    i = 1: p = 0: j = 1

    Do While i <= t

      c = Mid(shuju, i, 1)

      If c = "/" Or c = ";" Then

        p = p + 1

        a(p) = j = i + 1

      End If

      i = i + 1

     Loop

    q = Text1.Text : n = Val(Text2.Text) : i = 1

    Do While i <= p \ 4 - 1

      k = i

      IfThen f = True Else f = False

      For j = i + 1 To p \ 4

        If a(4 * j - 3) = q Then

          If Val(a(4 * j)) / Val(a(4 * j - 1)) > Val(a(4 * k)) / Val(a(4 * k - 1)) Or Not f    Then k = j

           

          End If

        End If

      Next j

      If k <> i Then

        temp = a(4 * k - 3): a(4 * k - 3) = a(4 * i - 3): a(4 * i - 3) = temp

        temp = a(4 * k - 2): a(4 * k - 2) = a(4 * i - 2): a(4 * i - 2) = temp

        temp = a(4 * k - 1): a(4 * k - 1) = a(4 * i - 1): a(4 * i - 1) = temp temp = a(4 * k): a(4 * k) = a(4 * i): a(4 * i) = temp

      End If

      If  Then

        List2.AddItem a(4*i-3) & "/" & a(4*i-2) & "/" & Format(Val(a(4*i)) / Val(a(4*i-1)), "0.00%") & ";"

        i = i + 1

      Else

        Exit Do

      End If

    Loop

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
有如下程序,从数据库获取成绩,单击“读取数据”按钮将n个非降序数保存在数组cj(1)~cj(n)中,并将成绩显示在列表框中。在文本框中输入成绩key,单击“查找”按钮,在标签中显示大于等于该成绩的学生人数。

  1. (1) 界面中“查找”按钮的对象名为
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码

    Dim cj(1000) As Integer, n As Integer

    Private Sub btncmd1_Click( )

    Dim i As Integer, j As Integer

    Dim k As Integer ,tmp As Integer

    For i = 2 To n

      tmp = cj(i)

      j = BinarySearch

      For k = i To j + 1 Step -1

        cj(k) = cj(k - 1)

      Next k

      cj(k) = tmp

    Next i

    For i = 1 To n

      List1.AddItem Str(cj(i))

    Next i

    End Sub

    Private Sub btncmd2_Click()

    Dim i As Integer

    i = BinarySearch(Val(Text1.Text), 1, n)

    Label2.Caption = "共有" ++ "位同学大于等于该成绩。"

    End Sub

    Function BinarySearch(key As Integer,i As Integer,j As Integer) As Integer

    Dim m As Integer

    Do While i <= j

    m = (i + j) \ 2

      If cj(m) >= key Then

        j = m - 1

      Else

        i = m + 1

      End If

    Loop

    BinarySearch =

    End Function

    Private Sub Form_Load()

    '从数据库获取n个成绩存储在 cj(1) ~cj(n)组中,代码略

    End Sub

有如下VB程序段: s = "PYTHON5678" For i = 1 To Len(s)

ch = Mid(s, i, 1)

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

  k = (Val(ch) - 1) Mod (Len(s) - 4) + 1

  s1 = Mid(s, k, 1) + s1

End If

Next i

Text1.Text = s1

程序执行完后,Text1 中显示的内容是(     )

A . ONPY B . YPNO C . PNOH D . HONP
下列选项中,对变量a的赋值与其他三项不等价的是(   )
A . a= abs(a-b) B . if a>b Then=a- b Else a=b-a C . If a> bThen a=a-b If a<b then a=b-a D . a= a-b If a<0 Then a=-a
在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:

① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。

②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。

③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。

小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。

请回答下列问题:

  1. (1) n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是(单选,填字母:A . 5 4 3 1 2/B . 5 4 1 3 2/C . 3 4 5 1 2)
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer   '总人数/总作品数

    Dim m As Integer   '每人分配篇数

    Dim a(1 To 500) As Integer  '数组a大小满足处理要求

    Dim c(1 To 100) As Integer  '数组c大小满足处理要求

    Private Sub Command1_Click()

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

      n = Val(Text1.Text): m = Val(Text2.Text)

      Randomize

      i = 1

      Do While i <= m

        For j = 1 To n

          c(j) = 0         '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1

        Next j

        For j = 1 To n

          If j = n - 1 And c(n) = 0 Then

                ①   

          Else

            k = r(n, j)

          End If

          a((i - 1) * n + j) = k           '分配数字k到当前方案的第j个位置上

          c(k) = 1

        Next j

        If    ②     Then i = i + 1

      Loop

      s = ""

      For i = 1 To n

        s = "参赛者" & i & ":"

        For j = 1 To m

          s = s + Str(a((j - 1) * n + i))+ ","

        Next j

        List1.AddItem s

        s = ""

      Next i

    End Sub

    Function r(x As Integer, y As Integer) As Integer 

    '生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0

    End Function

    Function check(c As Integer) As Boolean

    '本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE

      Dim p As Integer, f As Boolean

      f = True

      p = 1

      For i = 1 To c * n

        If   ③     Then

          f = False: Exit For

        End If

        p = p mod n +1

      Next i

      check = f

    End Function

     ② ③ 

铁路托运行李是根据行李的质量收费的,标准如下:若不超过50千克,按每千克0.35元收费;若超过50千克,超过部分则按每千克0.5元收费,但行李质量不得超过150千克。

设计一个VB程序,通过在文本框Text1输入托运行李的质量,计算并输出托运行李的费用,行李质量超过150千克,则显示“行李超重!”。结果在文本框Label1中显示。程序运行界面如图a所示。

  1. (1) 在设计程序界面时,应使用图b所示的“控件工具箱”中的(填写相应编号)添加“Label1”对象。
  2. (2) 解决铁路托运行李费用计算问题采用的算法是(填字母:A .解析算法/B .枚举算法)。
  3. (3) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim x As Double,y As Double

          ①    

      If x>150 Then

        Label1l.Caption="行李超重!"

      Else

        If   ②   Then

          y=0.35*50+0.5*(x-50)

        Else

          y=0.35*x

           ③   

        Label1.Caption="行李收费"+   ④   十"元"

      End If

    End Sub

    画线处应填入的代码为:①;②;③;④

有如下VB程序段:

Dim a(1 To 10)As Integer

Dim i As Integer, k As Integer

For i=1 To 10 Step 2

    a(i)=1

Next i

For i=1 To 10

    If i Mod 3=0 Then a(i)=1-a(i)

Next i

For i=1 To 10

    If a(i)=1 Then k=k+1

Next i

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

A . 3 B . 4 C . 5 D . 6
人机对战游戏一剪刀石头布,游戏规则如下:石头胜剪刀,剪刀胜布,布胜石头。编写Python程序实现上述算法,玩家输入0表示石头,输入1表示剪刀,输入2表示布,电脑随机产生[0,2]之间的整数,部分代码如下:

import random

def judge(player,computer):

    if player == computer:

        print("平局")

    elif    ①   

        print("玩家赢")

    else:

        print("电脑赢")

dic={0:"石头",1:"剪刀",2:"布"}

player = intinput("请输入序号(0.石头1. 剪刀2.布):"))

if player != 0 and player != 1 and player != 2:

print("请重新输入!")

else:

        ②   

    print("玩家出:",dic[player])

    print("电脑出:",dic[computer)

       ③  

请回答下列问题:

  1. (1) 如果玩家出1,电脑出2,那么程序运行的结果为
  2. (2) 请在程序中划线处填入正确的代码。

     ② ③ 

若两个素数之差为2,则该对素数称为双胞胎数,如3,5就是一对双胞胎数。编写python程序,实现如下功能:输入n的值,统计显示n以内的所有双胞胎数。程序运行界面如图所示:

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

def isprime(x):

    for i in range(2,x):

        if  :

            return False

    return True

n=int(input("请输入一个正整数 n:"))

c=0

k=3

while k<=n-2:

    if isprime(k) and  :

        print(k,k+2)

        

    k=k+1

print("共有"+str(c)+"对双胞胎数")

某垃圾分类VB程序功能如下:在文本框Text1中输入一串字符(数据用逗号分隔,以逗号结尾),单击“统计”按钮Cmd1后,程序实现计算干、湿垃圾的重量及总重量(单位:斤)。输入字符串中的前后两个数字字符为一组,第一个数字字符代表垃圾种类,1表示干垃圾,2表示湿垃圾,第二个数字字符代表该垃圾的重量。例如:输入字符串“2,1,1,12,”,程序统计结果为干垃圾12斤,湿垃圾1斤,总重量13斤。程序运行界面如图所示。

  1. (1) Cmd1对象属于类(单选,填字母:A .Form / B .Label / C .TextBox / D .CommandButton)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click()

        Dim s As String, s1 As String, t As Integer, i As Integer

        Dim k As Integer, bh As Integer, w As Integer

        Dim w1 As Integer, w2 As Integer

        s = Text1.Text: k = 1: t = 0: bh = 0      'bh存储当前垃圾的垃圾编号

        w1 = 0: w2 = 0

        For i = 1 To Len(s) s1 = Mid(s, i, 1)

            If  Then

                t = t * 10 + Val(s1)

            Else

                If Then

                    bh = t

                Else

                    If bh = 1 Then

                        w1 = w1 + t

                    Else

                        w2 = w2 + t

                    End If

                   

                End If

                k = k + 1

               

            End If

        Next i

        List1.AddItem "干垃圾共" + Str(w1) + "斤"

        List1.AddItem "湿垃圾共" + Str(w2) + "斤"

        Label3.Caption = "总重量共有" + Str(w) + "斤"

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
运行下列Python程序,结果正确的是(      )

s="abcdefg"

c=len(s)       #len求字符串长度

for i in range(0,c):

    if i<2:

        print (chr(ord(s[i])+2),end=" ")          #ord()函数是chr()函数配对函数,将字符转ASCII值

    else:

        print(chr(ord(s[i]) + 3),end=" ")

A . c d f g h a B . c d f g h b  C . c d f g h # D . c d f g h c
有如下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
以下是一段python程序:

它的可以用哪个流程图表达(   )。

A . B . C .
有如下Python 程序段:

s=0

for k in range(7,2,-2):

    if k <=3:

        x=1

    if k <=5:

        x=3

    if k <=7:

        x =5

    s =s+x

print(s)

执行该程序段后,输出显示的内容是(    )

A . 9 B . 15 C . 10 D . 3.
选择结构程序设计的主导思想是从多个分支中选择
有如下VB程序:

Dim c As Integer

Private Sub Form_ Load( )

  c=0:Text1.Text=" "

End Sub

Private Sub Text1_ Change( )

  If Val(Text1. Text) > 0 Then

    Text1. Text = Str(Val(Text1. Text) \ 2)

    c=c+1

  End If

  Text2. Text = Str(c)

End Sub

运行该程序,在文本框Text1中输入5,则Text1和Text2中显示的内容分别是(     )

A . 0 3 B . 12 C . 51 D . -13
用python编辑器打开“Y\103”下的文件“计算1-2+3-4...+99-100的值.py”,进行以下操作并保存结果

①请填空完善该程序,实现功能:计算表达式s=1-2+3-4……+99=100的值并输出结果;

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

s=0

for i in range(1,):

  if :

        s=s-i

  else:

      

print()

最近更新