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

为防止某传染病,在堂食中不能两个人相邻就餐。为避免两个人相邻就餐,小明设计了一个VB程序,在Text 1中输入某一排座位就餐人员的分布情况,用字符“*”代表当前座位有人,字符“#”代表当前座位没人。如“*#**”就代表1号座位有人,2号座位没人,3号座位有人,4号座位有人。单击“检查”按钮后,若该排有人相邻就餐,则在标签Label 2中输出“警告!”;若该排没有人相邻就餐,在己入座人员不换坐的情况下,检查该排座位中是否还可以再加人就餐,若可以,则在标签Label 2中输出这排中至多还能有几个人入座;若不可以,则在标签Label 2中输出“该排人数已满”,程序运行界面如图所示。

  1. (1) 观察VB代码,可知“检查”按钮的名称为
  2. (2) 实现上述功能的VB代码如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click()

        Dim s As String, c As String

        Dim flag As Boolean

        Dim i As Integer,count As Integer

        s=Text 1.Text

        flag=True

        For i=1 To Len(s) -1

            c=Mid(s,i,2)

            If c=“**”Then

                

                Exit For

            End If

        Next i

        s=“#”+s·“#”

        count =0:i= 2

        Do While flag And i<=Len(s) -1

            If Then

                s=Mid(s,1,i-1) +“*”+Mid(s, i+1, Len(s) -i)

               

            End If

            i=i+1

        Loop

        If Not flag Then

            Label2.Cnption=“警告!“

        Elself count = 0 Then

            Label2.Caption=“该排人数己满”

        Else

            Label2.Caption=“该排至多还能有”+Str(count) +“个人入座”

        End If

    End Sub

     ② ③ 

有如下VB程序段:
Dim a(0 To 6) As Integer
Randomize:
a(0)=0: i=1

Do While i<=6

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

  If a(i) Mod 2<>i Mod 2 Then

    i=i-1

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

    a(i)=a(i)*2

  End If

i=i+1

Loop

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

A . 5, 4, 5, 4, 5, 10 B . 1, 4, 6, 8, 10, 8 C . 7, 2, 5, 4, 5, 4 D . 1, 2, 2, 3, 5, 4
有如下VB程序段:

flag=False: s="ShanShui2020!"

For i=1 To Len(s)

    ch=Mid(s,i,1)

If Not(ch>="0" And ch<="9")And Not flag Then

        t=ch+t

    End If

    flag=Not flag

Next i

Text1.Text=t

执行完以上程序段后,文本框text1中的内容为(    )

A . !uSaS B . SaSu! C . !22uSaS D . ShanShui!
给定一个字符串(由字母、空格、句末点号组成,单词中不出现其它符号),你需要反转字符串中每个单词的字符顺序且输出均为大写字母,同时仍保留单词的初始顺序、空格和句末点号。小李同学编写的“字符反转”VB程序如下,文本框Text1中输入的是反转前字符串,单击“反转”按钮后,在文本Text2中输出字符串反转结果,程序运行界面如图所示。

  1. (1) 请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim a(1 To 20)As String

    Dim n,m,i,j As Integer

    Dims,s1,s2 As String

    s1=Text1. Text:n=Len(s1)

    m=0:s=""

    For i=1 To n

        If Mid(s1,i,1)="" Or Mid(s1,i,1)="." Then

           m=m+1

           a(m)=s

           s=""

         Else

           

         End If

    Next i

    For j=1 To m

         n=Len(a(j))

         For k=1 To n

           

            If t﹥="a" And t<="z" Then

             

                s2=s2+t

            Else

                s2=s2+t

            End If

        Next k

        Text2. Text=Text2. Text+s2

        s2=" "

    Next j

    Text2. Text=Text2. Text & "."

    End Sub

  2. (2) 观察程序运行界面和阅读下面程序可知,原字符串输入“ShanShui LianMeng”单击“反转”按钮的则反转结果输出
某VB程序段如下:

For i=1To n

    h(i)=Int(Rnd * 20 + 1)

    num(i)=1:ans=0

    For j=1 To i

        If h(j) < h(i) And num(j) >=num(i) Then

            num(i)=num(j) + 1

        end if

      next j

Next i

执行该程序段后,在下列选项中,num (1)~num (8)各元素值可能的是(    )

A . 2,1,1,2,2,3,4,4 B . 1,1,2,3,2,2,1,3 C . 1,2,4,2,5,6,7,8 D . 1,1,1,1,1,1,3,2
模拟一个简易计算器,其功能是:输入两个数和一个运算符(加、减、乘、除),进行算术运算并输出运算结果。
  1. (1) 用Python语言编写的程序如下,请在划线处填入合适的语句或表达式,实现程序功能。

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

    ch=

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

    if ch== "+":

        print(a,ch,b,"=",a+b)

    elifch=="-":

        print(a,ch,b,"=",a-b)

    elif ch == *":

        print(a,ch,b,"=",a*b)

    elif ch == "/":

        if

            print(a,ch,b,"=",a/b)

        else:

            print("除数不能为0")

    else:

    print("运算符不正确")

  2. (2) 当输入的第一个数为4,输入的运算符为“\”,输入的第二个数为0,则程序输出的运算结果是(    )
    A . 0 B . 4 C . 除数不能为0 D . 运算符不正确
某股于3月21日起停牌进入配股缴款期,配股缴款截止日期为3月27日。由于配股后股价将除权,忘记或者不参与配股者或不是全额参与配股者,复牌后将面临损失。根据安排,该股本次配股价格为7.02元/股,按照每10股配售1.9股的比例向全体股东配售,其中:

配股除权价=(除权登记日收盘价+配股价×每股配股比例)/( 1+每股配股比例)

全额参与配股的最大配售量计算规则如下:

1)该股的配售比例是0.19。也就是说,假如你有10000股该股股份,最大配售量即为10000×0.19=1900(股)。

2)如果所获配股份额不足1股,那么0.65股及以上的为1股,0.65股以下的为0股。

回答下列问题:

  1. (1) 若该股的除权登记日收盘价为16.05元,则此次该股的配股除权价为元。
  2. (2) 假如你有15000股该股股份,最大配售量为股。
  3. (3) 如果不参与配股,该股配股除权后,将直接损失%。
  4. (4) 编写程序。用变量spj、pgj、bili、num、cqj、maxps分别存储除权登记日收盘价、配股价、每股配股比例持有的该股股份数、配股除权价和最大配售量。计算此次该股的配股除权价和最大参与配股配售量的Python程序如下,请在划线处添加合适的代码,完善程序,实现程序功能。

    flag=False

    pgj=7.02    #配股价

    bili=0.19    #每股配股比例

    spi-flatinput("请输入除权登记日收盘价:")

    num =floatinput("请输入持有的股份数:")

    cqj =     ①            #配股除权价

    maxps= num*bili      #最大配售量

    if      ②       :

        flag=True

    if flag :

        print("配股除权价", cqj,"最大配售量:" ,int(maxps)+1)

    else:

        print("配股除权价:", cq,"最大配售量:" ,nt(maxps))

     ② 

冠军在A、B、C、D四位同学中。A说:“不是我”,B说:“是C”,C说:“是D”, D说:“C说的不对”,已知四人中有一人说了假话。判断出到底谁是冠军。

请在空格处填写正确的代码,使程序完善。

champion=['A','B','C','D'] #设置选手列表

for i in: #循环读取选手编号

    cond=(i!='A') +(i=='C') + (i=='D')+(i!='D') #查找符合条件的选手

    if cond== : #说真话是否是3人

        print("冠军是:",) #输出冠军

input("运行完毕,请按回车键退出...")

有如下VB程序段:

flag=True: i=1

Do While i<=6

    k=Int(Rnd*99)+1

    If k mod 2=1 Or flag Then

        a(i)=k

        i=i+1

        flag=Not flag

    End If

Loop

执行该程序段后,在下列选项中,a(1)~a(6)各元素的值可能的是(    )

A . 15,10,80,29,5,17 B . 53,11,99,67,2,57 C . 65,41,100,71,33,63 D . 63,43,10,69,91,0
if语句属于(    )
A . 顺序语句 B . 分支语句 C . 循环语句 D . 循环结构
一家商场在降价促销,如果购买金额不高于200元,会给10%的折扣,如果购买金额高于200元,会给20%的折扣。编写一个Python程序,输入消费额(整数),显示折扣后的应付金额。
执行下列程序以后的结果是(    )

print("请输入3个数:")

x=int(input("x= "))

y=int(input("y= "))

z=int(input("z= "))

temp=0

if x>y:

    temp=y

    y=x

    x=temp

if x>z:

    temp=z

    z=x

    x=temp

If y>z:

    temp=z

    z=y

    y=temp

print(x, y, z)

A . 从小到大排序 B . 从大到小排序 C . 都变成最大的数 D . 都变成最小的数
某VB程序功能如下:单击“生成”按钮,随机生成n个三位数并在列表框List1中显示,单击“排序”按钮对这组数据进行“大小排序”(即最大、最小,第二大、第二小,第三大、第三小……依次类推),并在列表框List2中依次输出数据排序后的结果,程序运行界面如图所示,请回答以下问题。

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

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

    Private Sub Command1_Click()

        Dim i As Integer

        n = 14

        Randomize

        For i = 1 To n

            a(i) =

            List1.AddItem Str(a(i))

        Next i

    End Sub

    Private Sub Command2_Click()

        Dim i, j, flag As Integer

        List2.Clear

        flag = 1

        For i = 1 To n - 1

            For j = n To i + 1 Step -1

                If> 0 Then a(j) = a(j) + a(j - 1)

                a(j - 1) = a(j) - a(j - 1)

               

                End If

            Next j

           

        Next i

        For i = 1 To n

            List2.AddItem Str(a(i))

        Next i

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
编写“二进制数转换为十六进制数”程序,实现如下功能:在文本框 Text1 输入一个二进制数,单击“转换”按钮 Command1,将二进制数转换为十六进制数并在文本框 Text2 中显示。程序运行界面如下图所示。

  1. (1) 设计如图所示的程序界面,至少要使用个类(填数字)。
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s1 As String, s2 As String

        Dim i As Integer, x As Integer

        Const code="0123456789ABCDEF"

        s1=Text1.Text

        s2=""

        Do While Len(s1) Mod 4<>0 

            s1="0"+s1

        Loop

        x=0

        i=1

        Do While i<=Len(s1)

            x=x*2+Val(Mid(s1,i,1))  

            i=i+1

            If   Then      ‘①

                s2=s2+Mid(code,x+1,1)

                ‘②

            End If

        Loop

        Text2.Text=s2

    End Sub

  3. (3) 若文本框 Text1 中输入的内容为“101101”,单击“转换”按钮后,文本框Text2中显示的内容是
程序运行结果是(   )

c=0

for i in range(1,26):

  If i%2==0:

    c=c+1

Print(c)

A . 12 B . 13 C . 14 D . 15
根据以下程序代码完成下列小题。

程序描述: 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。

程序要求输入一个正整数(不为1),将经过处理得到1的过程输出来。代码如下:

x=int(input('输入一个正整数:'))

while     ①    

  if       ②  

    x=x/2

           ③      

  else:

         ④    

         ③    

if x==1:

       ⑤     

  1. (1) ①处的语句是          
    A . x>1 B . x>2 C . x!=1: D . x!=0:
  2. (2) ②处的语句是           
    A . x%3=0: B . x%2=0: C . x%3==0: D . x%2==0:
  3. (3) ③处的语句是               
    A . print(‘x/2’) B . print(‘x’) C . print(x) D . print(x/2)
  4. (4) ④处的语句是               
    A . x= x/2 B . x= x/2+1 C . x=x*3+1 D . x=3x+1
  5. (5) ⑤处的语句是               
    A . pass B . exit C . continue D . Break
人的身高一般是脚长的七倍左右。所以在知道一个人的身高后,便能大致推出他的脚长,进而推算出他鞋的码数。脚长与码数的关系如下:

脚长

21.5-22.0

22.0-22.5

22.5-23.0

23.0-23.5

23.5-24.0

24.0-24.5

24.5-25.0

25.0-25.5

码数

34

35

36

37

38

39

40

41

程序代码如下,请回答下面问题:

height=float(input('请输入身高(cm):'))

     ①     

if 21.5<=long<=22.0:

  num=0           # num 为区间标记号,从 0 开始递推 1

else:

  num=7

size=[34,35,36,37,38,39,40,41]

     ②     

print('根据您的身高,推断您鞋的码数为:',size_h)

  1. (1) 请在横线处填入合适的代码。

     ② 

  2. (2) 如果需要对算出的脚长保留一位小数(四舍五入),表达式为(  )
    A . int(long*10+0.5) B . int(long*10+0.5)/10 C . int(long*100+0.5)/10 D . int(long*100+0.5)/100
有如下程序段:

Function delStr (S As String, m As Integer) As String

    Dim n As Integer:n = Len(S)

    If m <1 Or m > n Then delStr = "输入位置有误!"

    If m = 1 Then delStr = Mid(S, 2, n-1)

    If m < n Then delStr = Mid(S, 1, m-1)+Mid(S, m+1, n-m)

    If m = n Then delStr = Mid(S, 1, n-1)

End Function

Private Sub Command1_ Click()

    Dim S As String:Dim i As Integer

    S = Text1.Text

    For i = 1 To 10 Step 2

        S = delStr(S, i)

    Next i

    Text2. Text = S

End Sub

文本框Text1中输入Happybirthday,执行该程序段,文本框Text2中显示的是(      )

A . apybrtda B . apbrhday C . Happybirhday D . Day
输入三个数,按从小到大的顺序输出。

DIM A AS INTEGER, B AS INTEGER

DIM C AS INTEGER

A= VAL(INPUTBOX(“请输入第一个数”))

B= VAL(INPUTBOX(“请输入第二个数”))

C= VAL(INPUTBOX(“请输入第三个数”))

IF A>B THEN

    T=A

    A=B

    B=T

 

IF A>C THEN

    T=A

    A=C

    C=T

 

IF  THEN

    PRINT   A,B,C

 PRINT A,C,B

END IF

平面上有N(3≤N≤100)个房间围成一圈,按顺时针方向分别编号为1、2……N,相邻的两个房间之间均有一扇门,第i个房间居住人数为a(i)。初始时选择一个房间,将所有人都聚集在该房间,接着每个人都按顺时针方向走到相邻的房间,直到走到居住的房间。一个人每经过一扇门花费1能量,请确定初始房间,使得所有人花费的能量和最小。例如:N=5,a(1)=4,a(2)=7,a(3)=8,a(4)=6,a(5)=4

最佳方案:初始时所有人聚集在2号房间,花费的能量和:7􀆽 0+8􀆽 1+6􀆽 2+4􀆽 3+4􀆽 4=48。为了解决这个问题,小明编写了一个VB程序。在窗体加载时,从数据库中读取N的值和编号为1到N的房间的居住人数,人数存储在数组a中。点击窗体上的按钮Command1,程序枚举每一种方案(不同的初始房间),计算该方案的能量和,在文本框Text1中输出最优方案的初始房间编号,在文本框Text2中输出最小能量和。

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

Dim a(1 To 100) As Integer    '依次存储编号为1到100的房间居住人数

Private Sub Form_Load()

     '本过程从数据库中读取N的值和每个房间居住人数,存储在数组a中

     '代码略

End Sub

Private Sub Command1_Click()

    Dim i As Integer,j As Integer,w As Integer,k as Integer

    Dim t As Long,ans As Long

    k=0:ans=32767    'ans 初始化为最大的Integer数据

    For i=1 To n

        t=0

        For j=0 To n-1

            w=

            If w=0 Then w=n

            t=

        Next j

        If t<ans Then

            k=i

            ans=t

        End If

    Next i

    Text1.Text=Str(k)    '起始房间编号

    Text2.Text=

End Sub

最近更新