2.2 算法的控制结构 知识点题库

有如下程序段,运行时程序出现如下错误提示,出错语句的位置是 (  )

Private Sub Command1_Click()

 Dim i As Integer

 Dim a(10)As Integer    ‘①

 For i=1 To 10    ‘②

  a(i)=Rnd* 100    ‘③

 Next i

 Label1.Caption=Str(a(i))    ‘④

End Sub

A . B . C . D .
有如下VB程序段:

a(I)=68: a(2)=88: a(3)=76: a(4)= 60: a(5)=98: a(6)=100: a(7)= 64: a(8)=85: a(9)=99: a(10)=59

  For i=1 To 9

    b(i)=Abs(a(i+1)-a(i))

    c(b(i)\10)= c(b(i)\10) + 1

  Next i

  For i=0 To 10

    If c(i)> 0 Then Label1.Caption = Label1.Caption + "" + Str(c(i))

Next i

数组c各元素初值为0,执行该程序段,标签Label 1上显示的内容是(  )

A . 1 3 2 2 1 B . 1 3 2 1 2 C . 2 3 2 2 1 D . 2 3 2 1 1
有下列VB程序:

Private Sub Command1_click ( )

Dim i As Integer, n As Integer

Dim s1 As String, s2 As string, c As String

s1 = Text1. Text: s2 = “”

For i = 1 To Len(s1)

    c = Mid (s1, i, 1)

    If c > = “a" And c < = “z” Then s2 = c+s2

Next i

Text2. Text = s2

End sub

该程序运行时,在文本框Text1中输入”Flash CS33”(不包含””),单击命令按钮Command1后,文本框Text2中显示的内容是(  )

A . lash B . hsal C . FlashCS D . SChsalF
有如下程序段:

s=Text 1.Text

t=“”

For i=1ToLen(s) 

  c=Mid(s,i,1)

  If c<“a”Or c>“z”The nt=“”

  t=c+t

Next i

Label 1.Caption=t

执行此程序段时,在文本框Text 1中输入“2020NihaoWolaile”,则标签Label 1中显示的内容是(  )

A . elia loW B . elia lo C . elia D . eli
关于以下流程图的说法不正确的是:(  )

A . 该算法作用是输入两个数,输出较大的数。 B . 该算法中没有体现“运算”。 C . 该算法具有分支结构(选择结构)。 D . 如果输入的a、b分别为3和5,则算法的输出为5。
阅读下列程序,写出运行结果。运行输出结果是:

Dim Sum As Long

Dim i As Long

Sum=0

i=0

Do While Sum<10

 i=i+1

 Sum=Sum+i*i

Loop

Print Sum

一个正整数x,如果它的平方数的最后几位数字和这个数相等,则该数为同构数。例如:5的平方数是25,且5出现在25的右侧,那么5就是一个同构数。设计程序,求2-1000间的同构数之和s。
  1. (1) 列举X可能解的算法结构是            , 判断X是真正解的算法结构是           
    A . 分支结构,循环结构 B . 循环结构,分支结构 C . 循环结构,顺序结构 D . 顺序结构,分支结构
  2. (2) 若t是正整数x的平方数,判断x是同构数的条件是           
    A . (x=t mod 10) and (x=t mod 100) and (x=t mod 1000) B . (x=t mod 10) or (x=t mod 100) or (x=t mod 1000) C . (x=t\10) and (x=t\100) and (x=t\1000) D . (x=t\10) or (x=t\100) or (x=t\1000)
  3. (3) 编写程序,求2-1000间的同构数之和s=
以下程序执行后变量y的值为 (     )

t = "abcd123456"

x = Sqr(Len(t))

y = 0

If x >0 Then

  y = 2

ElseIf x >1 Then

  y = 3

ElseIf x >2 Then

  y = 4

Else

  y = 5

End If

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

a(1) = 1

For i = 2 To 6

a(i)=a(i-1)+Int(Rnd*5+1)

If a(i) Mod 2 = 1 Then

a(i) = a(i) \2 + 1

Else

a(i) = a(i) / 2

End If

Next i

执行程序后,a数组各元素可能是(  )

A . 1 3 4 6 7 9 B . 1 2 0 3 5 6 C . 1 2 3 4 5 4 D . 1 3 4 5 1 1
程序设计题:身份证的编码问题。中国大陆居民身份证号码由18位数字组成:第1至6位的数字为地址代码,表示某省某市某区或县;第7至14位的数字代表居民的出生年月日;第15至17位的数字代表同一辖区内、同年同月同日出生的顺序号,其中第17位数字表示性别,奇数为男性,偶数为女性;第18位数字代表校验码。校验码是0~10这十个数字中的任意一个,其中10用X表示。

校验码的计算方法如下:

①将身份证号码的前17位数字分别乘以对应的系数。对应关系如下:

号码位

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

系数

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

②将17位数字和系数相乘的结果累计求和;

③用所求的和除以11得到余数;

④用余数与身份证号码的最后一位校验码进行对应,对应关系如下:

余数

0

1

2

3

4

5

6

7

8

9

10

校验码

1

0

X

9

8

7

6

5

4

3

2

  1. (1) 小明身份证号码的前17位为33900520020808621,则他的第18位校验码为 。
  2. (2) 小明想设计一个Python程序用于身份证号码验证,实现如下功能:输入身份证号码,输出出生日期、性别,实现判断最后一位校验码是否正确。部分程序代码如下所示,请补全代码并上机调试。

    ID=input("请输入十八位身份证号码: ")#输入身份证号码

    sex={0:"女",1:"男",2:"女",3:"男",4:女,5:"男": 6:"女",7:"男"."8:"女",9:"男"}

    ID_ birth=ID[6:14]

    ID_ sex=ID[16]

    ID_ check=ID[17]

    #求出year,month,day

         ①  

    print("出生日期: "+year+"年"+ month+"月"+day+"日")

    print("性别:",   ②    )

    ID=list(ID)                    #把字符串转成列表

    ID=list(map(int, ID[0:17]))   #把前17个元素转成整型

    ID_ CHECK=["1","0'","X'","9“,"8","7”,"6“,"5”,"4","3","2"]

        ③    

    #用列表存储每一位权值

    #17位数字和系数相乘的结果累计求和

    #求余数

    #求验证码

    print("验证码是否正确:", check-= =ID_check)

有如下 VB 程序段:

s=0: x=0

For k = 3 To 1 Step -1

    If k <= 1 Then x = 1

    If k <= 2 Then x = 2

    If k <= 3 Then x = 3

    s = s + x

Next k

该程序段运行后,变量s的值是(    )

A . 9 B . 8 C . 6 D . 3
下列VB程序段功能为:数组元素a(1)至a(20)中存储的是0-9之间的随机整数,查找在数组a中连续出现数字b的数组元素个数和起始位置,若有多个相同元素个数,则记录最后出现的起始位置。

b = 5

k = 0: imax = 0

For i = 1 To 20

    If a(i) = b Then

        k = k + 1

        If   ⑴   Then

            imax = k

              ⑵ 

        End If

    Else

        k = 0

    End If

Next i

Label1.Caption = "最大长度:" +Str(imax) +",起始位置:" + Str(st)

划线处可选代码为:

①k > imax ② k >= imax ③ st = i - imax + 1 ④ st = i

下列选项中,代码顺序正确的是(    )

A . ①③ B . ①④ C . ②③ D . ②④
为抗击疫情、保卫健康,很多公共场所出入口都安装了人脸识别测温系统解决方案。该系统具有隔空检测体温、人脸识别、口罩识别、考勤、门禁联动等功能,能快速完成检测。如下图所示:

 

  1. (1) 进出道闸时进行人脸检测和体温检测,对于符合条件的人员道闸会自动打开,反之则提示不能进入,此处的算法结构应该是结构。
  2. (2) 该道闸也可以通过在上图中①处刷IC卡开启道闸,此处利用了技术。
  3. (3) 人脸检测开启道闸的工作原理是:当人员通过时将人脸与系统中预先存储的人脸信息做比对,判断是否符合条件,上图中②处的数码相机作用是
  4. (4) 该系统可以与互联网相连接,为了提高该系统的安全性,上图中③处的设备是
用英文字母 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中显示编码结果为
小丫觉得回文字符串太优美了(回文字符串是指顺读和倒读都一样的字符串,如“123321”),为此编写了VB 程序。程序运行时,单击按钮Command1 后,根据文本框Text1 中输入的内容判断并输出是不是回文串。实现上述功能的VB 代码如下。

Private Sub Command1_Click()

    Dim s As String, f As Boolean, L As Integer

    s = Text1.Text

    j = Len(s)

    i = 1

    Do while

        i = i+1

        j = j-1

    Loop

    If Then Print "是回文串" Else Print " 不是回文串"

End Sub

在画线处填入合适代码,使程序能正常运行。

小明编写Python程序,把百分制分数(fenshu)转换为五分制等级,然后输出等级。例如分数95,程序输出 “A”。转换规则如下,请在横线填入正确的代码。

大于等于90分为A;

小于90且大于等于80为B;

小于80且大于等于70为C;

小于70且大于等于60为D;

小于60为E。

if fenshu>=90:        #变量fenshu表示分数

grade="A"

 

grade="B"

elif fenshu >=70:

grade="C"

elif fenshu >=60:

grade="D"

else:

grade="E"

                #输出等第

有如下程序段:

def f(a,b):

if a>b:

return a-b return a+b

x1=int(input("请输入第一个数"))

x2=int(input("请输入第二个数"))

print(f(f(x1,x2),f(x2,x1)))

当键盘输入12和13后,程序输出的结果是(    )

A . 重复调用出错 B . 50 C . 24 D . 26
下列循环结束后,s的值为(    )

s=0

for i in range(9):

  if i%3==0:

    s+=i

print(s)

A . 9 B . 18 C . 6 D . 15
张老师在筹备一次班级活动,活动的场地可以看成由m*n个小方格组成的矩阵(m,n<=100),由于活动需要,计划给这个场地铺上红地毯。当前的地毯都是矩形的,但是大小不一每块地毯铺设位置由左上角(x1,y1)和右下角(x2,y2)两个坐标确定,且刚好铺满该矩形区域。

张老师想了解每个小方格被多少块地毯覆盖,以便更好地调整地毯铺设位置,他编写了VB程序,实现以下功能:在文本框Text1中输人行数m,在文本框Text2中输入列数n,在Text3中输入每块地毯铺设的坐标x1,y1,x2,y2……坐标之间逗号分隔,地毯数量不超过100),单击计算按钮Commmand1,在列表框List1中显示每个小方格被多少块地毯覆盖。程序运行界面如图所示。

  1. (1) 文本框Text1中输人行数为5,在文本框Text2中输人列数5,在Text3中输人的地毯铺设的坐标为s=1,1,2,2,1,2,3,3则最后输出矩阵a(7)的值为。 (填数字)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Dim m As Integer

    Dim n As Integer

    Dim a, b, C, d As Integer

    Dim flag(0 To 10000) As Integer

    Dim sum(0 To 10000) As Integer

    Dim pos(0 To 100) As Integer

    Private Sub Command1_Click()

        List1. Clear

        m = Val(Text1. Text)

        n = Val(Text2. Text)

        s = Text3. Text

        '读取每块地毯坐标,并按顺序存储在pos数组中

        '地毯总数量存储在变量k中

        For i=1 To k

            a= pos(i * 4- 3):b= pos(i * 4- 2):c= pos(i * 4- 1):d= pos(i * 4)

            

        Next i

        For i=1 To m

            

            For j=1 To n

                sum((i- 1) *n+ j) = sum((i- 1) * n+ j- 1) + flag((i- 1)*n+ j)

                s=s+Str(sum((i-1)*n+j))

            Next j

            List1. AddItem s

        Next i

    End Sub

    Sub add (ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)

        '按行标记地毯铺设情况

        For i=x1 To x2

            flag((i - 1) * n + y1) = flag((i- 1)*n+y1) + 1

           

        Next i

    End Sub

编写VB程序,功能是根据A城和B城同一时间段内的温度数据,计算两城温差(A城温度B城温度)A城数据和B城数据分别为包含若于个记录的序列,其中,A城每个记录包含温度及其截止时间,B城每个记录包含温度及其持续时长。两城温差计算结果表示为若干个记录的序列,每个记录包含温差及其持续时长。持续时长是指同一温度(或温差)保持不变的最大时长。示例见下表。

时间

第1小时

第2小时

第3小时

第4小时

第5小时

第6小时

第7小时

A城温度

30

30

33

33

31

31

32

A城数据

温度

30

33

31

32

截止时间

2

4

6

7

B城温度

20

20

20

22

21

21

22

B城数据

温度

20

22

21

22

持续时长

3

1

2

1

计算结果

温差

10

13

11

10

持续时长

2

1

1

3

(时间单位:小时,温度单位:摄氏度)

表中,A城数据有4个记录,其中第1个记录为(温度30,截止时间2),第2个记录为(温度33,截止时间4),这表明从开始到第2小时的温度都是30,此后到第4小时的温度都是33。B城数据有4个记录,其中第3个记录为(温度21,持续时长2),这表明第5、第6这2个小时的温度都是21。两城温差计算结果的第4个记录为(温差10,持续时长3),这表明第5第6、第7这3个小时的温差都是10。

  1. (1) 若将示例中A城数据修改为3个记录,依次是(温度30,截止时间4)、(温度31,截止时间6)、(温度32,截止时间7),B城数据不变,则两城温差计算结果中第1个记录为(温差10,持续时长)(填数值)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const m =1000                ‘温度数据和温差数据包含的记录数都少于1000

    Dim na As Integer, nb as integer   ‘A、B城数据分别有na和nb个记录

    Dim ha(m)As Integer        ‘ha(i)存储A城第i个记录中的温度

    Dim ta(m)As Integer          ‘ta(i)存储A城第i个记录中的截止时间

    Dim hb(m)As Integer          ‘hb(i)存储B城第i个记录中的温度

    Dim tb(m)As Integer          ‘tb(i)存储B城第i个记录中的持续时长

    Dim h(m)As Integer          ‘h(i)存储计算结果第i个记录中的温差

    Dim t(m)As Integer            ‘t(i)存储计算结果第i个记录中的持续时长

    Private Sub Command1_ Click( )

        Dim i As Integer, j As Integer

        Dim p0 As Integer, p1 As Integer, diff As Integer

        Dim n As Integer        ‘两城温差数据的记录个数

         ‘读取两城数据,存入变量ma,nb及数组ha,ta,hb,tb中,代码略

        For i=2 To nb

            tb(i)=    ‘将B城第i个记录中的持续时长转换为截止时间

        Next i

        i=1 : j=1

        n=0

        p0=0

        Do While i < na And i<= nb

            diff ha(i)-hb(j)

            p1 = ta(i)

            IfThen i =i+1

            If p1 >= tb (j) Then

                p1 = tb(i)

                j=j+1

            End if

            If n = 0 Or diff <> h(n) Then

                n=n+1

                h(n) = diff

                t(n) = pl-p0

            Else

               

            End If

            p0=pl

        Loop

         ‘输出两城温差数据,代码略

    End Sub