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

有 VB 程序段如下:

flag = False: n = 0

s = " Good Luck To You!"

 For i = 1 To Len(s)

    ch = Mid(s, i, 1)

    If ch >= "a" And  ch <= "z" And flag Then

       n = n + 1: flag = False

    Else  

       flag = True

    End If

 Next i

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

A . 2 B . 3 C . 4 D . 6
输入5个数,分别完成以下操作:

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

有如下VB程序段:

s="67.153.47.211"

n = Len(s)

ch=”":cmax= ""

For i= 1 Ton   

     c=Mid(s,n-i+1,1)

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

         ch=ch+c

     Else

         If ch> cmax Then cmax = ch

         ch=""

     End If

Next i

Text1.Text = cmax

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

A . 74 B . 76 C . 211 D . 351
某地区中考录取采用“平行志愿”的投档录取方式,该录取方式的具体规则为:

①根据考生的考试总分从高到低依次对考生的填报志愿进行投档;

②每位考生可填三个志愿学校,轮到该考生投档时依次对其三个志愿进行投档,若第一志愿学校还有剩余招生名额,就被第一志愿学校录取,结束该考生的投档,否则需对其后续志愿学校进行同样的投档操作,若该考生所填的所有志愿学校都没有剩余招生名额,则该考生无法被任何学校录取,该考生的投档结束。

③当所有学校都已完成计划招生数时,停止投档,录取结束。

编写 VB 程序,实现上述“平行志愿”投档录取的功能,单击“读取考生数据”按钮 Command1, 则从数据库中获取所有考生的成绩、志愿信息以及每个学校的计划招生数,单击“投档录取”按钮 Command2,开始进行投档录取, 并在列表框 List1 中输出每个学校的计划招生数、实际招生数、录取分数线和最低录取名次信息,程序运行界面如图所示。请回答下列问题:

  1. (1) 若A校计划招生520人,B校计划招生480人,C校计划招生540人,某同学的考分名次为490名,其三个志愿学校依次为B校、A校、C校,且已知同名次的人数最多有30人,则该同学不可能被哪所学校录取:
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const schCnt = 5                     '学校数量

    Const stuMaxCnt = 10000             '最多考生人数

    Dim zsCnt(1 To schCnt) As Integer      '存储每个学校的计划招生人数

    Dim zsCnt2(1 To schCnt) As Integer     '存储每个学校的实际招生人数

    Dim a(1 To stuMaxCnt) As Single       '存储考生总分成绩

    Dim b(1 To stuMaxCnt * 3) As Integer    '存储考试志愿,每个考生有3个志愿,每个志愿为学校编号

    Dim stuCnt As Integer                  '实际考生总人数

    Private Sub Command1_Click()

    '从数据库中读取所有考生的总分和志愿信息存储到数组a和数组b中(第1个考生总分存储到a(1),第1个考生的3个志愿分别存储到b(1)、b(2)、b(3)中, …),然后按总分对数组a和数组b进行降序排序,总分相同时,需根据各科成绩决定排序先后,但名次相同,考生总人数存储到stuCnt变量中;

    '读取每个学校的计划招生数,存储到数组zsCnt中;

    '以上功能代码略

    End Sub

    Private Sub Command2_Click()

      Dim sch As Integer         '学校代码,用1~5中的一个数字表示某学校代码

      Dim i As Integer, j As Integer, finished As Integer, prevScore As Single

      Dim stuMc(1 To stuMaxCnt) As Integer

      Dim MinScore(1 To schCnt) As Single

      Dim MinMc(1 To schCnt) As Integer

      finished = 0: i = 1

      prevScore = -1

      Do While

        If a(i) = prevScore Then

          stuMc(i) = stuMc(i - 1)

        Else

          

        End If

        prevScore = a(i)

        For j = 1 To 3

          

          If zsCnt2(sch) < zsCnt(sch) Then

            zsCnt2(sch) = zsCnt2(sch) + 1

            MinScore(sch) = a(i)

            MinMc(sch) = stuMc(i)

            Exit For

          End If

        Next j

        finished = 0

        For j = 1 To schCnt

          If zsCnt2(j) = zsCnt(j) Then

            finished = finished + 1

          End If

        Next j

        i = i + 1

      Loop

    '在List1中输出每所学校的代码、计划招生数、实际招生数、录取分数线、最低录取名次,代码略

    End Sub

给定两个十进制整数X和Y(X<=Y),求出从X到Y的所有整数中出现“1”的个数。例如:X=6,Y=15时,6,7,8,9,10,11,12,13,14,15,出现了7个“1”。小明编写了一个VB程序,功能如下:在文本框Text1中输入整数X,在文本框Text2中输入整数Y,单击“统计”按钮Command1后,在列表框List1中显示X到Y,并在标签Label3中显示从X到Y的所有整数中出现“1”的个数。程序运行界面如图所示,请在划线处填入合适代码。

  1. (1) 下列程序段中句List1.AddItem中的AddItem是(填字母:A. 属性名/B.事件名/C.方法名/D.对象)
  2. (2) 为了实现上述功能,请在划线处填入合适的代码。

    PrivateSubCommand1_Click()

      Dim x AsInteger,y As Integer,t AsInteger

      Dim I AsInteger,n As Integer,count AsInteger

      x=Val(Text1.Text)

      y=Val(Text2.Text)

     

      count=0

      For i=x To y

        List1.AddItem Str(i)

        n=i

        Do While n>0

          If n Mod 10=1 Then

            count=count+1

          End If

         

        Loop

      Next i

    Label3.Caption="X到Y之间1的个数有"++"个"

    End Sub

  3. (3) 如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有个。
有如下VB程序段:

s="浙A665F5"

n=0:c=0:k=0

Do While n<=Len(s)

    n=n+1

    ch=Mid(s, n, 1)

    If ch>="A" And ch<="Z" Then c=c+1

    If ch >="0" And ch<="9" Then k=k+1

Loop

Label1.Caption=Str(k-c)

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

A . 0 B . 1 C . 2 D . 3
某数据压缩方法描述如下:

①原始数据中,某数据不为0且相邻无重复,压缩数据用该数据表示;

②原始数据中,某数据为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;

③原始数据中,某数据相邻且有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。

小明编写了一个压缩的VB程序,功能如下:窗体加载时,自动读取原始数据,依次存储在数组元素a(1),a(2),a(3)….中,原始数据的个数存储在变量n中,原始数据显示在文本框Text1中。单击“压缩”按钮Command1,程序对原始数据依次进行压缩处理,压缩数据显示在文本框Text2中。程序运行界面如图所示。

  1. (1) 数据“8 8 8 8 8 0 0 11 24”压缩后的结果为
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim s,result As String

      Dim i,num As Integer

      i= 1:result=""

      Do While i<=n

          s=a(i)

          num=1

          Do While s=a(i+1)

              i=i+1

                 ①   

          Loop

          If num >1 Then

            result=   ②   

            i=i+1

          End If

          s= a(i)

          num=1

          Do While s <> a(i+1)

              If s ="0"Then s ="00"

              result=result +s

              i=i+1

                 ③   

          Loop

      Loop

      Text2.Text=result

    End Sub

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

  Python语言用于实现循环结构的语句有语句和while语句。
小李编写了一个实现字母字符串去重功能的VB程序(只输入大小写字母,大小写字母视为同一字符,只保留第一次出现的字符),运行界面如图所示,程序运行时,在文本框Text1中输入字符串,单击“去重”按钮,将字符串中重复的字符去除,在标签Label1中显示去重之后的结果(已知“a”的ASCⅡ值为97,“A”的ASCIⅡ值为65),实现上述功能的VB程序如下,请回答下列问题:

Private Sub Comand1_Click( )

    Dim s As String, c As String

    Dim t As Integer, I As  Integer

    Dim a(1 To 26)As Integer

    s=Text1.Text

    For i=1 to 26

        a(i)=0

    Next i

    i=1

    Do While i<=Len(s)

        c=Mid(s, i, 1)

        If    ①     Then

            t=Asc(c)-96

        Else

            t=Asc(c)-64

        End If

        If a(t)=0 Then

            a(t)=1

        Else

           

                 ②    

        End If

        i=i+1

    Loop

    Label1.Caption=s

End Sub

  1. (1) 根据代码可知,“去重”按钮的对象名为
  2. (2) 请在划线处填入合适的代码

     ② 

  3. (3) 加框处代码有误,请改正
数字反转,下面程序的功能是:输入一个非负整数,将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。如输入120,反转后输出21,程序运行时,在文本框Text1中输入反转前的数字,单击“反转”按钮后,在文本框Text2中显示反转后的数字。程序运行效果如图所示。

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

Private Sub Command1_Click()

    Dim a As String

    Dim n As Integer

    a = Text1.Text

    n = Len(a)

    Do While   ①    and Mid(a, n, 1)="0"

        n = n - 1

    Loop

    For i = n To 1 Step -1

        Text2.Text = Text2.text +     ②    

    Next i

End Sub

  1. (1) 划线①处应填入的语句为:
  2. (2) 划线②处应填入的语句为:
由大写字母组成的长度相同的两个字符串s1和s2,若所含各字母数量相等则可以归为一类。如“ABDAC”与“AABCD”归为一类,与“AABBC”不可以归为一类。实现该功能的VB程序段如下:

Dim s1 As String, s2 As String, a As Integer, i As Integer, b(1 To 26) As Integer    'b数组初值均为0

s1 = Text1.Text: s2 = Text2.Text

For i= 1 To Len(s1)

    a= Asc(Mid(s1, i, 1))-65+ 1

      ⑴  

Next i

For i= 1 To Len(s2)

    a= Asc(Mid(s2, i, 1))-65+ 1

      ⑵  

Next i

For i= 1 To 26

    If   ⑶   Then Exit For

Next i

If   ⑷   Then Label1.Caption = "能归为一类" Else Labl1.Caption= "不能归为一类"

填空处的代码可以由以下部分组成:

①b(a)=b(a)+1  ②b(a)=b(a)-1  ③b(i)<>0  ④b(i)=0  ⑤i<=26  ⑥i>26

代码顺序正确的是(    )

A . ①②③⑤ B . ①②④⑥ C . ②①③⑥ D . ②①④⑤
循环次数未知时,我们通常称为,只有当成立时,才执行循环体。在python中,使用语句来创建这类循环。
有如下VB程序段:

t ="”

For i=1 To 10

    b(a(i) Mod 10) = b(a(i) Mod 10) + 1

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

Next i

c =2

For i = 0 To 9

    If b(i)>c Then t=t+ Str(i)

Next i

Label1.Caption= t

数组b各元素初始值为0,数组元素a(1)到a(10)的值依次是65,99,12,34,40,74, 56,88,30,45,执行程序段,标签Label1上显示的内容是(    )

A . 4  5 B . 4  3 C . 5  6 D . 3  5
判断身份证校验位是否正确

第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。

第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。

第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。

第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。

余数列表

0

1

2

3

4

5

6

7

8

9

10

校验码对照表

1

0

X

9

8

7

6

5

4

3

2

B2  某男性公民公民身份号码本体码为44052418800101001,其校验码字符值仍可按B1各步骤与方法计算如下:

=28+36+0+ 25+16+16+2+8+48+0+0+9+0+5+0+0+2=195

195÷11=17 , 即(ai×Wi)(mod 11)为8。

查表2得出校验码字符值ai为4。

该男性公民的公民身份号码为440524188001010014。

  1. (1)  如果身份证的前17位是34052419800101001,则该身份证的校验位是
  2. (2) 实现上述功能的代码如下,请在划线处填入合适的代码,使程序正常运行。

    def check(s):

    s1=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]

    s2='10X98765432'

    k=0 

    for i in :

    k=k+int(s[i])*s1[i]

    return 

    sfz=input('请输入身份证号:') 

    if t !=18:

    print('位数有误,请重新输入!')

    else:

    if sfz[-1]=='x':

    sfz=sfz[:-1]+"X"

    if :

    print('合法身份证号')

    else:

    print('非法身份证号')

  3. (3) 实现上述功能的代码如下,但加框处代码有错,请改正。
有如下VB程序段:

Dim a(1 To 6) As Integer

For i=1 To 6

    a(i)= Int(Rnd * 4)+1

    If a(i) Mod 2=0 And i Mod 2=0 Then

       a(i)=2 * a(i) - a(i - 1)

    End If

    s=s+Str(a(i))

Next i

执行该程序段后,变量s的值可能是(    )

A . 242221 B . 333126 C . 043513 D . 323117
下面代码运行结果是(       )。

a, b=2,1

while a>=b:

    b=a*b

    a=2*a

print(a, b)

A . 4 2 B . 16 64 C . 8 8 D . 2 1
一个字符串的某一个子串中可能含有重复出现的字符,如字符串“abab”的其中一个子串“aba”就含有2个重复出现的字符“a”。小明设计了一个寻找无重复字符的最长子串的算法,具体步骤如下:

   步骤1:初始化最长无重复字符子串的长度 maxn=0。

   步骤2:初始化字符串长度n,字符串索引left=0,right=0。

   步骤3:判断right是否超过字符串长度,若超过则执行步骤4,否则判断字符串从位置left到位置right是否有重复字符:若存在重复,则将索引left的值修改为存在重复字符索引值+1;若不存在重复,则判断该子串长度是否比maxn大,若比maxn大,则更新maxn的值。修改right的值。重复步骤3。

   步骤4:输出maxn的值。

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

#在字符串s中查找第一次出现字符c的位置

def search(s,c):

  for i in range(len(s)):

    if :

      return i

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

maxn=0

left=0

right=0

while right<n:

  if s[right] in s[left:right]:

    k=search(s[left:right],s[right])

    

  else:

    if right-left+1>maxn:

      maxn=right-left+1

      right+=1

print(maxn)

阅读下列程序,写出运行结果

a,b = 1,1

n = int(input("请输入一个大于等于3的正整数n:"))

for i in range(n-2):c = a + b

a = b

b = c

print(c)

程序运行后,输入:6

运行输出结果是:

有如下VB程序段:

Dim i As Integer, s As String

Dim a(1 To 10) As Integer

a(1)=1 : a(2)=2

For i=3 To 10

    a(i)=a(i-1) *a(i-2)

    s=s+a(i)

Next i

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

运行该段程序后,出现的错误提示为(    )

A . 下标越界 B . 子程序或函数未定义 C . 溢出 D . 类型不匹配
有如下VB程序段:

i =1

Do While i<=5

    a(i)= Int(Rnd*10)*2 + 1

    If Not flag(a(i)) Then flag(a(i))=True

    i= i + 1

Loop

已知数组flag各元素的初值为False,运行以上程序段程序,数组元素a(1)到a(5)的值可能为(    )

A . 3  9  16  15  11 B . 5  7  9  7  13 C . 9  3  7  1  15 D . 9  17  5  21  1
最近更新