4.3 运用选择结构描述问题求解过程 知识点题库

有如下 VB 程序段:

a = a + b b = a - b a = a - b

下列选项中,和以上程序段功能相同的是(  )

A . B . C . D .
分支语句分为单分支语句和双分支语句两种。
有如下VB程序段:

s = “7218634594”:n = Len(s)

t = 0

For i = 1 To n - 1

 a(i) = Val(Mid(s, i, 2))

Next i

For i = 1 To n - 2 Step 2

k = i

For j = i + 2 To n - 1 Step 2

  If a(j) < a(k) Then k = j

Next j

If k <> i Then

  temp=a(i):a(i)=a(k):a(k)=temp

    t = t + 1

End If

Next i

Text1.Text = Str(t)

该程序段运行后,文本框Text1中显示的内容是(  )

A . 1 B . 2 C . 3 D . 4
有python程序如下

a=int(input())

b=int(input())

c=input()

if c=='+':

    print(a+b)

elif c=='-':

    print(a-b)

elif c=='*':

    print(a*b)

elif c=='/':

    print(a/b)

else:

print(“输入错误,请重试”)

当程序运行后,小新依次输入 9   2   *

程序输出结果应为(    )

A . 18 B . 11 C . 7 D . 4
编写“加法练习题生成器”程序,实现如下功能:在文本框Text1中输入题数n,单击“生成”按钮Command1,在列表框List1中显示n个两数之和小于100的加法练习题。程序运行界面如图1所示。

图1

  1. (1) 在设计程序界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加“生成”按钮。

    图2

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

    Private Sub Command1_Click()

      Dim n As Integer, i As Integer, a As Integer, b As Integer

      Randomize

      n = Val(Text1.Text)

      i =

      Do While i <= n

        a = Int(Rnd * 100)

        b = Int(Rnd * 100)

        If Then

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

            i = i + 1

        End If

      Loop

    End Sub

  3. (3) 运行该程序,在文本框中输入5,单击“生成”按钮后,对语句a = Int(Rnd * 100)执行次数的描述,最合理的是(单选,填字母:A . 执行次数等于5 / B . 执行次数大于等于5 / C .执行次数小于等于5)
某企业开展“运动打卡动动有奖”活动:若员工在本月累计运动时间30小时以下,奖励0元;达到30但不足45小时奖励300元;达到45但不足60小时奖励450元;60小时及以上奖励500元。小强用python编写程序实现相关功能:输入某员工本月累计运动时间(时),输出其能获得的奖励金额。
  1. (1) 实现上述功能的程序如下,请在划线处填入合适的代码。

    t=int(input("请输入您本月累计运动时间(时):"))

    if t<0:

        print("输入错误")

    else:

        if t<30:

           

        elif t<45:

            m=300

       

            m=450

        else:

            m=500

        print("您的奖励是:",m)

  2. (2) 当输入“-1”时,输出信息为(选填,填字母:A .输入错误 / B .您的奖励是:0 / C .您的奖励是:500)
数字之美“卡布列克数”:一个十进制整数X,X的平方可以分割为两个数字,如果这两个数字相加之和恰好等于X,那么X就是卡布列克数。如1,9,10,45……。因为9^2=81,9=8+1,所以9是卡布列克数;45^2=2025,45=20+25,所以45是卡布列克数。小朱编写VB程序验证输入的数是不是卡布列克数。具体功能如下:在文本框Text1中输入一个数,单击“验证”按钮,结果显示在标签Label2中,运行界面如图所示

 

  1. (1) 若要清空文本框Text1的内容,则修改文本框的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim x As Integer, m as double, n As Integer

        Dim num1 as Long, num2 as Long

        Dim s As String, flag as Boolean, i as Integer

        x = val(Text1.Text)

        m = x ^ 2

        s = Trim(Str(m))      ‘Trim函数去除字符串首尾空格

        n = len(s)

        For i = 1 to n

            num1 =

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

            If   Then

                Flag = True

                Exit For

            End If

        Next i

        If flag Then

            Label2.Caption=Str(x)+ "=" +Str(num1)+ "+" + mid(s,i+1)+ ",是卡布列克数!"

        Else

            Label2.Caption = Str(x) + "不是卡布列克数!"

        End If

     End Sub

  3. (3) 若文本框Text1中输入的内容是“55”(不包括引号),单击“验证”按钮后,Label2中显示的内容是
在text1文本框内输入字符串,单击去重按钮,将字符串后面相同的字符删除,并在text2中输出经过删除的字符串。程序界面如图所示。请在下面划线处填入合适的代码。

Private Sub Command1_Click()

    Dim s As String, s1 As String, c As String

    s = Text1.Text

    For i = 1 To Len(s)

        c = Mid(s, i, 1)

        s1 =    ⑴   

        For j =    ⑵   

            If c <> Mid(s, j, 1) Then

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

            End If

        Next j

           ⑶    

    Next i

Text2.Text = s

End Sub

A . (1)s1 = Mid(s, 1, 1) (2)i + 1 To Len(s)(3)s1 = s B . (1)s1 = Mid(s, 1, 1)(2)i To Len(s)(3)s1 = s C . (1)s1 = Mid(s, 1, i)(2)i To Len(s)(3)s = s1 D . (1)s1 = Mid(s, 1, i)(2)i + 1 To Len(s)(3)s = s1
有如下程序段:

a=6

b=18

c=26

if a>=b and a>=c:

max=a

elif b>=a and b>=c:

max=b

elif c>=a and c>=b:

max=c

print (max)

该程序段运行后,输出的max的值为

在字符串s中找连续最长不下降数字字符串长度max,如字符串“318714101223411624”连续最长不下降数字字符串为“012234”,其长度max为6,实现该功能的VB程序段如下:

s = "318714101223411624"

c=Mid(s, 1, 1):i=1:max=0

For j=2 To Len(s)

   

   

    If t> c Or j = Len(s) Then

        

        

    End If

Next j

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

①i=j

②t=c

③c = Mid(s, j, 1)

④If j-i>max Then max=j-i

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

A . ③②④① B . ②④③① C . ②③④① D . ③①④②
有如下VB程序段:

flag = True

For i=1 To 5

    If a(i) Mod2=0 And flag = True Then

        s=s+ a(i): flag = False

    Else

        flag = True

    End If

Next i

数组元素a(1)到a(5)的值依次为“42,38,53,45,78”,执行该程序段后,s的值为(    )

A . 173 B . 158 C . 120 D . 42
模拟开关灯游戏如图所示,一共有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) 程序中加框处代码有错,请改正。
在平面坐标系上分布着n个点,从这n个点的集合中取出4个点,使之构成一个正方形,要求正方形的边长与x轴、y轴平行。程序界面如第15题图所示,点击“生成”按钮,自动产生n个点的坐标,这n个点按x坐标值升序排列,x坐标相同时按y坐标值升序排列。

点击“查找”按钮,查找所有符合要求的正方形。算法思路:枚举正方形对角线上的线段端点A、C(即保证线段AC与x轴呈斜45度的夹角),通过A、C点,计算出正方形另-条对角线上的线段端点B、D,再查找B、D是否存在,若存在,则说明该正方形可以生成。

  1. (1) 能够在List1中显示“OK”的语句是(单选,填字母:A . List1.Addtem"OK"/ B . List1.Caption="OK"/C . List1.AddItem="OK")
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer, x(1000) As Integer, y(1000) As Integer

    Private Sub Command2_Click( )

    '生成n个点的坐标,并按要求排序,代码略

    '第i个点的坐标保存在x(i)和y(i)并显示在List1 中

    End Sub

    Private Sub Command2_Click()

        Dim i As Integer, j As Integer

        For i=1 To n

            For j=i+1 To n

                If  Then

                    If search(x(i), y(j)) = True And search() = True Then

                        '将4个坐标点显示在List2中,代码略

                        cnt=cnt+1

                    End If

                End If

            Next j

        Next i

        List2AddItem "总共有" + Str(cnt) + "个符合要求的正方形"

    End Sub

    Function search(x As Integer, sy As Integer) As Boolean

        Dim L As Integer, R As Integer, m As Integer

        search = False: L= 1: R= n

        Do While L<= R

            m=(L+R)\2

            If sx < x(m) Or  Then

                R=m-1

            ElseIf x> x(m) Or x= x(m) And ey > y(m) Then

                L=m+1

            Else

                search = True: Exit Do

            End If

        Loop

    End Function

  3. (3) 程序中加框处代码有错,请改正。
国际乒联现任主席自从上任以来就立志于推行一系列改革,其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。小明就是其中一位,他退役之后走上了乒乓球研究工作,为分析11分制和21分制对选手的不同影响,编写了如下VB程序。在Text1中输入比赛记录(其中w表示小明获得一分,f表示对手获得一-分)最终运行界面如第16题图,发现21分制确实对小明这种慢热型的选手有利:

  1. (1) 如果记录是wwfffffffffwfwwfwwfwfwffffffwwwwfffwf, 请问11分制比赛的第二局小明与对手的比分是(注:当任一方得分大于等于11分,且领先对方2分及以上,领先一方赢一局)
  2. (2) 在程序划线处填入合适代码

    Private Sub Command2_ Click()

        Dim sp As String, s As String

        Dim a(1 To 1000) As Integer

        Dim b(1 To 100) As Integer

        Dim c(1 To 100) As Integer

        Dim i As Integer, j As Integer

        Dim n As Integer, f1 As Integer

        Dim f2 As Integer, h1 As Integer

        Dim k As Integer, x As Integer

        '对数组a赋初值为0,代码略

        s = Text1.Text: j = 1: k=1: x=0

        For i=1 To Len(s)

            If Mid(s,i,1)="w" Then a(i)=1

        Next i

       

        For i=1Ton

            If a(i)=1 Then f1=f1+1 Else f2=f2+1

            H1=h1+a(i)

            

            If heck(f1, f2, 11) Then

                b(j)=f1:b(j+1)=f2:j=j+2

                f1 =0:f2= C

            End If

            If check(h1, h2,21) Then

                c(k) = h1:c(k+1)=h2:k=k+2

                h1=0:x=i

            End If

        Next i

        '输出各局比分代码略

    End Sub

    Function check (ByVal dl As Integer, ByVal d2 As Integer, fz As Integer) As Boolean

        check = False

        If Then check = True

    End Function

有如下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
水仙花数是指一个三位数,它的每个位上的数字的3次方之和就等于它本身,例如:1**3+5**3+3**3=153。这类三位数也被叫做自恋数、自幂数或者阿姆斯特朗数。

[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。请阅读如下python程序,在横线处填写适当的表达式或语句,使程序完整。

print ("三位数之内的水仙花是:")

for x in(100,1000):

    b=x//100

    s=(x//10)

    g=

    If x=(b**3 +s**3+g**3):

        print(

已知数组a有n个元素,现编写VB程序,实现从第1个元素开始分割出m×m个元素组成方阵(约定n≥m×m),并随机对该方阵进行顺时针90度或逆时针90度旋转。例如:数组元素a(1)到a(18)的值依次为“5,2,3,1,9,4,7,6,0,8,5,3,8,3,7,0,5,1”,在文本框Text1中输入方阵规模4,单击“生成”按钮Command1,生成4×4个元素组成的方阵,并在列表框List1中显示。单击“旋转”按钮Command2,该方阵进行顺时针90度或逆时针90度旋转,并在列表框List2中显示。程序运行界面如图所示。

  1. (1) 对于如图所示的程序运行界面,将方阵规模改为3,单击“生成”按钮后再单击“旋转”按钮,若方阵进行逆时针旋转,则旋转后方阵的第1行数据为(数据之间用“,”隔开)。
  2. (2) 请在划线处填入合适的代码。

    Const n= 100

    Dim a(1 To n) As Integer

    Dim b(1 To n) As Integer

    Private Sub Command1_Click( )

    '根据方阵规模,分割元素组成方阵,并在列表框List1中显示,代码略

    End Sub

    Private Sub Command2_Click( )

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

      Dim s As String

      m= Val(Text1. Text)

      List2. Clear

      k= Int(Rnd * 2)

      If k=0 Then

        For i=1 To m

          For j=1 To m

             b((i- 1) * m+j)=

          Next j

        Next i

      Else

        For i=1 To m

          For j=1 To m

             b((i-1) * m+j)=a((j-1) * m+m-i+1)

          Next j

        Next i

      End If

      s=" "

      For i=1 To m * m

       

        If  Then

          List2. AddItem s

          s=""

        End If

      Next i

    End Sub

阅读下处程序写出运行结果

有四个嫌疑人甲乙丙丁涉嫌偷盗,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉我”。若他们中只有一人说了假话,请编程判断谁是小偷。(注:在Python运算中,True的值为1,Fa1se的值为0)

运行输出结果是 

阅读下列程序,写出运行结果。

m=9

n=6

c=m-n

while c!=n:

    m=n

    n=c

    if m<n:

        m,n=n,m

    c=m-n

print(c)

运行结果是:

有如下代码:

s="1p23y4t"

sum=0; t=0

flag=False

for ch in s:

    if "0"<=ch<="9":

        t=t*10+int(ch)

    else:

        if flag:

            sum+=t

        t=0

        flag=not flag

print(sum)

该程序段运行后,最后输出的内容是(   )

A . 9 B . 23 C . 28 D . 34
最近更新