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

【加试题】有如下VB程序段:

For i = 5 To 4 Step -1

        k = i

        For j = 6 - i To 1 Step -1

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

        Next j

        If i <> k Then

           t = a(i): a(i) = a(k): a(k) = t

        End If

    Next i

数组元素a(1)到a(5)的值依次为“41,66,70,83,31”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为(  )

A . 31,41,66,83,70 B . 83,70,66,41,31 C . 83,66,70,41,31 D . 31,41,66,70,83
某算法的部分流程图如图所示。执行这部分流程,则输出的sum的值是(   )

A . 2450 B . 2550 C . 5050 D . 4900
有如下VB程序段:

s=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

Text1. Text= Str(s)

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

A . 9 B . 7 C . 6 D . 5
有如下 VB 程序段:

For i=1 To 100

For j=i To 100

If j Mod i = 0 Then a(j)=a(j)+1

Next j

Next i

Text1.Text=Str(a(30))

数组a各元素的初值为0,执行上述程序段后,文本框Text1中输出的内容为 (   )

A . 30 B . 9 C . 8 D . 7
有如下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”时最大
运行以下VB程序,输出结果是

Private Sub Command1_Click()

Dim s As Integer, x As Integer

s = 0

x = 20

For x = 20 To 1 Step -3

    s = s + x

Next x

Print x

End Sub

有如下VB程序段:

n=10

For i=1 Ton-1

    For j=i+1 To n

        If a(i)=a(j)Then

          a(j)=a(n)

          n=n-1

        End If

    Next j

Next i

若数组a中的元素为“3,3,7,7,11,11,15,15,19,19”,则该程序执行后,数组a中的n个元素值依次为(  )

A . 3,19,7,15,11 B . 3,7,11,15,19 C . 3,3,7,7,11 D . 3,19,7,19,11
编写“字符串生成”的Python程序。程序功能:输入由多个正整数组成的字符串t1(这些正整数以“,”为分割符和结束符),并以这些整数为位置信息,依次从字典内容(t2)中提取相应字符并连接成字符串(s),最后将字符串(s)显示输出。其中,字典内容(2)从文件“dictionary.txt"中读取。

例如:

输入的t1="2,8,15,"

字典内容(t2)从文件“dictionary.txt”中读取的内容为“python is a programming language.”

程序最终输出的字符串(s)为:yio

实现上述功能的某Python程序如下:

f=open('dictionary.txt', 'r')

t1=input('字符位置:')

t2=f.read( )

s=' '

t=' '

for i in range     ①     

    c=t1[i]

    if c==',':

        p=int(t)

        s=s+t2[p-1]

        t="

    else:

           ②     

print(生成内容:',s)

f.close

为了使程序能正确运行,上述程序中划线处的代码分别为:①

有如下VB程序段:

For i = 1 To 2

    For j = 6 To 2 * (i + 1) Step -2

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

            t = a(j): a(j) = a(j - 2): a(j - 2) = t

        End If

    Next j

Next i

假定数组元素a(1)~a(6)的值依次为“happy,sky,change,sk,bellow,hello”。执行该程序段后,a(4)~a(6)的值依次是(    )

A . sk,bellow,sky B . sky,bellow,sk C . sk,happy,sky D . happy,sk,sky
对称字符串的特征是从左到右读和从右到左读是完全一样的。如“abba”是对称的,“abcba”也是对称的。判断字符串是否对称的VB程序段如下, 请完善以下两处代码

s=Text1.Text

n=Len(s)                's是待判断的字符串

k=0: j=n

For i=1 to n\2

    c1=Mid(s, i, 1)

    c2=Mid(s, j, 1)

    If c1 <> c2 Then k = k+1: Exit For

        j=

    Next i

    If Then Label1.Caption="对称" Else Label1.Caption="不对称"

有如下 VB 程序段:

For i=1 to 6

    b(i)=a(i)

Next i

s=0

For i=2 to 6

    if a(i)+a(i-1)<a(i) then b(i)=a(i)+a(i-1)

    s=s+b(i)

Next i

数组元素a(1)到a(6)的值依次为“8,-2,5,7,-6,1”,执行该程序后,变量s的值为(      )

A . -3 B . 17 C . 5 D . 13
有百位和十位未知的5位整数“22**6,能被37或67整除。以下VB程序段的功能是:在满足条件的所有数中,将最大一个5位数的百位和十位依次显示在文本框Text1中。

i=100:flag=False

Do While i>0 And Not flag

   

Loop

Text1. Text = Str(i\10)+Str(i Mod 10)

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

①j=22006+i*10    ②i=i-1  ③If(j Mod 37)*(j Mod 67)=0 Then flag = True

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

A . ①②③ B . ①③② C . ②①③ D . ②③①
编写程序,实现功能:通过双向排序,使数组元素a(1)到a(n)升序排列。

Const n =10

Dim a(1 To n)As Integer

‘随机生成10个1-100之间的数存储在数组a中,代码略

For i=1 to n\2

For j=    ⑴     To i+1 Step-1

If a(j)<a(j-1)Then t = a(j):a(j)=a(j-1):a(j-1)=t

Next j

For k=i+1 To    ⑵      

If a(k)>a(k +1)Then t =a(k):a(k)= a(k +1):a(k+1)=t

Next k

Next i

划线处可选代码为:①2   ②n-i+1   ③n   ④n-i

则(1)、(2)处语句依次为(    )

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

c=0:p=0:q=0

For i =1 To 5

    b(i)= a (6-i)

Next i

For i=1 To 3

    If (b(i)+b(i+1)*2+b(i+2)*3)Mod 5=0 Then

        p=p+1

    Else

        q=q+1

    End If

    If p <=q Then c=c+1

Next i

数组元素a(1)到a(5)的值依次为“2,1,2,3,4”,执行该程序段后,c的值为(    )

A . 0 B . 1 C . 2 D . 3
某中学的政教处公布的早操和课间操点名缺勤扣分规则为:每天各班初始10分,考勤时每缺少1人扣0.5分。每天及时公布各班的两操得分情况及最高得分,同时还公布获得最高分的班级以表扬先进。为了实现这一功能,政教处李老师编写了Python程序。代码及运行界面如下。

(图-1是输入数据文件“dianming.txt”,该文件有三列数据,第一列表示班级编号,第二列表示实际早操到岗人数,第三列表示实际课间操到岗人数;图-2 是程序运行后的结果)

班级

1班

2班

3班

4班

5班

6班

7班

8班

9班

10班

早操应到人数

38

39

41

40

39

38

42

38

38

39

课间操应到人数

40

40

43

41

40

40

42

38

39

40

Python代码如下:

dic = {1:[38,40],2:[39,40],3:[41,43],4:[40,41],5:[39,40],

6:[38,40],7:[42,42],8:[38,38],9:[38,39],10:[39,40]}

defen = [0]*10

f = open("dianming.txt")        #打开dianming.txt 文件作为输入

lines = f.readlines()

for line in lines:

  x,y,z = map(int,line.split())       #将每行数据以空格为分隔符分离并转换为整型存入相应的变量x、y、z

  defen[x-1] =     ①    

print(x,"班今日两操得分:",defen[x-1])

mxfenshu = max(defen)

print("今日最高得分:",mxfenshu)

print("获得最高分的班级有:" ,end=" ")

for i in range(10):

  if      ②        :

    print(i+1,"班",end="/")

  1. (1) 如果“dianming.txt”文件中的点名数据没有按照班级升序排序,该程序是否能正确计算各班级得分。(填字母,A .是/ B .否)
  2. (2) 根据题意,请在划线处填入合适的语句或表达式
  3. (3) 3班的班主任反映该班课间操人数是44 人,则可以通过下列哪些语句进行修正         (多选)
    A . dic[3]=[41,44] B . dic[3,2]=[44] C . dic[3,1]=[44] D . dic[3][1]=44
已知圆体积公式为 , 通过设备能测得圆球的直径d,请你写出程序,输入圆直径就能计算出圆体积的值(圆周率π取3.14)
找英文单词并统计每个单词的字母数量设计一个VB程序,程序实现功能如下:在文本框Text1中输入文章信息,点击“统计”按钮Command1,依次在列表框List1 中显示连续的字符,最后一行显示每个连续字母的数量,数字之间用“,”隔开。

程序界面如图所示,实现上述功能的VB代码如下,请回答下列问题:

  1. (1) 代码中的AddItem属于( 单选,填字母:A .属性名/B .方法名/C .对象名)。
  2. (2) 请在划线处填上合适的代码。

    Private Sub Command1_Click()

        Dim s As String, ans As String

        Dim ch As String, n As Integer

        Dim i As Integer

        s= Text1.Text

        ans =““: n=0

        For i=1 To Len(s)

           

            If ch>= "A" And ch<= "Z" Or ch>>="a" And ch<=" z" Then

                n=n+1

            ElseIf n > 0 Then

                ans=ans+Str(n) + ","

                List1.AddItem

                n=0

            End If

        Next i

        List1.AddItem"连续字母的数量依次为:"+ans

    End Sub

  3. (3) 若在文本框Text1中输入的内容为“Summer vacation is comming”(不带双引号),运行程序后,ans的值为
下列VB程序的功能是:程序运行时,在文本框Textin中输入正整数n.单击命令按钮Command1后,统计1至n的整数中包含数字2的整数个数,并在文本框Textout中输出结果,若n=20,有2、12和20三个整数包含数字2,则文本框Textout中输出“3”。

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

Private Sub Command1_Click()

    Dim i As Long, n As Long, t As Long

    Dim s As Long     ′s用于统计1到n之间包含数字2的整数个数

    Dim k As Boolean

    s = 0

    n = Val(Textin.Text)

    For i = 1 To n

        k = False

        t = i

        Do While Not k And t > 0

            

            t = t \ 10

        Loop

        If k Then

    Next i

   Textout.Text = Str(s)

End Sub

小墩和小融打乒乓球,利用Micro:bit主板的 LED 阵列实时显示比分情况(如图1所示,2个方框分别表示小墩和小融比分区,每个亮点表示1分),并在BXY Python Editor软件的串口中实时输出对局输赢情况(如图2所示)。

图1

图2

操作步骤:小墩得1分,按下Micro:bit主板的按钮A,左侧比分区亮点加1;小融得1分,按下按钮B,右侧比分区亮点加1。一局比赛初始比分为0:0,每一局中先达到10分的选手可以赢得该局。

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

    from microbit import *

    def bf(x,y):

        #在led板上显示比分情况,代码略

    m=0;n=0  #m表示小墩得分,n表示小融得分

    while True:

        if button_a.is_pressed():   #若按钮A被按下,则小墩得1分

            m+=1

        elif button_b.is_pressed():  #若按钮B被按下,则小融得1分

            n+=1

        if :

            if m>n:

                print("第",i,"局:小墩赢,比分:",m,":",n)

            else:

                print("第",i,"局:小融赢,比分:",m,":",n)

            i+=1;m,n=0,0

        bf(m,n)

        sleep(200)  #设置程序运行间隔为200毫秒

  2. (2) 根据上述程序,下列比分情况不可能出现的是(   )。
    A . B . C . D .
有如下 python 程序段:

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

min = a[0]

s = 0

for i in range(1,5):

  if a[i] < min:

    min = a[i]

    s = s + min print(s)

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

A . 1 B . 4 C . 6 D . 15
最近更新