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

在计算过程中,有时候数据会特别大,超过系统允许的范围,这时候我们会采用一种特殊的方法来处理,将数字当做字符,然后逐个处理。以下程序用来处理超级大的正整数乘以一个个位数的情况:每输入一个乘数和被乘数,按一下计算,会在列表框中输出运算结果。(保证输入的被乘数是个位正整数,乘数可以是200位以内的正整数),完成填空。

算法思路:从乘数的最后一位开始逐个取出来与被乘数相乘,例如635的最后一位5,取出来与被乘数5相乘,得到25,个位数5作为结果存入s字符串,十位数2作为进位,留着加入下一次的乘积中,然后取出3,与5相乘,得到15,但是要加上刚才的进位,所以应该是17,个位数7作为结果存入s(此时结果是75),十位数作为进位1,留着加入下一次乘积…… 。

  1. (1) 程序中additem 是(选填:属性/属性值/对象名/方法/过程)
  2. (2) 根据算法完成程序填空:

    Private Sub Command1_Click()

    dim s as string,s1 as string,s2 as string

    dim i as integer,jinwei as integer,d as integer,t as integer

    s1 = Text1.Text

    s2 = Text2.Text

    s = ""

    jinwei = 0

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

        d = Val(Mid(s1, i, 1))

        t =

        s =

        jinwei = t \ 10

    Next

    If jinwei<> 0 Then s =

    List1.AddItem s1 &"*"& s2 &"="& s

    End Sub

有以下程序段:

n=int(input(“请输入数字:”))

if n>5 :

  print(4*n)

else :

  print(7*n)

如果输入5,则程序运行的结果为(   )

A . 32 B . 35 C . 49 D . 56
小董编写了一个有关“筛选操作”的VB程序,实现如下功能:在文本框Text1中显示一组随机生成个位数为“9”的两位数(原始数据),在文本框Text2中输入筛选个数,单击“操作”按钮Command1后,在文本框Text3中按降序显示所筛选个数的不重复最大数据(以逗号分隔    并以数据结尾),若在文本框Text2中输入的数大于原始数据中不相同数的个数,则在文本框Text3中显示“筛选的个数太大,请重新输入!”。程序运行界面如图所示。

  1. (1) 如图所示,该VB程序的窗体中共有类对象(填数字)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 10

    Dim d(n) As Integer, c As Integer

    Private Sub Form_Load()

      Dim i As Integer, j As Integer, f As Boolean, s As String

      Randomize

      c = n

      For i = 1 To n

        f = False

        d(i) =        ' 随机生成个位数为“9”的两位数

        For j = 1 To i - 1

          If Then f = True

        Next j

        If f Then c = c - 1

      Next i

     '原始数据在文本框Text1中显示。代码略

    End Sub

    Private Sub Command1_Click()

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

      Dim cnt As Integer,t As String, s As String

      d(0) = 100

      cnt = Val(Text2.Text)

      If cnt > c Then

        Text3.Text = "输入筛选的个数太大,请重新输入!"

        Exit Sub               'Exit Sub表示退出过程

      End If

      For i = 1 To cnt

        k = i

        For j = i + 1 To n

          If d(j) < d(i - 1) And( _x0000_i1034 )Then k = j

        Next j

        If k <> i Then

          t = d(i): d(i) = d(k): d(k) = t

        End If

      Next i

      For i = 1 To cnt

        s = s + Str(d(i)) + ","

      Next i

      Text3.Text =

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
平面上有n(3≤n≤100)个房间围成一圈,编号分别为1~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代码如下,但加框处代码有误,请改正。

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

Private Sub Form_Load( )

    ‘产生n的值

    ‘本过程从数据库中依次读取编号为1到n的房间的最多居住人数,并存储在数组a中

    ‘代码略

End Sub

Private Sub Command1_Click( )

  Dim i As Integer,j As Integer,w As Integer

  Dim t As Long,ans As Long

  ans=32767

  For i=1To n

    t=0

    For j=0 To n-1

                      ‘①

      If w=0 Then w=n

                    ‘②

    Next j

    If t<ans Then ans=t

  Next i

  Text2.Text=Str(ans)

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②

某旅游景点规定,身高在1.2米以下的儿童免票,身高1.2~1.5米(包含1.2米和1.5米)的儿童购买半价票,身高超过1.5米的游客购买全价票。用Python程序实现上述算法,则下划线处代码应填:

H=float(input("输入身高,单位为米:"))

If h<1.2:

    print("免票")

elif

    print("请购半价票")

else:

    prin("请购全价票")

某市公共自行车24小时内租车收费标准为:每次1小时内免费,超时后按1元/小时收取(超时不足1小时按1小时计),24小时内最高限额为10元。
  1. (1) 若用变量pay存储租车费用,用变量time存储租车时间,根据题中的收费标准,租车费用pay与租车时间time之间的关系可用数学公式描述为
  2. (2) 公共自行车租车费用pay的计算可用解析算法,具体描述如下,请补充完善。

    ①给定24小时内的租赁起始时间和结束时间:输入租赁开始的时间和结束的时间。注:时间的输入格式为hh:mm:ss,如10:23:11。

    ②计算租车时间time:计算租车起始时间和结束时间的时间差time。

    ③计算租车费用pay:若time小于等于1,则pay为0;若,则pay为time;若time大于10, 则pay为10。

  3. (3) 编写程序。用变量stime、etime、time、pay分别存储租车开始时间、租车结束时间、租车时间和租车费用。计算公共自行车租赁费用的某Python程序如下,请在划线处填入相应代码,实现程序功能。

    Stime=input('租车开始时间:')

    etime=input('租车结束时间:')

    #stime.split(":")[0]切出的是租车开始时间的时

    #stimespli(":")[1]切出的是租车开始时间的分

    #stime.split(":")[2]切出的是租车开始时间的秒

    if int(etime. split(":")[0])>=int(stime.split(":")[0]):

    time=int(etime. split(":")[0])-int(stime.spilt(":")[0])

    if int(etime.split(":")[1]>int (stime.split(":"))[1):

        time=time+1

    elif int (etime.split(":")[1])= int(stime.split(":")[1]) and int(etime.split(":")[2]>= int(stime.split(":")[2]):

        time= time+1

    if time<=1:

        pay=0

    elif

        pay=time

    else:

         

    print(pay)

  4. (4) 完善该程序后,运行程序,输入租车开始时间为“9:40:6”,租车结束时间为“15:35:32”,则程序运行结果为
下面if语句统计满足“性别 (gender) 为男、职称(rank) 为副教授、年龄(age)小于40岁”条件的人数,正确的语句为(     )。
A . if(gender=="男" or age<40 and rank=="副教授"): n+=1 B . if(gender=="男" and age<40 and rank=="副教授"): n+=1 C . if(gender=="男" and age<40 or rank=="副教授"): n+=1 D . if(gender=="男" or age<40 or rank=="副教授"): n+=1
下列选项中,与语句y=-Abs(x)实现功能相同的是(   )
A . If x < 0 Then y = -x else y = x B . If x > 0 Then y = x else y = -x C . y = -x

If y > 0 Then y = -y

D . y = x

If x < 0 Then y = -x

计算机在0~1000中随机产生一个数,试试看你要多少次才能猜中,阅读下列程序.

import random

num=random.randint(1,  ①  )

mynum=int(input('请输入mynum='))

n=1

while not(  ②  ):

    n= n+1

    if mynum<num:

        print("输入的数小了")

    elif mynum>num:

        print("输入的数大了")

    print("输入不正确,请再次输入")

    mynum=int(input('请输入mynum='))

print("你猜对了!","一共用了",n,"次") 

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

下列说法正确的是(    )

A . ①填写999 B . ①填写1000 C . ①填写1001,②填写mynum== num D . ②填写mynum!= num
两个长度相同的字符串s1和s2,若所含字符及各字符的数量均相等时可以视为相同组合。如字符串“ABCA”与字符串“BCAA”可以视为相同组合,与“ABCD”视为不同组合。实现该功能的VB程序段如下:

Text1.text="相同":j=1

Do while j<=len(s2)

    If mid(s1, 1, 1)=mid(s2, j, 1) then

        s1=mid(s1, 2, len(s1)-1)

        s2=mid(s2, 1, j-1)+mid(s2, j+1, len(s2)-j)

       

    Else

       

        If

            Text1.text="不相同"

        End if

    End if

Loop

方框中的代码由以下三部分组成:

①j=j+1           ②j=1             ③j=len(s2)+1

则(1)、(2)、(3)中代码顺序正确的是(    )

A . ①②③ B . ②①③ C . ②③① D . ②③①
LZW编码是一种自适应词典编码,通过建立一个字典,实现字符的编码。假设输入的字符串中仅有小写字母和空格,编码方法如下:

1)初始时,建立一个空字典,把26个小写字母加入字典中。26个小写英文字母编码为1-26,字母“a”的编码为1,字母“b”的编码为2,其它字母的编码依次增加。

2)从字符串第一个位置开始扫描,若遇到空格(空格用“*”表示),则得到一个单词,截取该单词并存入变量中。

3)若该单词在字典中,则取出该单词在字典中的编码值;否则,依次取出该单词中各字母在字典中的编码值,(编码值之间用一个空格分隔),同时产生该单词的编码(编码为字典中的最大编码值加1),加入字典中。

4)继续扫描字符串,截取单词,并按照步骤(3)的方法进行处理,直至整个字符串编码完毕。字符串“abab”LZW编码过程如图所示。

  1. (1) 如果字符串为“ab bb bb”,则其LZW编码为
  2. (2) 请在划线处填入合适的代码。

    Dim pos As Integer, a(1 To 100)As String

    Private Sub Form_Load( )

        '将字母“a”至“z”依次存入数组元素a(1)到a(26)

    End Sub

    Function judge(ss As String) As Integer     '判断字典中是否有ss这个单词

        Dim i As Integer judge = 0

        For i = 27 To pos

            If a(i) =Then judge = i

            Exit For

            End If

        Next i

    End Function

    Private Sub Command1_Click( )

        Dim s As String, i As Integer, j As Integer, k As Integer, ch As String, word As String, result As String, Dim id As Integer, idletter As Integer

        s = Text1.Text pos = 26: i = 1

        Do While i <= Len(s)

            j = i

            Do While Mid(s, j, 1) <> " " j = j + 1

                If j > Len(s) Then Exit Do

            Loop

            word = Mid(s, i, j - i)

            If Len(word) = 1 Then    '单个字母的单词

                result = result + Str(Asc(word) -Asc("a") + 1)

            Else

                id = judge(word)

                If id = 0 Then      '新的单词

                    For k = 1 To Len(word)     '依次处理该单词中的各个字母编码

                        ch = Mid(word, k, 1)

                        

                    Next k

                    pos = pos + 1     '对该单词编码

                    a(pos) = word

                Else         '词典中存在该单词

                    result = result + Str(id) End If

            End If

            If j < Len(s) Then result = result + " *"

           

        Loop

        Text2.Text = result

    End Sub

有如下程序段:

m = Text1.Text

For i= 1 To Len(m)

    c= Mid(m,i, 1)

    If c>= "0" And c<= "9" And i Mod 2 = 0 Then k=1 Else k= 2

    a(k)= a(k)+ 1

Next i

数组a各元素的初始值都为0,文本框Text1上输入内容为“9+ ILM2019IT”(不包含双引号)。该程序段运行后,a(2)的值为(     )

A . 6 B . 2 C . 9 D . 5
某VB程序段如下:

s = "Hello World"

s1 = ""

n = Len(s)

For i = 1 To n \2

    If Mid(s, i, 1) > Mid(s, n - i + 1, 1) Then

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

    Else

        s1 = Mid(s, n - i + 1, 1) + s1

    End If

Next i

Text1.Text = s1

执行该程序段后,在文本框Text1中显示的是(    )

A . WlleH B . oorld C . dlroo D . Orldo
有如下Python程序段

def s(x):

    if x<=2:

        y=x

    else:

        y=s(x-1)+s(x-2)

    return y

a=int(input("请输入正整数:"))

result=s(a)

print(result)

运行程序,输入值为6,则输出结果为(     )

A . 8 B . 9 C . 13 D . 14
某字符串s是由一个原始字符串反复重叠形成的,例如字符串" abcababcababcab"是由abcab"重叠而成。如下VB程序段用于查找输入字符串的原始字符串:

s="abcababcababcab" : n= Len(s)

For t=1 To n\ 2

    If n Mod t=0 Then

        For i=t+1To n

            If  <>Mid(s, i, 1) Then Exit For

        Next i

        If i =n+1 Then ans = : Exit For

    End If

Next t

Text1.Text= ans

上述程序段2个方框处的表达式分别为(    )

A . ①Mid(s, (i-1) Mod t+1, 1)②Mid(s, t, 1) B . ①Mid(s, i Mod t, 1)②Mid(s, 1, t) C . ①Mid(s, i Mod t, 1)②Mid(s, t, 1) D . ①Mid(s, (i-1) Mod t+1, 1)②Mid(s, 1, t)
运行如下程序,输入文字“小秘密小甜蜜”,输出结果为(    )

sentence=input('请输入一段文字:')

for i in sentence:

  if i=='密':

    continue

print(i,end='')

A . B . C . 小 秘 小 甜 D . 小 秘 小 甜 蜜
小王基于选择排序算法编写了一个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表达式是
输入一个字母,生产一个回文字符串,如输入大写字母“E”,则产生从“A”开始的回文字母“ABCDED-CBA";如输入“e”,则产生“abcdedcba”;实现该功能的VB程序段如下:

m= Text1. Text: s=" "

If m>= "a" And m<= "z" Then init= Asc("a")

If m>= "A" And m<= "Z" Then init= Asc("A")

n= Asc(m) - init +1

  For i=1 To

    If i <= n Then

      s=s+

    Else

      s=s+

    End If

  Next i

Label2. Caption=s

上述程序中方框处可选语句为:

①12*n-1   ②2*n   ③Chr(Asc(m)+i-n)   ④Chr(init+2 * n- i- 1)

则(1)(2)(3)处语句依次是(    )

A . ①③④ B . ①④③ C . ②③④ D . ②③④
有如下代码:

x=int(input("请输入正整数x:"))

y=int(input("请输入正整数y:"))

while x <> y:

  if x > y:

     x = x - y

  else:

    y = y - x

若输入8、24,则x、y的值分别为(     )

A . 16  8 B . 8  -8 C . 4  2 D . 8  8
某加密算法程序段如下所示:

def jiami(x):

if "A"<=x<="Z":

  y=chr(ord(x)+32)

elif "0"<=x<="9":

  y=str((int(x)+1)%10)

else:

  y=x

return y

mingwen=input("请输入明文")

miwen=""

for x in mingwen:

  miwen=miwen+jiami(x)

  print("密文为:",miwen)

输入“Abc@789”并运行程序,输出结果是(    )

A . abc8910 B . abc@890 C . ABC678 D . aBC@789
最近更新