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

有如下VB程序段:

Private Sub Text1_Change()

  Dim a As Integer, i As Integer

  a = Val(Text1.Text)

  For i = 1 To 7 Step 3

    If a <= 1000 Then a = a + i

  Next i

  Text1.Text = Str(a)

End Sub

执行该程序段,在文本框Text1中分别输入“1”、“2”、“3”、“4”,Text1中的结果(    )

A . 输入“1”时最大 B . 输入“2”时最大 C . 输入“3”时最大 D . 输入“4”时最大
以下流程图描述的算法,执行结果是

下列选项中,对变量a的赋值与其他三项不等价的是(   )
A . a= abs(a-b) B . if a>b Then=a- b Else a=b-a C . If a> bThen a=a-b If a<b then a=b-a D . a= a-b If a<0 Then a=-a
下列程序执行后,变量c的值是(  )

s="DZFad123":c=0

For i=1 To Len(s)

  ch=Mid(s, i, 1)

  If ch>="A" And ch<="F" Then

    c=c+1

  End If

Next i

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

t = "abcd123456" : x = Int(Sqr(Len(t))) : y=1

If x > 3 Then

    y =2

ElseIf x > 2 Then

    y=3

ElseIf x > 1 Then

    y=4

End If

执行该程序段后,变量 y 的值为 (    )

A . 4 B . 3 C . 2 D . 1
用Python程序实现圆面积的计算。若输入的圆半径为大于等于0的实数,则输出圆面积(保留两位小数);若输入的圆半径为负数,则输出“输入的圆半径为负”。为实现上述功能,请回答下列问题:
  1. (1) 划线处应填的代码为:

    PI=3.14159

    #命名常量

    radius =float(input("请输入圆半径:")

    if radius >= 0:

       

        prin("半径为"+str(radius)+ "的圆面积是"+str(area))

    else:

        print("输入的圆半径为负")

  2. (2) 调试程序发现,出现错误提示“IndentationError: expected an indented block" ,请说明错误的原因并改正。
给定一个n正整数(n<=20),根据设定的保留位数,舍去一部分数字,剩下的数字按原次序组成一个最大的新数。例如原数36835132,保留4位,最大数为6532。在文本框Text1输入原数,文本框Text2中输入保留的位数,文本框Text3中输出删除后的最大数。实现上述功能的部分VB代码如下∶

Dim a(1 To 20)As String, ys As String, xs As String

Dim k As Integer, h As Integer, n As Integer, i As Integer, j As Integer

ys=Text1.Text: k=Val(Text2.Text)

n=Len(ys):h=1

For i=1 To n

    a(i)=mid(ys,i,1)

Next i

For i=1 To k

    For j = h To

        If a(j) > a(h) Then

    Next j

    xs=xs + a(h)

    h=h + 1

Next i

Text3.Text=xs

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

①n-k+i   ②i+k   ③n-k+1   ④j=h   ⑤h=j

则方框处语句依次是(    )

A . ③⑤ B . ①⑤ C . ①④ D . ②⑤
单词的删除与插入。给定一个长度不超过100位的字符串s,显示在Text1中,先对字符串进行删除单词操作,再对其进行插入单词操作,两种操作方式具体如下:

1)操作1(单词的删除):在Text2中输入一个单词s1,在字符串s中找到左边第一个出现的相同单词(区分大小写),将其删除,并在Label1中显示删除单词的位置pos;若s中不存在单词s1,则字符串s不变。

例如:s=“Go with your your passion.”s1=“your” 点击“删除”按钮后,s=“Go with your passion.”pos=“9”若s1=“Your”,则s不变。

2)操作2(单词的插入):在Text3中输入一个单词s2,并在Text4中输入插入位置w,将s2插入到经过删除操作的s中以w开始的位置。

例如:s=“Go with your passion.”s2=“absolutely”  w=21

点击“插入”按钮后,s=“Go with your passion absolutely.”

程序运行界面如下图所示。

实现上述功能的VB程序如下。请回答下列问题:

  1. (1) 观察程序运行界面和代码,该界面中共有类对象(填数字)。
  2. (2) 标题若要修改为“单词的先删除后插入操作”,需修改窗体的属性。
  3. (3) 请在划线处填入合适的代码。

    Dim s As String

    Private Sub Command1_Click( )     '实现删除单词命令

    Dim s1 As String, t As String, i As Integer, pos As String, result As String Dim begin As Integer, word As String

    s = Text1.Text s1 = Text2.Text begin = 1

    For i = 1 To Len(s)

        t = 

        If Not (t >= "a" And t <= "z" Or t >= "A" And t <= "Z") Then

            If i > begin Then

                word = 

                If word = s1 Then    ‘找到与s1相等的单词,则将该单词删除

                    s = Mid(s, 1, begin - 1) + Mid(s, i+1, Len(s) - i)

                    pos = 

                    Exit For

                End If

            End If

            begin = i + 1

        End If

    Next i

    Text5|.Text = s

    Label1.Caption = pos End Sub

    Private Sub Command2_Click()       '实现插入单词命令

        Dim w As Integer, result As String, s2 As String s2 = Text3.Text

         

        result = + " " + s2 + " " + Mid(s, w, Len(s) - w + 1) Text5.Text = result

    End Sub

一个含有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) 上述程序加框处代码有误,请改正。
用英文字母 A~D 对数字字符 0~9 进行编码, 规则如下表所示:

数字字符

0

1

...

7

8

9

二进制值

0

0

0

0

0

0

0

1

...

0

1

1

1

1

0

0

0

1

0

0

1

十进制值

0

0

0

1

...

1

3

2

0

2

1

对应编码

A

A

A

B

...

B

D

C

A

C

B

例如, 数字字符串“709”的编码为“BDAACB”。用VB程序实现上述编码,功能如下:在文本框Text1中输入编码的一串数字字符,单击“编码”命令按钮Command1,在文本框Text2中显示编码结果。程序运行界面如图所示。

  1. (1) 若要将按钮中的“编码”二字替换成“字符编码”,应修改其对应的属性。
  2. (2) 下列属于VB窗体文件的是           (单选, 填字母)。
    A . szbm.vbp B . szbm.frm C . szbm.exe
  3. (3) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click( )

        Dim code As String, s As String, ch As String, result As String

        Dim i As Integer, numL As Integer, numR As Integer

        Dim flag As Boolean

        code = "ABCD"

        s = Text1.Text

        flag = True

        result = ""

        For i = 1 To

            

            If ch < "0" Or ch > "9" Then

                flag = False

                Exit For                   ' 退出循环

            Else

                numL = Val(ch) \ 4

                numR =

                result = result + Mid(code, numL + 1, 1) +

            End If

        Next i

        If flag Then

            Text2.Text = result

        Else

            Text2.Text = "输入错误"

        End If

    End Sub

  4. (4) 运行该程序,若在文本框Text1中输入“58”,单击“编码”命令按钮Command1,在文本框Text2中显示编码结果为
有如下程序段:

s = "Happy 2021/07"

ans = "": f = True: Max = ""

For i = 1 To Len(s)

    ch = Mid(s, i, 1)

    If ch >= "a" And ch <= "z" Then

        ans = ans + Chr(Asc(ch) - 32)

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

        f = False

    End If

    If Not f And ch > Max Then

        Max = ch: f = True

    End If

Next i

Label1.Caption = ans + Max

执行该段程序后,标签label1中显示的内容是 (     )

A . Happy7 B . HAPPY0 C . HAPPY7 D . APPY7
恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码:

def CaesarCipher( ):

    c=mingwen.get("0.0", "end")   

    b=""

miwen.delete("0.0", "end")

for i in range(len(c)):

    if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':

b=b+chr(ord(c[i])①)    #生成密文

        elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': 

            b=b+chr(ord(c[i])②)     #生成密文

        else:

            b=b+c[i]

miwen.insert("0.0",b) 

下列说法正确的是(    )

A . ①的位置填写-3 B . ①的位置填写+3、②的位置填写-23,或-26+3 C . ①的位置填写-23 D . ②的位置填写+3
下面程序段的的运行结果为(     )

x = 5: y = -20

If Not x > 0 Then x = y - 3 Else y = x + 3

Print x - y; y – x

A . -3    3 B . 25    -25    C . -43    3 D . 3      -3
下列CASE子句不正确的是(       )
A . IS >10 B . 2  TO  6   C . “A”  TO  “E” D . IS >7  AND  IS <9
某VB程序段如下: 

s="491053”

For i=1 To 3

    n=Len(s)

    k=1

    For j=2 To n

        If Mid(s, k, 1) > > = Mid(s, j, 1) Then

            k=j

        Else

            Exit For 'Exit For表示退出循环

        End If

    Next j

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

Next i

Label1.Caption= s

执行该程序段后,标签Labe1中显示的值是(    )

A . 053 B . 953 C . 913 D . 103
下列循环结束后,s的值为(    )

s=0

for i in range(9):

  if i%3==0:

    s+=i

print(s)

A . 9 B . 18 C . 6 D . 15
求矩阵列和的最大值,算法如下:数字矩阵有n * n(n不大于10)个数组元素,数组元素为随机生成任意的两位正整数,按n行n列进行排列,其中第一行的数据依次为a(1)~a(n),第二行的数据依次为a(n+1)~a(2* n……。例如当n=5时,随机生成25个数组元素,并排列成5 *5的矩阵,第一行的数据为a(1)~a(5),第二行的数据依a(6)~a(10) …….。现要求按列进行求和,并找出最大值的列。小江编写了一个VB程序,功能如下:在文本框Text1中输入n的值,单击“计算”按钮Command1后,在列表框List1中显示随机生成的n *n的数字矩阵,同时在列表框List2中显示每一列数据的求和结果、最大值及对应的列号,程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 语句List1.AddItem s中的“AddItem"属于(单选, 填字母:A .对象名/B .属性名/C .方法名/D .过程名)。
  2. (2) 请在划线处填写合适的代码。

    Private Sub Command1_ Click( )

        Const Maxn= 100

        Dim i As Integer, j As Integer, c As Integer

        Dim max As Integer, sum As Integer, n As Integer

        Dim a(1 To Maxn) As Integer, s As String

        n= Val(Text1. Text)

        Randomize

        For i=1 To n* n

            a(i)=

            s=s+Str(a(i))

            If i Mod n=0 Then

                List1. AddItem s

                s=“”

            End If

        Next i

        For i=1 To n

            sum= 0

            For j=

                sum=sum+a(j)

            Next j

            List2. AddItem "第" + Str(i) +"列的和是:"+Str(sum)

            If sum > max Then max=sum :       '改错

        Next i

        List2. AddItem "其中第" + Str(c)+ "列和最大,值为:"+Str(max)

    End Sub

  3. (3) 程序中加框处代码有错,请改正。
小明编写VB程序实现有限小数、纯循环小数、混循环小数转化成最简分数。三种类型的小数转化方法如下表所示:

类型

计算公式

结果

有限小数

格式

a. b

(a*x+b)/x

示例

3. 14

(3*10^ 2+14)/10 2

157/50

纯循环小数

格式

a. (b)

(a*(x-1)+b)/(x-1)

示例

3. (14)

(3*(10^ 2-1)+14)/(10^2-1)

311/99

混循环小数

格式

a.b(c)

(a*(t-1)*x+ (b*t+c-b))/((t-1)*x)

示例

3. 14(159)

(3*(10 3-1)*10 2+(14*10 3+159-14))/(10^ 3-1)*10^2)

20923/6660

说明: ()内的数字串表示循环节 x=10 Len(b) t=10' Len(c)

程序运行时,在文本框Text1中输入小数,单击“转化”按钮,输出对应的分数,界面如图所示。

  1. (1) 在文本框中输入“0.0(6)”,转化成分数为
  2. (2) 实现上述功能的部分VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_ Click()

        Dim s As String, xS As String, zS As String

        Dim fz As Long, fm As Long

        Dim i As Integer

        Dim x As Integer, y As Integer

        s = Text1.Text

        i=1

        Do While Mid(s,  i, 1) <> "."

            i=i+1

        Loop

        zs =

        xs=Mid(s, i+1)

        If not(f(xs)) Then

            fm = power (Len(xs))

            fz = val(zs) * fm + vas (xs)

        Else

            If Mid(xs, 1, 1) = "(" Then

                xs = Mid(xs, 2, Len(xs) - 2)

                fm = power(Len(xs)) - 1

                fz = Val(zs) * fm + Val(xs) .

            Else

                x=0: y=0: i=1

                Do While Mid(xs, i, 1) <> "("

                     i=i+1

                Loop

                x=i-1

                y=Len(xs)-i-1

                fm =

                fz= Val (Mid(xs, 1, x)) * power(y)+Val (Mid(xs, i+1, y))-Val (Mid(xs, 1, x))

                fz=Val(zs)*fm+fz

            End If

        End If

        Label2. Caption = Str(fz / gcd(fz, fm)) + "/"+ Str(fm / gcd(fz,  fm))

    End Sub

    Function gcd (ByVal m As Long,  ByVal n As Long) As Long

        Dim r As Long

        Do While m Mod n<>0

            r= m Mod n

            m=n

            n=r

        Loop

       

    End Function

    Function f(s As String) As Boolean     '循环节判断

        '函数返回True代表循环小数,False 不是循环小数,代码略

    End Function

    Function power(x As Integer) As Long      '返回10的x次方

        '代码略

    End Function

有如下 Python 程序段:

s=”我爱 13aPP14LE!”

ans=res=""

for x in s:

  if "a"<=x<="z":

    ans=ans+chr(ord(x)-32)

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

      ans=ans+chr(ord(x)+32)

      if "0"<=x<="9":

        res=res+x t=ans+res

print(t)

A . 我爱 13aPP14LE B . Apple1314 C . 我爱 Apple1314 D . aPPLE1314
最近更新