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

有如下程序段:

s=Text1. Text

t=””

For i=1 To Len(s)

  c = Mid(s,i,1)

  If c<“a”or c>“z” Then t=“”

  t=c+t

Next i

Label 1. Caption = t

执行此程序段时,在文本框Text1中输入“2020 Nihao Wolaile”, 则标签Label 1中显示的内容是(    )

A . elialoW B . elialo C . elia D . Eli
孪生素数是指间隔为2的相邻素数,它们之间的距离已经近得不能再近了,就像孪生兄弟一样,也称为双生素数。例如,素数11和13,其间隔为2,就是一组孪生素数。请编写程序,输入自然数n(n<1000),判断n和n+2是否为率生素数。(补充说明:素数是指在一个大于1的自然数中,除了1和此数自身外,无法被其他自然数整除的数)

算法描述如图所示,请将程序补充完整。

Private Sub Form_Click()

Dim n As Integer, i As Integer

Dim x As Integer       ‘判断是否为季生素数的变量

 = Val(InputBox("输入自然数 n"))

x=1

If n<=1 Then x = 0

End If

For i = 2 To Sqr(n+2)

  If n Mod i = 0 OrThen

    x = 0

  End If

  Next i

  If x=1 Then

    Print n,n+2 ;"是孪生素数”

  Else

    Print ;"不是孪生素数”

  End If

End Sub

小李基于选择排序算法编写了一个VB程序,功能如下:在文本框Text1中显示排序前的数据,单击“排序”按钮Command1,在文本框Text2中显示剔除重复数据后的升序排序结果。程序运行界面如下图所示。算法的思路:第i趟排序从a(i)….a(bottom)中查找最小值并记录其下标k,同时将后面的每个元素与a(i)比较是否重复,若发现重复数据,进行剔除处理;找到最小值与a(i)交换。

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

Const n = 10

Dim a(1 To n) As Integer

Private Sub Command1_Click()

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

  Dim k As Integer, bottom As Integer

  '获取排序前数据,依次存储在数组 a 中,并在文本框 Text1 中显示。代码略

  bottom = n: i = 1

  Do While i <= bottom - 1

    k = i: j = bottom

    Do While j > i

      If a(j) < a(k) Then

        k = j

      ElseIf a(j) = a(i) Then '若发现重复数据,进行剔除处理

        a(j) = a(bottom)

      IfThen k = j

        bottom = bottom - 1

      End If

      j = j - 1

    Loop

    If k <> i Then

      t = a(k): a(k) = a(i): a(i) = t

    Else

     

    End If

  Loop

  For i = 1 To

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

  Next i

End Sub

已知字符串型数组a(下标为1到2*n),在a(2*i-1)中保存了某班第i个同学的姓名,在a(2*i)中保存了第i个同学的技术成绩,并且a(2),a(4)…,a(2*n)是按成绩数值由大到小排列的,且各不相同,现按对分查找的方式查找成绩是key的同学的姓名,假设成绩是key的同学必定存在,部分VB程序如下:

i=1:j=n:f=False

Do While i<=j and Not f

    ___________

    If Val(a(m))=key Then

      Search=m:f=True

    Elself Val(a(m))>key Then

        i=m\2+1

    Else

        j=m\2-1

    End If

Loop

Text2.Text="成绩是"+Str(key)+"的同学叫:"+a(m-1)

程序画线处应填入的代码为(  )

A . m=Fix((i+j)/2) B . m=(2*i+2*j)/2 C . m=Fix(i+j)/2*2 D . m=(Fix(i+j)/2)*2
来种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制数转换为十进制数的值。具体功能如下:在文本框Text1中连续输入多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。

  1. (1) 要使程序运行时,文本框Text1的Width属性值为2018,可在Form_Load事件过程中添加语句(单选,填字母:A .Width=2018/B .Text1.Width=2018/C .Width.Textl=2018)。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

    Dims As String, c As String,d As String

    Dim n As Integer, b1 As Integer, b2 As Integer, v As Integer, i As Integer

    s=Text1.Text:n=Len(s):i=1

    Do While i<=n

        c=Mid(s,i,2)

        If c="00"Then

          d="东"

        ElseIfc="01"Then

          d=“南"

        ElseIf c="10" Then

          d="西(vi)"

        Else

          d="北"

        End If

        b1=Val(Mid(s, i+2, 1))

        b2=Val(Mid(s ,i+3, 1))

        v=   ①  

        List1.AddItemd+""+Str(v)

           ②  

    Loop

    End Sub

     ② 

  3. (3) 若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是
某著名景点在七月份收到若干旅游公司的通告,通告中包括该公司旅游的起始时间和终止时间, 如[6,10]表示该旅行团 6 号早上到,10 号早上回。疫情期间为避免人员扎堆,公司在时间段[start, ending]进行限流操作,要求在该时间段内景点每天都接待游客,且接待的旅行团越少越好。若景点收到的旅行团的数据是[3,8]、[3,6]、[8,15]、[18,25]、[14,20]、[5,10],[10,18]、[13,18]限流时间是[4,19]。工作人员对旅行团的数据做了如下处理:

①将旅行团的旅行时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序。排好序的时间段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].

②从前往后遍历时间段,选择“到达时间”不大于“限流开始时间”的时间段,若有多个时间段满足条件,且时间段未超出限流时间,应选择“返回时间”最大的时间段,选择的时间段是[3,8]。

③缩小限流时间[8,19],重复步骤 2,选择满足条件的时间段是[8,15],缩小限流时间[15,19],重复步骤 2,选择满足条件的时间段是[14,20],结束时间已超过限流终止时间,结束。

④若在遍历时间过程中出现“到达时间”大于“限流开始时间”,景点不能每天接待旅客,则没有满足条件的旅行社。

小王编写VB程序,程序界面如下所示,单击“排序”按钮,将旅行团的时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序,在Text1和Text2中输入限流的起始时间和终止时间,单击“满足条件的旅行团”按钮,在列表框输出满足条件的旅行团的时间,若没有满足条件的旅行社,则在列表框输出“没有满足条件的旅行团!”

回答下列问题:

  1. (1) 若景点接收到的旅行社的起始时间和终止时间分别为[5,17]、[7,18]、[4,12]、[3,8]、[2,10],限流时间是[3,15],筛选出的旅行团的时间是
  2. (2) 请在横线处填入合适的代码

    Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As Integer

    Private Sub Command1_Click()

    '将旅行团个数存入n,加载n个旅行团的起始时间、终止时间并分别放在数组a和数组b中,代码略

        For i = n to 2 step -1

            j=1

            Do while

                If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then

                    t = a(j): a(j) = a(j + 1): a(j + 1) = t

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

                End If

                j=j+1

            Loop

        Next i

    '输出排好序的时间段,代码略

    End Sub

    Private Sub Command2_Click()

        Dim arrivetime As Integer, leavetime As Integer

        start = Val(Text1.Text): ending = Val(Text2.Text)

        For i = 1 To n

            arrivetime = start

            If a(i) <= arrivetime Then

                If b(i) > leavetime Then leavetime = b(i): t=i

                IfThen

                    List2.AddItem  Str(a(t))  &  "---"  &  Str(b(t)) Exit For

                End If

                Else

                    If start < arrivetime or i = 1 Then

                        List2.Clear

                        List2.AddItem "没有满足条件的旅行团!"

                   Exit For

                End If

                List2.AddItem Str(a(t)) & "---" & Str(b(t))

               

                i = i – 1

            End If

        Next i

    End Sub

请根据以下算法,画出流程图。

①获取用户编号、密码信息;

②以用户名、密码为条件查询数据库中是否存在相应记录,结果为真转入第(3)步,否则转入第(4)步;

③保存用户名信息,并跳转到“/mainpage”;

④给出提示信息“用户名或密码有误,请重新输入”,转入第(5)步;

⑤结束。

   选择结构是算法的基本结构之一。
下列Python程序段运行的结果是(     )。

i=0

sum=0

while i<10:

    if i%2==0:

        sum+=i

        i+=2

print("sum=",sum)

A . sum=17 B . sum=18 C . sum=19 D . sum=20
已知由字母和数字组成的字符串s,现要实现如下功能:将字符串s中的数字字符按照原有顺序移动到右侧,英文字符按照原有顺序移动到左侧,如s="2Good02Luck1",移动后变成s="GoodLuck2021",为实现上述功能,在横线处填入的代码应该是(     )

n= L en(s)

Dim a(1 to 100) as String

pos=1: k=0

For i=1 To n

    ch= Mid(s,i,1)

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

        

        k=k+1

    Else

        

        Do While j>>=pos

            a(j)=a(j-1)

            j=j- 1

        Loop

        

        pos=pos+1

    End If

Next i

s=““

For i=1 To n

  s=s+a(i)

Next i

可供选择填入(1)(2)(3)中的代码有

①a(pos)=ch  ②a(pos+k)=ch  ③a(pos-1)=ch  ④j=pos+k  ⑤j= pos+k-1

其中正确的顺序是(     )

A . ①⑤③ B . ②⑤③ C . ②④① D . ①④②
小金同学学完了进制转换后,对课后的不同进制的加减法很是头疼,爱动脑筋的小金突发奇想,能不能用python程序来完成这些作业呢?请帮小金完成代码编程.

def convert(s):

    m=0

    le=len(s)

    key=s[le-1]

    if key=="B":

        n=2

    elif key=="D":

            ①   

    else:

        n=16

    i=0

    while i<=le-2:

        c=s[le-1-i]

        if c>="0"and c<="9":

            a=ord(c)-ord("0")

        elif c>="A"and c<="F":

            a=ord(c)-ord("A")+10

           ②    

        i+=1

    return m

s=input("请输入算式")

result=0;suanfu1="";suanfu2="";s1=""

for i in range(len(s)):

    c=s[i]

    if c=="+" or c=="-" or c=="=":

            ③  

        suanfu1=suanfu2

        suanfu2=c

        if suanfu1=="":

            result=t

        if suanfu1=="+":

            result=result+t

        if suanfu1=="-":

            result=result-t

        s1=""

    else:

        s1=s1+c

print("计算结果为"+str(result)+"D")

  1. (1) 将程序横线处补充完整

     ② ③ 

  2. (2) 如输入“1110B+10D-30H=”则输出结果为
将以下程序段补充完整。

问题:输入一个正整数n,判断n是否为素数。要判断n是否为素数,最简单的方法是:统计2到n-1之间能整除n的整数个数s,若s大于0,则n不是素数,否则就是素数。根据以上方法,完善以下程序代码。

Dim n, s As Integer

n = Val(InputBox(“n=”))

s=0

For i=2 to

    If n Mod i = 0 then

        s=        ‘统计因数个数

    End If

Next i

IfThen

    Print n &“是素数”

Else

Print n &“不是素数”

End If

波波同学一直梦想买彩票中500万大奖,他收集了最近100期“双色球”开奖信息,存储于data. accdb文件中,并使用VB软件编写了“双色球投注建议”程序,程序根据最近100期开奖信息,统计出现概率最低的6个红色球号码和1个蓝色球号码,给出投注建议。如果蓝色球有多个概率最低的号码,则输出多个,红色球不考虑并列概率量低情况。

注:福彩“双色球”玩法;在1-33个红色球影申随机生成6个号码,在1~16个蓝色球号码中随机生成个号码,共计6+1个号码开奖。

程序运行界面如图所示。

  1. (1) 实现上述功能的VB程序如下,请完善画线处的代码。

    Dim red(1 To 600) As Integer        '用于存储100*6红色球信息

    Dim blue(1 To 100) As Integer       '用于存储100*1蓝色球信息

    Private Sub Form_Load()

    '本过程用于从数据库data. accdb中读取最近100期双色球开奖信息

    '将100*6个红色球开奖信息依次存储在数组red()中

    '将100*1个蓝色球开奖信息依次存储在数组blue()中

    '将最近100期开奖信息格式化后显示在列表框List1中

    '本过程代码略

    End Sub

    Private Sub Command1_Click()

        Dim min As Integer

        Dim s As string

        Dim f(1 To 33)As Integer

        '——以下开始处理蓝色球部分——

        For b= 1 To 100

            f(blue(b))= f(blue(b))+1

        Next b

        min= 100

        For i= 1 To 16

            If f(i)< min Then min f(i)

        Next i

        For i=1 To 16

            If f(i)= min then s=

            f(i)=0

        Next i

        List2. Additem"蓝色球重点买人:"十s

        '——以下开始处理红色球部分——

        For r=1 To 600

            

        Next r

       

  2. (2) 在某次红球部分处理时,若数组f中的,f(1)至f(33)的值依次为:

    f(1)-f(11):

    6

    8

    20

    25

    16

    21

    14

    20

    24

    28

    26

    f(12)-f(22):

    1

    30

    8

    1

    10

    10

    33

    28

    32

    20

    6

    f(23)-f(33):

    4

    34

    29

    18

    25

    30

    4

    13

    30

    20

    6

    结合加虚线框处代码的算法,输出的内容是:

    红色球重点买入:(按输出顺序写出6个红球号码)。

有如下VB程序段:

s=“Good Luck 2019!”

n=0:m=0:k=0

For i=1 To Len(s)

    ch=Mid(s,i,1)

    If ch >=“0”And ch<=“9” Then

        m=m+1

    Else If ch>=“a” And ch<=“z” Then

        n=n+1

    Else

        k=k+1

    End If

Next i

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

A . 2 B . 3 C . 4 D . 5
某市实施交通管制,早晚高峰根据车牌号单双号限行。车牌尾号为单号的双号日限行,车牌尾号为双号的单号日限行。若车牌尾号不是数字,则从车牌号中取最后一位数字。

实现上述功能的Python 程序代码如下:

chepai = input('请输入您的车牌:浙A')

for i in range( __________________,-1):

  if '0' <= chepai[i] <='9':

    lastnum = int(chepai[i])

    if lastnum % 2 == 0:

      print('车牌尾号双号,单号日限行!')

    else:

      print('车牌尾号为单号,双号日限行!')

break

划线处应填入代码是(   )

A . len(chepai)-1,-1 B . len(chepai),0 C . len(chepai)-1,0 D . 1,len(chepai)+1
以下Python程序段执行后,输出结果为(    )。

m= 29

if m%3!=0:

    print (m, "不能被3整除")

else

    print (m,“能被3整除")

A . m不能被3整除 B . 29不能被3整除 C . 29能被3整除  D . m能被3整除
模拟开关灯游戏如图所示,一共有n盏灯(n>=5)排成一排,一开始n盏灯都亮着(用1表示灯亮,0表示灯灭)。

游戏规则如下:

1)第1轮,将所有灯都关闭

2)第2轮,将所有偶数(编号为2的倍数的灯打开)

3)第3轮,如果编号为3的倍数的灯开着,则关闭,如果灯关闭着,则打开

4)重复游戏直到第n轮结束

现在给定灯的数目n(5<=n<=200),求最后灯关闭的数目。

编写VB程序,实现上述功能,运行程序,在文本框Text1中输入n盏灯数,单击“确定”按钮Command1,在文本框Text2中显示灯灭掉的数量。程序运行界面如、图所示。

请回答下列问题:

  1. (1) 若要清空文本框Text1,能实现该功能的语句是(单选,填字母:A.Text1.Caption = “” /B.Text1.Text = “” /C.Text1.Clear)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim n As Integer, k As Integer, tmp As Integer, num As Integer

        Dim a(1 To 200) As Integer, i As Integer, j As Integer

        n = Val(Text1.Text)

        For i = 1 To n

            a(i) = 1

        Next i

        For i = 1 To n

             

            Do While tmp <= n

                If _ Then

                    a(tmp) = 0

                Else

                    a(tmp) = 1

                End If

               

            Loop

        Next i

        num = 0

        For j = 1 To n

            If a(j) = 0 Then num = num + 1

        Next j

        Text2.Text = Str(num)

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
某Python程序段如下:

s = "Errors should never pass silently.”

d={}

for ch in s:

    if ch in d:

        d[ch] += 1

    else:

        d[ch] = 1

print(d["e"])

运行该程序段,输出结果是(    )

A . 1 B . 2 C . 3 D . 4
哥德巴赫猜想提出:任一大于2的偶数都可表示成两个质数之和。小余想通过Python程序来验证这一猜想,输入一个大于2的偶数,输出一个满足猜想的表达式。程序代码如下:

import math

def Isprime(x):

for i in range(2, int(math.sqrt(x))+1):

  if   ①  :

    return False

  return True

  n=int(input(“请输入一个大于2 的偶数:”))

  for p in range(2,n-1):

    q=n-p

    if   ②  :

      print(n,"=",p,"+",q)

  break

下列选项中能实现该代码程序功能的是(      )

A . ①x%i!=0 ②Isprime(p) and Isprime(q) B . ①x%i!=0 ②Isprime(p) or Isprime(q) C . ①x%i==0 ②Isprime(p) and Isprime(q) D . ①x%i==0 ②Isprime(p) or Isprime(q)
在窗体上有一个命令按钮(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

最近更新