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

下列程序段的功能为:去除数组 a(1)到 a(n)中的“0”元素,并将非 0 元素按原顺序输出。如数组元素 a(1)到 a(8)的值依次为“2,0,2,0,0,7,0,7”,处理后 a(1)到 a(4)的值依次为”2,2,7,7”,原顺序输出为:“2 2 7 7”。

k = 0: s = ""

For i = 1 To n

   

Next i

Text1.Text = s

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

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

②If p = k Then s = s + Str(a(i - k))

③a(i - k) = a(i)

④p = k

代码顺序正确的是(    )

A . ④①②③ B . ④①③② C . ③④①② D . ③④②①
以下是牛顿迭代程序,认真阅读,填写横线内容

import math

a=float(input("请输入方程系数a:"))

b=float(input("请输入方程系数b:"))

c=float(input("请输入方程系数c:"))

d=b*b-4*a*c

if :

    x1=(-b+math.sqrt(d))/(2*a)

    x2=(-b-math.sqrt(d))/(2*a)

    print("方程有两个不同的解",x1,x2)

elif:

    x1=-b/(2*a)

    print("方程有两个相同的解",x1)

else:

    print("方程无解")

字符串s1中保存了一个单词,字符串s2中保存了一句以空格结尾的句子,字符串s1和s2均由小写字母组成且s2中各个单词之间仅用空格隔开,下列程序能够统计单词s1在句子s2中出现的次数:

i=1: j=1:cnt=0

Do While j<= Len(s2)

  If Mid(s1,i,1)<> Mid(s2,j,1)Then

    _x0000_i1025

  Else

    Do While i<=lens and j<=lens2

      If Mid(s1, i, 1) =Mid(s2, j, 1)Then

        _x0000_i1026

      Else

        _x0000_i1027

      End If

    Loop

    If i=len(s1)+1 And Mid(s2, j, 1)="" then

      cnt= cnt+1

    End If

    i=1

  End If

Loop

方框中的代码分别是:①i=1:j=j+1  ②i=i+1:j=j+1 ③j=j+1

代码从上到下正确的顺序是(    )

A . ①②③ B . ③②① C . ③①② D . ②①③
数组元素a(1)到a(5)的值依次为“24,16,4,33,77”,经过下面程序段加工后,数组flag中元素值为True的共有(  )

  Dim flag(1To 4)As Boolean

  For i=1 To 4

    For j=5 To i+1 Step-1

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

        k=a(j):a(j)=a(j-1):a(j-1)=k

        flag(i)=True

      End If

    Next j

  Next i

A . 0个 B . 1个 C . 2个 D . 4个
对给定的若干种互不相同的钱币面值,编程计算最少需要多少张钱币才能凑成某个给定的钱数。给定的7种钱币面值分别为1,2,5,10,20,50,100,则凑成金额94元,需要50元一张,20元两张,2元两张,共5张纸币时,张数最少。

程序界面如图所示。

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

Dim a(1 To 7)As Integer

Dim b(1 To 7)As Integer

Private Sub Form_Load( )

  List1.AddItem "面值    张数"

  ‘在数组a中从小到大存储7种钱币面值的整数值

End Sub

Private Sub Command1_Click( )

  Dim n, num, k As Integer

  n=Val(Text1.Text)

  k=7

  Do While n>0

    If n>=a(k)Then

         ①   

      b(k)=b(k)+1

    Else

         ②   

    End If

  Loop

  For i=1 To 7

    If b(i)<>0 Then

        num=num+b(i)

        List1.AddItem Str(a(i))+"   "+Str(b(i))

    End If

  Next i

  List1.Addltem"最少"+Str(num)+"  张"

End Sub

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

有如下程序段

s = Text1.Text

s1 = ""

For i = 1 To Len(s) \ 2

    m = Mid(s, i, 1)

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

    If m > n Then

        s1 = s1 + m + n

    Else

       s1 = s1 + n + m

Next i

Text2.Text = s1

在Text1中输入“8523691”,则执行该程序后,Text2中输出的是(   )

A . 819562 B . 8159823 C . 815926 D . 8195623
(程序设计题)医院广]诊大厅有一台自动饮料售货机,其中有三种饮品:

⒈牛奶[数量:3;价格:8]

⒉苏打水[数量:5;价格:6]

⒊瓶装水[数量:2;价格:5]

顾客需要先依次输入购买商品的id和数量,再投币购买。

①若投币金额超出饮品总价格,则显示“购买成功,退还*元!”。

②若投币金额不足,则显示“金额不足!”。

③若购买数量过多,则显示“商品库存不足!”。

④若输入的商品id不存在,则显示“商品未找到!”。

程序运行结果如图所示,请编写Python程序实现上述功能。

用VB编写字符解压程序,功能如下:在文本框Text1中输入压缩字符串,压缩字符串中不含空格,其中数字可以是多位数,表示其后面的字符个数,字符为单个字符。在文本框Text2中显示解压结果。例如,输入压缩字符串“3Y5a”(表示有3个“Y”和5个“a”组成),单击“解压”按钮后, 输出解压结果“YYYaaaaa”。程序运行界面如图所示:

  1. (1) 在设计程序界面时,要将文本框Text1和Text2中的内容清空,可以修改这两个对象的属性实现。
  2. (2) 由代码可知,命令按钮“解压”的名称是
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Comd1_Click()

        Dim i As Integer, j As Integer, n As Integer

        Dim ch As String, s As String, ss As String

        s = Text1.Text

        n = 0: ss = ""

        i = 1

        Do While i <= Len(s)

            

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

               

            Else

                For j = 1 To n

                    ss = ss + ch

                Next j

                n = 0

            End If

           

        Loop

        Text2.Text = ss

    End Sub

  4. (4) 运行程序,若文本框Text1中输入的内容为“Y3a5”,则输出的解压字符串为
一元二次方程ax2+bx+c=0(a≠0),当b2-4ac≥0,方程有两个不同的实数根,当b2-4ac<0时,方程无实数根。

(问题求解)下面的python程序实现的功能是判断方程是否有实数根。请阅读如下python程序,在空白处填写适当的表达式或语句,使程序完整。

import math

a=int(input("请输入a的值:"))

b=int(input("请输入b的值:"))

c=int(input("请输入c的值:"))

d= #将表达式b2-4ac的值赋给变量d

if

    print("x1=",(-b+math.sqrt(d))/(2*a))  #输出方程的其中一个实数根

    print("x2=",()           #输出方程的另一个实数根

else:

      #输出“方程无实数根”

有如下VB程序段:

flag= True:k= 0

For i=2 To 10

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

        If Not flag Then k=k+ 1: flag = True

    Else

        flag = False

    End If

Next i

已知数组元素a(1)到a(10)的值依次为“73,58,62,36,37,79,11,78,83,73”。执行该程序段后,变量k的值是(      )

A . 1 B . 3 C . 5 D . 7
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
有如下VB程序段,运行该程序段后变量a的值为(     )

a=4: b=3

If a >= 4 Then

    If b < 2 Then a=a+2

    If b > 2 Then a=a+3

    a=a+2

ElseIf a >= 9 Then

    a=a+4

Else

    a=a+b

End If

A . 13 B . 9 C . 16 D . 8
设有n盏灯,放在一排。从1到n依次顺序编号。有n个人也从1 到n依次编号。第1 个人(1号)将灯全部关闭,第2 个人(2号)将2 的倍数的灯打开,第3个人(3号)将编号为3 的倍数的灯做相反处理(该灯如果已打开,则将它关闭;如为关闭则将它打开),以后的人和3号一样,将编号为自己号数倍数的灯做相反处理。问当n个人操作后,哪几盏灯是亮的(亮灯为0,关闭为1)。程序代码如下:

Private Sub Command1_Click()

    Const n = 20

    Dim i As Integer, j As Integer

    Dim a(1 To n) As Integer

    For j = 1 To n

        a(j) = 0

    Next j

    For i = 1 To n

        For j = 1 To n

            Ifthen

               

            End If

        Next j

    Next i

    For j = 1 To n

        If a(j) = 0 Then list1.AddItem Str(j)

    Next j

End Sub

为了实现程序该功能,在画线处填写正确代码。

有如下 VB 程序段:

Dim a(1 To 6) As Integer

Dim d(1 To 6) As Integer

a(1) = 10: a(2) = 21: a(3) = 28: a(4) = 11: a(5) = 12: a(6) = 30

Const n = 6

For i = n To 1 Step -1

    d(i) = 0

    For j = n To i +1 Step -1

        If a(j) > a(i) Then d(i) = d(j) + 1

    Next j

    If d(i) > Max Then Max = d(i)

Next i

Text1.Text = Str(Max)

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

A . 1 B . 2 C . 3 D . 4
有如下VB程序段:

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

Dim s2 As String,pwd As String

s=Text1.Text:pwd="71zhYEAR":s2="":t=0

For i = 1 To Len(s)

    c=Mid(s,i,1)

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

        t=t*10+Val(c)

    Else

        s2=s2+Mid(pwd,t Mod 8+1,1)

    End If

Next i

Text2.Text=s2

运行该程序段,在文本框Text1中输入“20B13A8”,文本框Text2输出的是(   )

A . hY B . YE C . YE7 D . Hya
星星设计了10*10的矩阵,如图所示,实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )

Dim a(1 To 100)As String

For i= 1 To 10

    For j=1 To 10

        If i= j Or i Mod 10= 0 Or i Mod 10=1 Then

            a(  ①  )="●"

        Else

            a(  ①  ) ="O"

        End lf

    Next j

Next i

For i= 1 To 100

    s=s +a(i)

    lf   ②   Then

        List1.Addltem s

        s = ""

    End lf

Next i

A . ①(j-1)*10+i                     ②i mod 10=1 B . ①(i-1)*10+ j                    ②i mod 10=1 C . ①(j-1)*10+ i                   ②i mod 10=0 D . ①(i- 1)*10+j                    ②i mod 10=0
有如下Python 程序段:

n=input("输入若干个非负整数,以逗号分隔:").split(",")

a=list(map(int,n)) ; s=0

for i in range(0,len(a)//2):

  if i%2==0:

    s+=a[i]*2

  else:

    s-=a[i]

print(s)

执行该程序段时,输入“2,0,1,8,1,1,1,6”,则输出结果是(     )

A . -2 B . 0 C . -5 D . 7
下面的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
关于语句“If y = 10 then  y = x+10”下面说法正确的是(    )
A . 缺少endif语句 B . 变量y的结果值等于10 C . y=10是关系表达式 D . y=10和y=x+10都是赋值表达式
有如下VB程序段:

Dim a(1 To 6) As Integer

For i=1 To 6

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

    If a(i) Mod 2=0 And i Mod 2=0 Then

       a(i)=2 * a(i) - a(i - 1)

    End If

    s=s+Str(a(i))

Next i

执行该程序段后,变量s的值可能是(    )

A . 242221 B . 333126 C . 043513 D . 323117
最近更新