4.4.1 for循环的应用 知识点题库

以下VB程序段,若在文本框text1中输入2686261,则单击命令按钮command1后,在列表框list1中显示的值为(   )

Private sub command1_click()

  Dim n as long

  Dim t as integer

  Dim a(1 to 9) as integer

  n=val(Text1.Text)

      List1.clear

      Do while n>0

        t=n mod 10

        If t mod 2=0 then a(t)=a(t)+1

        n=n\10

      Loop

  List1.additem a(2)

End sub

A . 0 B . 2 C . 3 D . 6
均分红包。当前有n堆红包,编号为1,2, 3, 。。 n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。

移红包规则:

①编号为1的堆上的红包,只能移到编号为2的堆上;

②编号为n的堆上的红包,只能移到编号为n-1的堆上;

③其它堆上的红包,可以移到相邻左边或右边的堆上。

现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。

  1. (1) 代码“Private Sub Command1_ Click( )”中的Click是(单选,填字母: A . 对象名\B . 事件名\C . 事件处理过程名\D . 方法名)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const Sum = 40          '红包总个数

    Private Sub Command1_ Click ()

      Dim n As Integer       '红包的堆数

      Dim s As String, k As Integer

      Dim avg As Integer    '最终每堆的红包个数

      Dim m1 As Integer, m2 As Integer

      Dim tmp As Integer, count As Integer, ans As Integer

      n=

      s = Text2. Text

      avg=Sum/n

      tmp=0: count=0: ans=0

      For k=1 To Len(s)

        c = Mid(s, k, 1)

        If c <>","Then

          tmp =

        Else

          count = count + 1

          If count = 1 Then

            m1 =tmp

          Else

            m2 = tmp

            If m1 <> avg Then

              m2=m2-(avg-m1)

              ans=ans+1

            End If

           

          End If

          tmp=0

        End If

      Next k

      Labe13. Caption = Str (ans)

    End Sub

已知s的初值为0,下列程序段执行后,s的值为(  )

a=1:b=2

For i=1 To 6

    c=a+b

    a=b:b=c

    k=2

    Do While k<c

        If c Mod k=0 Then Exit Do

        k=k+1

    Loop

    If k=c Then s=s+1

Next i

A . 6 B . 5 C . 3 D . 1
任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5,12=5+7,98=19+79。

编写一个验证哥德巴赫猜想的VB程序,程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按键Command1后,如果猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式;否则显示“No”。程序运行界面如图所示。

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

Function judge(x As Integer) As Boolean

  Dim j As Integer

  judge=True

  j=2

    Do While j<=x-1 And judge=True

        If x Mod j=0 Then

            judge=False

        Else

            j=j+1

        End If

    Loop

End Function

Private Sub Command1_Click()

  Dim n As Integer, p As Integer

  Dim q As Integer, flag As Boolean

  n=Val(Text1. Text)

  p=1

  flag=False

  Do While  And p<n           ‘①

    p=p+1

                                ‘②

    If judge(p) And judge(q) Then

        Text2. Text="Yes"

        flag=True

        List1. Addltem Str(n)+"="+Str(p)+"+"+Str(q)

    End If

  Loop

  If flag=False Then

    Text2.Text="No"

  End If

End Sub

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

编写Python程序进行成绩分析,学号为1~ 10号同学的信息技术学科成绩依次存储在列表xx中,部分程序代码如下,请回答下列问题:

xx=[35,29,28,42,21,38,17,44,18,19]

sum=0

for i in           

sum=sum+i

          

print("信息学科平均分为:"+str(ave))

  1. (1) 程序中划线处应填入的代码是什么?
  2. (2) 学号为1~ 10号同学的通用技术学科成绩依次存储在列表ty中,若要实现统计技术学科分数(技术学科分数为信息技术与通用技术两学科分数之和)大于等于80分的人数,则程序中划线处应填代码是什么?

    xx=[35,29,28,42,21 ,38,17,44,18,19]

    ty=[29,31,26,38,40,41,26,41,21,33]

    c=0

    for i in :

         if :

         c=c+1

    print("技术学科分数大于等于80分的学生有:"str(c)+"个"

执行下列程序以后i的值是(    )

for i in range(-3, -21, -4):

    print(i, end=" ")

print(end="\n")

A . -3 B . -4 C . -19 D . -21
下面的代码,哪些会输出1,2,3,三个数字(     )
A . for i in range(3):     Print(i) B . aList = [1,2,3] for i in aList:     print(i+1) C . i = 1 while i<3:     print(i)     i+=1 D . for i in range(3):     Print(i+1)
猜年龄游戏。要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y,就继续让其猜3次,以此往复,如果回答N或n,就退出程序,如果猜对了,就直接退出。
在VB中,下面程序段执行后,语句y=y+1执行的次数是(    )

x=0: y=0

For n=1 To 5

x=x+1

y=y+1

Next n

Print x+y

A . 2次 B . 3次 C . 4次 D . 5次
编写Python程序实现如下功能:输入年月日,输入格式如“2021-06-21",年月日之间用“-”分隔。判断这一天是这一年的第几天。以2021-06-21为例,前面5个月总天数,加上21天即这一天是本年的第几天。 特殊情况,当输入的年份是闰年时,2月份有29天。闰年的判断方式如下:

⒈能被4整除,但不能被100整除;

⒉能被400整除;

  1. (1) “2020-05-20”这一天是这一年的第天。
  2. (2) 编写Python代码如下,在划线处填入正确的代码:

    mon=[31, 28, 31, 30, 31, 30,31,31, 30, 31,30,31] #mon 中存储1-12每个月的天数

    s=input("请输入年月日: ")

    year=int(s[:4])

    month=int (s[5:7])

    sum=0

    for i in range (  ):

        sum+=mon[i]

    sum+=day

    if

        isleap=True

    else:

        isleap=False

    if

        sum+=1

    print(“这一天是当年的第”+str (sum) +“天”)’

  3. (3) 加框处的代码有误,请改正。
下面代码的输出结果是(   )。

def fact(n):

    s=1

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

        s*=i

    return s

    sum=0

    for i in range(4):

        sum+=fact(i)

    print(sum)

A . 10 B . 6 C . 9 D . 3
超级素数是指一个素数,每次去掉最后面的一个数字,依然为素数。如 37,去掉最后的7 后,3 仍为素数。统计 1000 以内的超级素数的个数的 VB 程序段如下:

For i = 2 To 1000

    flag = True:s = i

    Do While flag And s >1

        For j = 2 To Int(Sqr(s))

            If s Mod j = 0 Then

               

                Exit For

            End If

        Next j

       

    Loop

    If flag And s<>1 Then

       

    End If

Next i

Label1.caption=str(c)

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

①flag = False   ②c = c + 1   ③s = s \ 10

则(1)(2)(3)处语句依次可为(     )

A . ①②③ B . ②①③ C . ③②① D . ①③②
如下Python程序段

x = 0

while x < 50:

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

运行后,x的值为(    )

A . 0 B . 72 C . 50 D . 168
出列顺序有10个人,编号分别为1,2,3……10按顺时针方向围坐成一圈,每次随机产生一个数m,m的范围为[3,7]的随机奇数,从第10个人开始逆时针报数,当报到m的人出列,圈内剩下的人,重新产生随机数m,重新开始报数,如此下去,直到所有人出列为止。如:若每次参数的随机数m都为5,从第10个开始报数,依次出列的为6-1-5-9-2-3-10-7-4-8

小李编写了如下程序求解10个人的出列顺序。程序运行界面如图15-1所示,点击求解按钮后,在Text1中输出出列顺序,在Text2中显示随机数据的值。

  1. (1) 在划线出填写正确的代码

    Private Sub Command1 _Click( )

        Dim ld(1 To 10) As Boolean, i As Integer, j As Integer

        Dim rs As Integer, C As Integer, m As Integer

        Randomize

        For i=1 To 10

            ld(i) = True     ‘数组元素为True表示第i人当前在队列中

        Next i

        c=0:rs=10

       

        m =Int(Rnd*3)*2+3

        Do While rs <> 0

            If ld(i) = True Then

               

                If c=m Then

                    ld(i) = False

                    Text1.Text = Text1.Text + Str(i)

                    

                    c=0

                   

                End If

            End If

            i =i-1

            If Then i=10

        Loop

    End Sub

  2. (2) 加框处两语句互换下顺序,会不会对出列顺序产生影响(选填:会/不会)。
已知数组a中的元素按非递减有序排列,在程序运行时显示在Text1中。编写程序实现如下功能:删除数组的重复元素,并更新数组的长度,在Text2输出新的数组元素值。程序运行界面 如图所示。

  1. (1) 要是程序运行时,窗体Form1标题立即立即显示为“删除重复数组元素”,可在(单 选:A .Form_Load()/B .Form_click()/C .Command1_Click())事件过程中添加Form1.Caption=“删除重复数组元素”语句来实现。
  2. (2) 为实现上述功能的VB程序如下,请在划线处补充缺失的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Dim lena As Integer    '数组a的实际长度 Dim s As String

    Private Sub Form_Load()

        '生成lena个非递减序列,并输出到文本框text1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer i = 1

        Do While i < lena

            If a(i) <> a(i + 1) Then i =

            Else

                For j = i + 1 To lena

                    a(j - 1) =  

                Next j

                lena =  

            End If

        Loop

        s = ""

        For i = 1 To lena

            s = s + Str(a(i))

        Next i

        Text2.Text = s

    End Sub

给定一个正整数,要求将该数各个位上数字反转得到一个新数,如数字56020反转得到新数2065。有如下VB程序段:

n=Val(Text1.Text)

s=""

flag=True

Do While n>0

      ⑴ 

    n=n\10

    If Not flag Or x>0 Then

          ⑵ 

        flag=False

    End If

Loop

If s="" Then s ="0"

Labe 11.Caption=s

方框中(1)和(2)应填入的代码顺序为(    )

①x=nMod10^len(n)  ②x=nMod10  ③s=Str(x)+s  ④s=s+Str(x)

A . ①③ B . ②③ C . ①④ D . ②④
下面代码运行结果是(     )。

def fun(n):

    a, b=0,1

    while a < n:

        print(a, end=' ')

        a, b=b, a+b

fun(5)

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

s1 = "567898765"

s2 = ""

n = Len(s1) \ 2

For i = 1 To n

    If Mid(s1,i,1) < Mid(s1, n + 1, 1) Then

        s2 = s2 + Mid(s1, i, 1)

    Else

        s2 = Mid(s1, n + i, 1) + s2

    End If

Next i

Text1.Text = s2

A . 98765 B . 7898 C . 5678 D . 56789
编写“输出所有子串”程序,实现如下功能:在文本框Text1中输入一串不重复的字符串,单击命令按钮“生成子串”,在列表框List1中输出该字符串的所有子串并输出子串的总数。程序运行界面以及工程资源窗口如下图所示,VB程序代码如下

  1. (1) 在程序运行后,发现文本框Text1中已经有内容显示,若要做到程序运行后文本框中内容默认为空,则应在下列事件过程中添加代码Text1. Text=“”。(单选,填字母:A .Command1_ Click/ B .Text1_ Click/C .Form_ Load / D .List1_Click )。
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s As String,sum As Integer

        Dim i As Integer,j as Integer

        s= Text1. Text

        n= 0

        For i=1 To Len(s)

            For j=1 To Len(s)-i+1

                List1. AddItem

                n=n+1

            Next j

        Next i

        List1. AddItem "总共有" + Str(n)+"个子串"

    End Sub

  3. (3) 如果输入的字符串是“desk”,则输出中有个子串。
有如下 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
最近更新