4.4.3 循环嵌套的应用 知识点题库

输入5个数,分别完成以下操作:

按照次序逆序输出并从小到大输出。提示:list.reverse(),list.sort()

某1年期理财产品实际收益率为4.25%,由于产品一直在持续运作,投资者不按时赎回视为自动再投资。在收益率不变的情况下,至少多少年后投资可以翻倍?
有如下VB程序段:

Fori=1 To 3

   For j=6 To i+1 Step-1

    If a(j) > a(j-1) Then

      k=a(j): a(j)=a(j-1): a(j-1)=k

End If

Next j

   s=s+“"”+str(a(i))

Next i

Text1. Text=str(s)

数组元素从a(1)到a(6)的数据依次为“3、7、25、8、9”,经过该程序“加工”后,文本框Text1中显示的是(    )

A . 2  3 5 B . 9 8 7 C . 3 7 2 D . 7 3 2
尼克斯彻定理:任何一个大于等于1的整数的立方等于一串连续奇数之和,如:13=1,23=3+5,33=7+9+11。编写一个VB程序验证该定理,程序运行时,在文本框Text1中输入一个大于等于1的整数,单击“验证”按钮Command1后,在文本框Text2中显示验证结果,运行界面如图所示。

实现上述功能的VB代码如下,其中加框处代码有误,请改正。

Private Sub Command1_Click( )

  Dim a,b,n,t,sum As Integer

  Dim flag As Boolean,s As String

  n=Val(Text1.Text)

  For i=1 To n-3 Step 2

    sum=0:t=i:a=t:flag=False

    Do While sum<n^3 And flag=False

        sum=sum+t

        b=t

                            ‘⑴

        If sum=n^3 Then flag=True

    Loop

    If flag=True Then Exit For

  Next i

  s=Str(n)+"^"+Str(3)+"="+Str(a)

  For  To b Step 2           ‘⑵

    s=s+"+"+Str(i)

  Next i

  Text2.Text=s

End Sub

以上程序段运行时,为了实现上述功能,加框处代码应改正为:⑴;⑵

有如下VB程序段:

s1 = Text1.Text

s2 = ""

For i = 1 To Len(s1)

    c = Mid(s1, i, 1)

    If c >= "A" And c <= "Z" Then

        c = Chr(Asc(c) + 32)

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

        c = Chr((Asc(c) - Asc("0") + 2) Mod 10 + Asc("0"))

    End If

    s2 = c + s2

Next i

Text2.Text = s2

该程序段运行后,若在文本框Text1中输入“A19bCD”,则文本框Text2中显示的内容是(    )

A . a19bcd B . a31bcd C . dcb31a D . dcb13a
程序代码如下:

m=a(1):s=0

For i= 2 To 5

    If a(i)> m Then m=a(i)

    s=s+m

    If a(i)<m Then m=a(i)

    s=s+m

Next i

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

A . 9 B . 14 C . 18 D . 19
有如下 VB 程序段:

s = "python2021": t = "": i = 1

Do While i < Len(s)

    c = Mid(s, i, 1): d = Mid(s, i + 1, 1)

    If c < d Then t = t + c Else t = t + d

    i = i + 2

Loop

Label1.Caption = t

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

A . phn01 B . pto22 C . yhn01 D . yto22
下列VB程序段功能为:在文本框Text1中显示整型数组元素a(1)到a(9)中的最小值和最大值。

amin = a(1): amax = a(1)

i = 2: j = 9

Do While i <= j

    If a(i) > a(j) Then

       

       

    Else

       

       

    End If

    i = i + 1: j = j - 1

Loop

Text1.Text = Str(amin) + "," + Str(amax)

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

①If a(j) > amax Then amax = a(j)

②If a(j) < amin Then amin = a(j)

③If a(i) < amin Then amin = a(i)

④If a(i) > amax Then amax = a(i)

则方框处语句依次可为(    )

A . ④②③① B . ④③②① C . ③②④① D . ③①④②
已知由字母和数字组成的字符串s,现要实现如下功能:将字符串s中的数字字符按照原有顺序移动到右侧,英文字符按照原有顺序移动到左侧,如s="2Good02Luck1",移动后变成s="GoodLuck2021",为实现上述功能,在横线处填入的代码应该是(     )

n= L en(s)

Dim a(1 to 100) as String

pos=1: k=0

For i=1 To n

    ch= Mid(s,i,1)

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

        

        k=k+1

    Else

        

        Do While j>>=pos

            a(j)=a(j-1)

            j=j- 1

        Loop

        

        pos=pos+1

    End If

Next i

s=““

For i=1 To n

  s=s+a(i)

Next i

可供选择填入(1)(2)(3)中的代码有

①a(pos)=ch  ②a(pos+k)=ch  ③a(pos-1)=ch  ④j=pos+k  ⑤j= pos+k-1

其中正确的顺序是(     )

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

X=a(1):s=0

For i=2 To 5

    If a(i) > x Then

        x = a(i)

    ElseIf a(i) < x Then

        s = s+a(i)

    End If

Next i

数组元素a(1)~a(5)的值依饮为“1,2,3,2,1”,执行该程序段后s的值为(    )

A . 3 B . 6 C . 8 D . 9
某影厅共12排,每排10座。座位编号以排号+座号来命名,如第10排3座,编号命名为103。该影厅的最佳观影区为方框内的座位,即第5排3座~第10排8座的矩形位置。0表示该座位可选,非0表示已售(1表示系统推荐,2表示手工选择) 座位推荐算法:

1)只推荐最佳观影区的座位,从前往后,优先选择最中间的位置,若找到最中间位置,则推荐,否则继续寻找下一排,以此类推;

2)购票数为1时,推荐单个靠中间的位置,大于1时,只推荐连续的座位;

3)若在最佳观影区内未找到可以推荐的座位时,系统将提示手工选择。编写VB程序,模拟电影院选座。在文本框Text1中输入购票数,单击“选座”按钮Command1,在标签Labe12中显示机选座位。程序运行界面如图所示。

  1. (1) 该影厅空座情况不变如上图所示,若购票数由2改为1,则推荐的座位编号为
  2. (2) 实现上述功能的VB程序如下,请在划线处填写合适的代码。

    ConstC=10:ConstR=12    '每排10座,共12排

    Dim zw(1 To C * R) As Integer, kzw(1 To C * R) As Integer      '座位,空座位

    Private Sub Form_ Load ()

        '读取影厅座位数据存入数组zw,并将座位信息显示在列表框list1中,代码略

    End Sub

    Private Sub Command1_Click ()

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

        Dim x As Integer, min As Integer, start As Integer

        Dim m As Integer, n As Integer, ans As String

        m = Val (Text1.Text)          '购票数,确保数值在座位数以内

        n=0            '空座位的个数

        For i=5 To 10         '统计最佳观影区中的空座位编号

            For j=3 To 8

                If zw((i-1)*C+j)= 0 Then

                    n=n+1

                    kzw(n) =

                End If

            Next j

        Next i

        min = C: start=0: k=1

        Do While k+m-1<= n

            If kzw(k) + m-1= kzw(k +m- 1) Then

                x=Abs(C\2-(kzw(k)+kzw(k+m-1))\2 Mod C)

                If x < min Then

                    min=x

                    start = k     '记录满足座位条件的起始空位号

                    If min=0 Then Exit Do    'Exit Do表示退出循环

                End If

            End If

           

        Loop

        ans =””

        If start = 0 Then

            ans = "未能推荐座位,请手工选座"

        Else

            For i = kzw(start) To

            'CStr函数把表达式转换为字符串,不产生前置空格

           ans = ans + "第"+ CStr(i \C+ 1) +"排"+ CStr(i ModC) +"座"

          Next i

        End If

        Label2.Caption = ans

    End Sub

已知由字母组成的字符串s,现要实现如下功能:将字符串s中的字母按照26个英文字母顺序依次输出(重复出现的字母只需输出一次)。如s="Congratulate",输出结果为"aceglnortu",为实现上述功能,在横线处填入的代码应该是(    )

Dim a(1 To 26)As Integer

    s=Text1. Text

    For i=1 To Len(s)

           ①      

        If c>="A" And c<="Z" Then c=Chr(Asc(c)+32)

            ②    

    Next i

    For i=1 To 26

        If a(i)<> 0 Then Label1.Caption= Label1.Caption+     ③    

Next i

A . ①c=Mid(s,i,1)   ②a(Asc(c)-96)=a(Asc(c)-96)+1   ③Chr(96+i) B . ①c=Mid(s,i,1)   ②a(i)=a(i)+1   ③Chr(a(i)) C . ①c=Mid(s,i,1)   ②a(Asc(c)-96)=a(Asc(c)-96)+1   ③Chr(a(i)) D . ①c=Mid(s,i,1)   ②a(i)=a(i)+1   ③Chr(96+i)
执行下面程序代码后n的值为是(  )。

s = 0

n = 1

while s<100:

  s = s+n

  n = n+1

A . 13 B . 14 C . 15 D . 100
根据以下程序代码完成下列小题。

程序描述: 计算正整数 35 到 500之间的所有奇数的和。代码如下:

    ①    

for i in    ②   

      ③   

print(s)

①处的语句是,  ②处的语句是,③处的语句是

①A.s=0      B.s=1      C.i=0     D.i=1  

②A.range(35,500)   B.range(35,500,2)    C.range(35,501)     D.range(35,501,2)

③A.s=s+1      B.i=i+1       C s=s+i       D.i=s+i

下列FOR语句格式正确的是(      )
A . FOR A= 1 TO 3

    ……

NEXT B

B . FOR A= 1 TO 3

    ……

NEXT

C . FOR A = 9

    ……

NEXT A

D . FOR A= 6 TO 20
某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
给定一个十进制整数n,求出从1到n的所有整数中出现“1”的个数。例如,n=2时,1,2出现1个“1”。n=12时,1,2,3,4,5,6,7,8,9,10,11,12,出现5个“1”。现编写一个程序,实现如下功能:输入整数n,执行程序后,输出该范围内出现“1”的个数。程序运行如下图所示。

请在画线处填入合适的代码:

n=int(input('请输入整数范围:'))

count=

i=1

while i <=n:

  x=i

  while x>0:

    if

      count+=1

      x//=10

print('该范围内1的个数有:',count)

有如下VB程序段:

n =357859604

Do While n>0

    c=n Mod 10

    If c>5 Then c=5

    count (c) = count(c) + 1

    n=n\10

Loop

数组元素count (0)到count (9)的初始值均为0,执行该程序段后,则count (5)的值为(    )

A . 2 B . 4 C . 6 D . 10
有如下程序:

a=[6,1,5,7,4,8,3,2]

for i in range(7):

   k,f=i,(-1)**i

   for j in range(i,8):

      if a[j]*f>a[k]*f:

          k=j

   if i!=k:

      a[i],a[k]=a[k],a[i]

该程序运行后,输出的a结果为(   )

A . [1,6,5,7,4,8,3,2] B . [1,8,2,7,3,6,4,5] C . [8,1,5,7,4,6,3,2] D . [8,1,7,2,6,3,5,4]
利用5列6行的二维数组qp来记录某试场中的座位编号1~30,生成编号所对应Python

程序段如下:

qp = [[0 for i in range(5)] for j in range(6)]    #建立二维数组并初始赋值为0

m = 0

for i in range(5):

  for j in range(6):

    if i % 2 == 0:

      qp[j][i] = m * 6 + j + 1

    else:

      qp[j][i] = m * 6 + 6 - j

m = m + 1

运行上述程序段后,编号17所在的数组元素为(    )

A . qp[4][2] B . qp[2][4] C . qp[5][3] D . qp[6][1]
最近更新