4.4.4 循环控制的应用 知识点题库

有如下程序段,在Text1中输入1001011,Text2中输出的结果为(   )

Private Sub Command1_Click()

Dim s As String, i As Integer, d As Integer

d=0

s = Text1.Text

For i = Len(s) To 1 Step -1

  d = (d \ 2 + Val(Mid(s, i, 1)) * 2 ^ (Len(s) - 1))

Next i

Text2.Text = Str(100-d)

End Sub

A . 75 B . 25 C . -25 D . 50
已知字符串型数组a(下标为1到2*n),在a(2*i-1)中保存了某班第i个同学的姓名,在a(2*i)中保存了第i个同学的技术成绩,并且a(2),a(4)…,a(2*n)是按成绩数值由大到小排列的,且各不相同,现按对分查找的方式查找成绩是key的同学的姓名,假设成绩是key的同学必定存在,部分VB程序如下:

i=1:j=n:f=False

Do While i<=j and Not f

    ___________

    If Val(a(m))=key Then

      Search=m:f=True

    Elself Val(a(m))>key Then

        i=m\2+1

    Else

        j=m\2-1

    End If

Loop

Text2.Text="成绩是"+Str(key)+"的同学叫:"+a(m-1)

程序画线处应填入的代码为(  )

A . m=Fix((i+j)/2) B . m=(2*i+2*j)/2 C . m=Fix(i+j)/2*2 D . m=(Fix(i+j)/2)*2
编写“二进制加法”程序,实现如下功能:在文本框Text1和Text2中分别输入两个二进制数,单击“计算”按钮Command1,程序在位数较少的二进制数前补“0”,使两个二进制数位数相同,然后从右向左按位依次进行加法运算,最后在文本框Text3中显示相加的结果。程序运行界面如图所示。

  1. (1) 在设计程序界面时,要设置窗体的标题为“二进制加法”,应修改窗体的属性。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim s1, s2, result, t As String

      Dim span, jw As Integer

      s1=Text1. Text:s2=Text2. Text

      span=Len(s1)-Len(s2)

      If span<0 Then

        t=s1:s1=s2:s2=t

        span=   ①  

      End If

      For i=1 To span

        s2="0"+s2

      Next i

      jw=0:result="  "

      For i=   ②   To 1 Step-1

        x=Val(Mid(s1, I, 1))+Val(Mid(s2,i,1))+jw

        jw=x\2

        result=Str(x Mod 2)+result

      Next i

      If jw=1 Then result="1"+result

      Text3. Text=result

    End Sub

  3. (3) 在文本框Text1中输入“10”,在文本框Text2中输入“11000”,单击“计算”按钮Command1后,变量b2的值是
展开字符串,如果在输入的字符串中,含有类似于"c-g"或者“3-7"的字符串,就把它当作一种简写,字符串展开输出时有如下规则:

①如果“一”号右边的字符按照ASCII码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“一”号,例如"c-g"输出为"cdefg","3-7"输出为"34567"

②如果“一”号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,保留中间的“一”号,例如"a-a"输出时为"a-a","4-1"输出为"4-1"

③如果“一”号右边的字符恰好是左边字符的后续字符,则删除中间的“一”号,例如:"d-e"就输出为"de","3-4"应输出为“3-4"。

某同学按照上述算法,编写了VB程序,功能如下:在文本框Text1中输入简写字符串,单击“展开”按钮Command1后,程序进行字符串展开处理并显示在文本框Text2中。程序运行界面如图所示。

  1. (1) 如果输入的简写字符串为"abs—w—Y1234—5S—4Z",则展开后的字符串为
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim st1,st2 As String,i,n As Integer

      St1=Text1.Text

      n=Len(s1)

      st2=""

      For i=1 To n

        If pos(st1, i)<> "—" Then

          st2=st2+ pos(st1, i)

        Else

            If pos(st1, i) <pos(st1, 1) Then

              For j=Asc(pos(st1, i-1))+1To Asc(pos(st1, i+ 1))-1

                    ①   

              Next j

            Else

              st2 = st2+"—"

            End If

          End If

      Next i

      Text2. Text = s2

    End Sub

    Function pos(s As String, x As Integer) As String

           ②   

    End Function

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

用Python程序实现统计随机数出现的次数。若随机产生30个[0,9]的整数,统计数字0~9出现的次数。以下是部分Python程序段,请回答下列问题: .

import random

def check(a):

b=[0]*10     #初始化列表b,列表元素为10个0

for i in range(0,len(a)):

            ①        

return b

list=[0]*30

for i in range(0,30):

    num = random.randint(0,9)

           ②         

print(list)

print("0~9数字依次出现次数.:"       ③        )

  1. (1) check函数的功能是
  2. (2) 程序中划线处应填入的代码是什么?

     ② ③ 

某仓库对货物的编码规则为:货物类型(4-8位英文字母)货物编码(4-8位数字)货物校验码。货物编码的每一位数除以2产生的余数,倒序输出即是货物正确的校验码,现编写如下VB程序,如图在Text1中输入货物完整编码后,判定校验码是否符合标准,并在Label1中输出结果。

  1. (1) 由程序可知,此程序中按钮的名称为
  2. (2) 请在划线处填入合适的代码。

    Private Sub check_Click()

        Dim s as string, ss as string, s1 as string, s2 as string

        Dim i as integer, bz as integer

       

        bz = 0

        For i = 1 To Len(s)

            ss = Mid(s, i, 1)

            If ss = "-" Then

                bz = bz + 1

            ElseIf bz = 1 Then

                s1 = CStr() + s1      ‘Cstr函数是在str的基础上去除前导空格

            ElseIf bz = 2 Then

                s2 = s2 + ss

            End If

        Next i

        If  Then

            Label1.Caption = "符合标准"

        Else

            Label1.Caption = "不符合标准"

        End If

    End Sub

有如下程序段:

x = 60:t=2:c=0

Do While x> 1

    If x Mod t=0 Then

        c=c+1:x=x\t

    Else

        t=t+1

Loop

执行该程序段后,变量c的值是(     )

A . 3 B . 4 C . 5 D . 9
While循环语句的循环体中必须有改变条件表达式值的语句,否则会形成死循环。
用英文字母 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中显示编码结果为
如下Python程序段

x = 0

while x < 50:

    x = (x + 2) * (x + 3)

运行后,x的值为(    )

A . 0 B . 72 C . 50 D . 168
有如下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
阅读以下程序,写出程序运行结果。

def jc(n):

s=1

for i in range(2,n+1):

    s=s*i

    return s

    total=jc(4)    #调用jc函数

print(total)

程序运行后,其输出结果为

下面的程序段运行后的结果为(   )。

s=0

for i in range(1,8,3):

s=s+i

print(s)

A . 4 B . 9 C . 11 D . 12
某校为了响应双减政策每周加设了一节体育选修课程,为了便于学校师资安排及课程的开设,需要对学生选课需求进行摸排。学校可以开设的课程共9门,在前期选课时学生可以选择自己喜欢的3门课程,选课信息已保存在文本文件中(课程名称用数字1~9表示),最终每个学生只安排1门课程学习。为了统计每门课程的选课人数及同选最多的两门课程,编写了以下程序。

所谓“同选”是指学生在3门课的选择中最喜欢一起选的两门课,比如A同学选了124,B同学选了134,则同选最多的两门课为14。请回答以下问题:

  1. (1) 该程序先将文本文件的选课数据读取并保存到列表xk中,文本文件及读取到列表后部分数据如图所示,则该列表数据项的数据结构是(选填:字符串/列表/字典),数据项中的数据元素(如‘5’)的数据类型是(选填:整型/实型/字符串型)

      

  2. (2) 程序运行结果如图所示,补充完整划线处的代码

    course=["排球","篮球","足球","羽毛球","乒乓球","网球","健身操","游泳","太极"]

    xk=[]       #存储选课信息,用数字1~9表示9门课程

    f=[0]*9     #存储9门课程的选课人数

    d=[0]*100   #存储两门课程同选的次数,如d[26]=50表示篮球和网球被50个同学同选

    def relation(y):          #计算列表y中各数据项的同选次数

        for i in range(1,10):

            for j in range(i+1,10):

                if str(i) in y and str(j) in y:            #课程i,j均在列表y中出现

                    d[10*i+j]+=1        #第i和第j门课程同选次数加1存储在列表d中

    file=open("xk.txt","r")      #打开文件

    line=file.readline()

    while line:               #读取文件数据到列表xk中,数据样式详见第(1)小题图所示

        line=line.split()

        xk.append(line)

        line=file.readline()

    file.close()

    for y in xk:               #对列表xk中的各数据项进行处理

        relation(y)           #调用定义函数统计y中各门课程同选次数,存储到列表d中

        for x in y:            #遍历数据项y中的元素,统计每门课程的选课人数

           

    for i in range(9):

        print(course[i],"选课人数:",,"人")   #输出每门课程的选课人数

    maxd=max(d)

    print("同选最多的两门课程是:")

    for k in range(100):

        if d[k]==maxd:

            print(course[k//10-1],)       #根据列表d的索引计算两门同选课程索引

现需要查找正整数数组元素a(1)到a(10)中距离最远的两个相同数字,输出其最远距离,如下VB程序段实现该功能,其中f数组中所有元素的初始值为0。

For i=1 To 10

    If f(a(i)) = 0 Then

          ① 

    Else

        If i - f(a(i)) > max Then max = i - f(a(i))

    End If

Next i

Text1.Text = Str(max)

则代码①处的语句可为

A . f(a(i))=a(i) B . f(i)=f(a(i)) C . f(a(i))=i D . f(a(i))=f(i)
a=[3,7,2,5,4,6,9,1]

m=abs(a[0]-a[1])

for i in range(2,len(a)):

    if abs(a[i]-a[i-1])>m:

        m=abs(a[i]-a[i-1])

则程序执行后,m的值是(     )

A . 4 B . 5 C . 7 D . 8
小明为了将十进制数转化为k进制数(k值范围在2到16之间),设计如下界面程序:在文本框Text1中输入一个十进制数,在文本框Text2中输入整数k,单击“运行”按钮Command1,程序将十进制转化为k进制值,并在标签Label1中输出结果。请回答下列问题:

  1. (1) 程序窗体中“运行”所用的控件是(选项A . ;B . ;C . ;D . )。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_ Click()

      Dim d As Integer, k As Integer, r As Integer

      Dim s As String, c As String

      d= Val(Text1. Text)

      k= Val(Text2. Text)

      s=" "

      Do While d>0

        r=d Mod k

        If r>=10 Then

          c= Mid(“ABCDEF”,,1)

        Else

          c=str(r)

        End If

        s=

        d=d\ k

      Loop

      Label1. Caption=“结果为:”+s

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入“28”,文本框Text2 中输入“16”,单击“运行”按钮,则Label1显示的内容为是
有如下 VB 程序段

i = 1: j = 6: s = ""

Key = Val(Text1.Text) Randomize

Do While i <= j

m = Int(Rnd * (j - i + 1) + i) s = s + Str(a(m))

If a(m) < Key Then j = m - 1

ElseIf a(m) > Key Then i = m + 1

Else

Exit Do

End If

Loop

数组元素 a(1)到 a(6)的值依次为“88、76、64、25、24、12 ”,文本框 Text1 中输入 key 值,执行该程序段,s 值不可能的是(    )

A . 76     88 B . 88     12  25   24 C . 25     64  88  76 D . 64     12  88   24
小明编写了一个字符串去重程序,它的功能是对字符串进行去重,并保持原顺序不变。例如,输入的字符串为“absnbassqr”,执行程序后输出的字符串为“absnqr”。实现上述算法的Python程序如下,请在划线处填入合适的代码。

s1=input( "请输入字符串:")

n =len(s1)

p=[]

s=""

for i in range(n):

    p.append(s1[i] )

    for i in range(n):

       

        while j < n:

            if p[i]==p[j]:

                for k in range(j+1,n):

                   

                    n-=1 j-=1

                j+=1

            for i in range(n):

               

print(s)

下面是“打印矩形.py”,正确答案是(   )。

请填空完善该程序,实现功能:按程序提示依次输入行和列的数字,则按行列打印由“*”组成的矩形。例如,按提示输入:

请输入行数:3

请输入列数:5

屏幕将打印以下图形:

a=int(input("请输入行数:"))

b=  ①  

for i in range(  ②  ):

    for j   ③  

        print(  ④  , end=' ')    #end=' '表示接上一个输出项后输出,不换行

print( )

A . ① int(input("请输入列数:"))  ② a+1  ③in range(b)      ④‘*’ B . ① int(input("请输入行数:"))  ② a+1  ③in range(b+1)    ④‘**’ C . ① int(input("请输入列数:"))  ② a     ③in range(b)      ④‘*’ D . ① int(input("请输入列数:"))  ② a     ③in range(b+1)    ④‘**’
最近更新