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

有VB程序段如下:

Const n =6

Max = 0

For i = 1 To n

 d(i)= 1

 For j = 1 To i - 1

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

 Next j

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

Next i

数组元素a(1)到a(6)的值依次为“2,40,15,1,25,37”,执行该程序段,变量max的值为(  )

A . 2 B . 3 C . 4 D . 5
从键盘输入一个整数,判断该数字能否被2和3同时整除,能否被2整除,能否被3整除,不能被2和3整除。输出相应信息。
均分红包。当前有n堆红包,编号为1,2, 3, 。。 n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。

移红包规则:

①编号为1的堆上的红包,只能移到编号为2的堆上;

②编号为n的堆上的红包,只能移到编号为n-1的堆上;

③其它堆上的红包,可以移到相邻左边或右边的堆上。

现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。

  1. (1) 代码“Private Sub Command1_ Click( )”中的Click是(单选,填字母: A . 对象名\B . 事件名\C . 事件处理过程名\D . 方法名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const Sum = 40          '红包总个数

    Private Sub Command1_ Click ()

      Dim n As Integer       '红包的堆数

      Dim s As String, k As Integer

      Dim avg As Integer    '最终每堆的红包个数

      Dim m1 As Integer, m2 As Integer

      Dim tmp As Integer, count As Integer, ans As Integer

      n=

      s = Text2. Text

      avg=Sum/n

      tmp=0: count=0: ans=0

      For k=1 To Len(s)

        c = Mid(s, k, 1)

        If c <>","Then

          tmp =

        Else

          count = count + 1

          If count = 1 Then

            m1 =tmp

          Else

            m2 = tmp

            If m1 <> avg Then

              m2=m2-(avg-m1)

              ans=ans+1

            End If

           

          End If

          tmp=0

        End If

      Next k

      Labe13. Caption = Str (ans)

    End Sub

模拟图像局部区域处理。随机生成n * n(n≤100,且为偶数)个“0”或“1”字符,将字符按行输出,构成一个n行n列初始矩阵,对该矩阵中的m行m列子矩阵(与初始矩阵同中心)进行水平翻转。例如,当n为8,m为4时,构成初始矩阵如图a所示,将子矩阵进行水平翻转后得到处理结果,如图b所示。

编写程序,实现上述功能:在文本框Text1中输入偶数n,单击“生成”按钮Command1,在列表框List1中显示初始矩阵,在文本框Text2中输入偶数m(2≤m≤ n),单击“处理”按钮Command2,在列表框List2显示处理结果。程序运行界面如图c所示。

请回答下列问题:

  1. (1) 根据程序的运行界面,“处理”是按钮Command2的(单选,填字母:A .对象名/ B .属性名/ C .方法/ D .属性值)。
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 100 * 100) As String

    Private Sub Command1_Click()

        Dim i As Integer

        n = Val(Text1.Text)

        If n <= 100 And n >= 2 And n Mod 2 = 0 Then

            For i = 1 To n * n

                a(i) = Chr()      ‘字符"0"的ASCII码值为48

                '将初始矩阵显示列表框List1中,代码略

            Next i

        Else

            List1.AddItem "输入有误"

        End If

    End Sub

    Private Sub Command2_Click()

        Dim b(1 To 100 * 100) As String, s As String

        Dim m As Integer, y As Integer, i As Integer, R As Integer, C As Integer

        m = Val(Text2.Text)

        If m >= 2 And m <= n And m Mod 2 = 0 Then

            y =

            s = ""

            For i = 1 To n * n

                R = (i - 1) \ n + 1: C = (i - 1) Mod n + 1

                If R <= y Or R > n - y Or C <= y Or C > n - y Then

                    b(i) = a(i)

                Else

                    b(i) =     ‘⑶

                End If

                s = s + b(i)

                If i Mod n = 0 Then

                    List2.AddItem s

                    s = ""

                End If

            Next i

        Else

            List2.AddItem "输入有误"

        End If

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
求解“幻圆”问题。三个圆相互重叠,形成七个区域,编号为①、②、③、④、⑤、⑥、⑦,如图a所示。将数字1~7填入每个区域中,实现所有数字仅用一次且每个圆内的数字之和相等,如图b所示,圆内数字的和为1 + 4 + 6 + 7 = 2 + 4 + 5 + 7 = 2 + 3 + 6 + 7,求解区域①~⑦中可以填入符合条件数字的所有方案。

求解思路:在七个区域①、②、③、④、⑤、⑥、⑦上枚举七个数字1、2、3、4、5、6、7的所有排列来进行验证。程序运行界面如图c所示。

图c

请回答下列问题:

  1. (1) 根据题意及程序代码,在区域①~⑦中按顺序分别填入7,4,2,1,3,6,5,则该排列(选填:能/不能)构成“幻圆”。
  2. (2) 请在划线处填入合适的代码。

    Dim a(1 To 7) As Integer  'a(1)~a(7)依次存储区域①~⑦的值

    Private Sub Command1_Click()

        Dim i As Integer, n As Integer

        Dim y1 As Integer, y2 As Integer, y3 As Integer

        For i = 1 To 7

            a(i) = i

        Next i

        n = 0

        Do While True

            For i = 7 To 2 Step -1

                If a(i) = 8 Then

                    a(i) = 1

                   

                End If

            Next i

            If a(1) = 8 Then Exit Do

            If check() Then

                y1 = a(1) + a(2) + a(3) + a(4)

                y2 = a(2) + a(4) + a(5) + a(6)

                y3 = a(3) + a(4) + a(6) + a(7)

                If y1 = y2 And  Then

                    n = n + 1

                    '在列表List1中,按格式输出a数组元素的值,代码略

                End If

            End If

            a(7) = a(7) + 1

        Loop

        Label1.Caption = "解法共计" & Str(n) & "种。"

    End Sub

    Function check() As Boolean

        Dim i As Integer, n As Integer, f(1 To 8) As Integer

        For i = 1 To 8

            f(i) = 0

        Next i

        For i = 1 To 7

            

        Next i

        n = 0

        For i = 1 To 7

            n = n + f(i)

        Next i

        If n = 7 Then check = True Else check = False

    End Function

下列VB程序段功能为:字符串s1、s2仅由字母组成,长度相同,在忽略大小写的情况下判断两者是否相同,结果显示在Label1中。

For i = 1 To Len(s1)

c1 = Mid(s1, i,1): c2 = Mid(s2, i, 1)

    If  Then

       If  Then Exit For      '退出For循环

       If  Then Exit For

       If  Then Exit For

    End If

Next i

If i > Len(s1) Then Label1.Caption =“相等” Else Label1.Caption =“不相等”

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

①Abs (Asc(c1) - Asc(c2)) <> 32 ②c1 <> c2

③c1 >= "a" And c2 >= "a" ④c1 <= "Z" And c2 <= "Z"

则(1)(2)(3)(4)处语句依次可为(      )

A . ①②③④ B . ①③④② C . ②①④③ D . ②④③①
操作说明:打开文件“Y:/1/1.py”,将程序补充完整,不得增加,删除语句、或改变程序原有结构,操作结束后保存。

以下程序段的功能是:根据从键盘上输入的表示星期几的数字,若输入的数字不是在范围(1至7)输出“输入错误!”,否则输出对应的英文星期的简称如“Mon、Tue、Wed、Thu、Fri、Sta、Sun”。

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

list=[“Mon”,“Tue”,“Wed”,“Thu”,“Fri”,“Sta”,“Sun”]

if :

     print(“输入错误!”)

else:

     print()

一个含有n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了[1,n-1]之间的所有整数,则称之为一组“完美跳数”。小余制作了验证完美跳数的VB程序,功能如下:在文本框Text1中输入一组以逗号分隔且以逗号结尾的整数数组,单击“验证”按钮Command1,在标签Label1中显示验证结果,运行界面如图所示。

Private Sub Command1_Click()

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

    Dim a(1 To 100) As Integer, b(1 To 100) As Integer Dim s As String, chr As String, temp As String

    s = Text1.Text

    i = 1: n = 0

    Do While i <= Len(s)

        ch = Mid(s, i, 1)

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

            temp = temp + ch

        Else

            n = n + 1

               ①   

            temp = ""

        End If

        i = i + 1

    Loop

    For i = 2 To n

           ②    

    Next i

    For i = 1 To n - 2

        For j =

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

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

            End If

        Next j

    Next i

    For i = 1 To n - 1

        If b(i) <> i Then Exit For

    Next i

    If i = n Then Label1.Caption = "完美跳数" Else Label1.Caption = "非完美跳数"

End Sub

  1. (1) 观察程序界面,具有Caption属性的对象有个。(填个数)
  2. (2) 请在上述程序的划线处填上合适的代码。

     ② 

  3. (3) 上述程序加框处代码有误,请改正。
有下面一段程序:

p = [ 2, 1, 3, 4, 5 ]

c = 0

for i in range( 2, 6, 2 ):

    if p[ i - 2 ] + p[ i -1 ] == p[ i ]:

        c += 1

print( c )

执行该段程序后,计算机显示的是(    )

A . 1 B . 2 C . 3 D . 4
辗转相除法,又称欧几里德算法,用于计算两个正整数m、n的最大公约数。它是已知最古老的算法,其可追溯至公元前300年前。

辗转相除法的算法步骤是,对于给定的两个正整数m、n(m>n),用m除以n得到余数r,若余数r不为0,就将n和r构成新的一对数(m=n,n=r),继续上面的除法,直到余数为0,这时m就是原来两个数的最大公约数。因为这个算法需要反复进行除法运算,故被形象地命名为“辗转相除法”。小曲设计了辗转相除法的算法,请根据下面算法回答问题。

描述一

描述二

描述三

①输入两个正整数m,n(m>n);

②计算m除以n所得的余数r;

③m=n, n=r;

④若r=0,则m,n的最大公约数等于m;否则转到步骤②;

⑤输出最大公约数m;

⑥结束。

  1. (1) 描述一是描述法;描述二是流程图描述法;描述三是计算机程序语言描述法。
  2. (2) 在描述三中代码4到6行作用是
  3. (3) 在描述三程序设计中,补充代码第8行划线处为
某Python 程序代码如下:

a = [10, 5, 2, 11, 7,6]

c=0

i = 0

while i < len(a):

    if a[i] % 2 == 0:

        c -= a[i]

    else:

        c += a[i]

        i =i + 1

print(c)

程序执行后,输出的结果是

下面这段程序是从3个数中找出最小值

Dim x%,y%,z%,min%

X=val(inputbox(“请输入X的值”))

Y=val(inputbox(“请输入Y的值”))

Z=val(inputbox(“请输入Z的值”))

If then

    Min=y

Else

    Min=x

End if

If z<min then

Print “最小值是:”;min

有如下Python程序:

import math

total=float (input("请输入金额:"))

if total<=500:

total*=0.9

elif total<=1500:

total*=0.85

else

total*=0.75

print(math.f1oor(total))

运行程序,输入"1024"后回车,程序的输出结果是

下列程序的执行结果是(       )

PRIVATE SUB FORM_CLICK( )

    X=INT(RND)+6

    SELECT CASE X

        CASE IS>5

            PRINT 5

        CASE IS >4

            PRINT 4

        CASE IS>3

            PRINT 3

        CASE ELSE

            PRINT 2

    END SELECT

END  SUB

A . 5 B . 4 C . 3 D . 5   4   3
输入100个学生的成绩,统计大等90的人数,大等80小于90的人数,大等70小于80的人数,大等60小于70的人数,不及格的人数.

PRIVATE SUB FORM CLICK()

    DIM X AS SINGLE

    J=0 : B=0: Q=0: L=0: Y=0

    FOR I=1 TO 

        X=VAL(INPUTBOX(“请输入一个成绩”))

        SELECT CASE

            CASE  

                J=J+1

            CASE IS>=80

                B=B+1

            CASE IS>=70

                Q=Q+1

            CASE

                L=L+1

            CASE 

                Y=Y+1

         

   

END SUB

有如下VB程序段:

Private Sub Command1_ Click() 

  Dim s As String, a As String, t As String

  s=Text1.Text:t=" "

  For i=1 To Len(s)

    a= Mid(s, i, 1)

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

      t=t+a

    ElseIf a="!" Then

      t=" "

    ElseIf t <> "" Then

      List1.AddItem t

    End If

  Next i

End Sub

执行程序时,在文本框Text1中输人“12+ 34=46! 789ok”(不包括双引号),单击按钮Command1后,在列表框List1中显示的结果是(    )

A.12

1234

123446

123446789

B.12

34

46

789

C.12

1234

789789

D.12

1234

123446

789

789

A . A B . B C . C D . D
下列程序,运行结果为

import math

x=16

if x<0:

  y=abs(x)

else:

  y=math.sqrt(x)

print(y)

级差又称范围误差及一组数据中,最大值减最小值后所得数据。用Python编辑器打开“Y:\87”下的文件”极差.PY“,请完善程序并保存结果。
  1. (1) 请填空,完善该程序。实现功能:求出一组数据的极差并输出。

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

    m=int(input("请输入一组数据的第一个数:"))

    =m

    max=m 

    for i in range(1,n):

        t=int(input("请输入后续的数:"))

        if  t<:

             min=t 

        if  t>max:

             

    print()  #输出极差的值

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

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

用Python编辑器打开“Y:\114”下的文件“干支纪年. py”,进行以下操作并保存结果。

①干支纪年是一种纪年历法,中国历史上很多重大事件都是以此命名的,例如:“1894年甲午战争,1911年辛亥革命等。把十天干(甲、乙、丙、丁、戊、己、庚、 辛、壬、癸)与十二地支(子、丑、寅、卯、辰、已、午、未、申、酉、戌、亥)顺序相配来记录年份,如:甲子、乙丑、丙寅……,一个周期为60年。对于公元后年份的干支纪年计算方法为:公元年数先减3得到基数,基数除以10,余数是天干,基数除以12余数则是地支。例如:1894-3=1891,1891除以10余1,天干是“甲”,1891除以12余7,地支是“午”,即1894年为甲午年。如果余数为0,则为天干或地支列表中的最后一位,辛亥年的地支就是这样求得。

②请填空完善该程序,运行后按程序提示输入:

请输入年份:1894       屏幕将输出结果为:1894年是:甲午年

③编写完成后原名保存并关闭应用软件。注:程序修改时,请把下划线及序号删除;不能删除注释语句。

a = ['甲', '乙', '丙', '丁', '戊', '已', '庚', '辛', '壬', '癸']

b = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']

year1=int(input('请输入年份:'))

year2=

x=year2%

if x==0:

    x=10

y=

if y==0:

    y=

print(year1,'年是:',a[x-1]+b[]+'年')

在Python中,运行以下程序得到的结果是(    )

m=19

if m>=30 or m<20:

print(m)

A . 20 B . 19 C . 30 D . 0
最近更新