分支结构语句及程序实现 知识点题库

某VB程序段如下:

For i=1To n

    h(i)=Int(Rnd * 20 + 1)

    num(i)=1:ans=0

    For j=1 To i

        If h(j) < h(i) And num(j) >=num(i) Then

            num(i)=num(j) + 1

        end if

      next j

Next i

执行该程序段后,在下列选项中,num (1)~num (8)各元素值可能的是(    )

A . 2,1,1,2,2,3,4,4 B . 1,1,2,3,2,2,1,3 C . 1,2,4,2,5,6,7,8 D . 1,1,1,1,1,1,3,2
小周同学用VB程序模拟考场座位的编排,将编号从001开始的n个学生按行、列数进行“蛇形排列”。程序功能如下:在文本框Text1中输入行数,Text2中输入列数,点击“生成座位”按钮,在列表框List1中输出排列结果。如图所示是运行界面为6行5列的座位排法(只排了一个试场)。

  1. (1) 根据本题代码,如图中所示,数组元素b(2)的值为“”。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click ()

        Dim a(1 To 200) As String     ‘用来存储学号

        Dim b(1 To 200) As String     ‘关联a数组,用于矩阵输出

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

        Dim row as Integer,column as Integer,s As String

        For i=1 To 200                      ‘产生3位数的学号

            a(i)=Mid(“00”,1,(3-Len(CStr(i)))+CStr(i)     ‘CStr()函数功能转换为字符串并去掉前面空格

        Next i

        row=Val (Text1.Text)

        column= Val (Text2.Text)

        k=1

        For i=1 To column

            If  Then

                pos=i                                 ‘pos是b数组的下标,根据行列来关联a数组

                For j=1 To row

                    b(pos)=a(k)

                   

                    k=k+1

                Next j

            Else

                pos=(row-1)*column+i

                For j=1 To row

                    b(pos) = a(k)

                    pos=pos-column

                    k=k+1

                Next j

            End If

        Next i

        For i=1 To row               ‘按行输出学生信息

            s=“”

            For j=1 To column

                s=s+""+

            Next j

            List1 AddItem s

        Next i

    End Sub

有如下VB程序段:

Dim x As Integer,y As Integer

x=2:y=3

If x+y=5 Then x=x+2

y=x+y

该程序段运行后,x,y的值为(  )

A . 4,3 B . 5,5 C . 2,5 D . 4,7
有如下VB程序段:

For i=1 To 10

  f=i Mod 2

  If f=0 Then a(i)=0 Else a(i)=1

  For j=1 To i

    If f=0 Then a(i)=a(i)+j Else a(i)=a(i)*j

  Next j

Next i

执行该程序段后,数组元素a(4)的值为(  )

A . 10 B . 6 C . 4 D . 1
完善以下程序代码完。

程序描述:输入三个正整数(a、b、c),将其中最小的那个数赋值给变量min并输出。

代码如下:

a=int(input("请输入第1个正整数:"))

b=int(input("请输入第2个正整数:"))

c=int(input("请输入第3个正整数:"))

if a<b:

        ①  

else:

         ②   

if     ③    :

        ④    

print("最小数为:",min)

  1. (1) ①处的语句是            
    A . b=a B . a=b C . min=a D . min=b
  2. (2) ②处的语句是            
    A . b=a B . a=b C . min=a D . min=b
  3. (3) ③处的语句是            
    A . b<c B . b>c C . min>c D . a>c
  4. (4) ④处的语句是            
    A . c=b B . min=a C . min=b D . min=c  
一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则称该序列为摇摆序列。小王同学想求出某个数列的最长播摆子序列。

以序列[3,14,7,6,9,12,10,8,13,5]为例,整体不是摇摆序列,但子序列[3,14,7,9]、[3,14,6,12]等都属于摇摆子序列,其中最长的摇摆子序列[3,14,6,12,8,13,5]。根据第16图a分析得知,当序列有一段连续的递增(或递减)时,为形成摇摆子序列,我们只需要找到每一次转折中的拐点元素。

小王编写了一个VB程序实现该功能:程序运行时,从文本框Text1中读入数据,单击按钮Command1后,将计算得到的最长摇摆序列的长度输出到标签Label1中,并将具体的序列输出到文本框Text2中。程序运行界面如图b所示:

  1. (1) 若文本框Text1中输入数据“2,4,5,3,2,1”,则最长摇摆子序列为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim a(1 To 20) As Integer

    Dim b(1 To 20) As Boolean

    Dim ans As String

    Private Sub Command1_Click()

        Dim i As Integer, flag As Integer, n As Integer

        Dim gd As Boolean

        '从文本框 Text1读入数据,依次存储到a数组中,数据总数为n

        'b数组初值均为False

        '代码略

        flag = 0         '0代表开始,1代表上升,2代表下降

        For i=2 To n

            gd = True

            If flag = 0 Then

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

                    flag= 1

                ElseIf a(i) < a(i - 1) Then

                    flag = 2

                Else

                    gd = False

               End If

            ElseIf flag = 1 And a(i) < a(i - 1) Then

                flag = 2

            ElseIf   Then

                flag = 1

            Else

                gd = False

            End If

            

        Next i

        If f(n)<3 then

            Label1.Caption =“不构成摇摆子序列”

        Else

            Label1.Caption =“最长摇摆子序列长度为:”+ Str(f (n))

            Text2.Text =“最长摇摆子序列为:”+ ans

        End If

    End Sub

    Function f(n As Integer) As Integer

        f = 1: ans=Str(a(n))

        For i=n-1 To 1 Step-1

            If b(i) Then

                f=f+1

                

            End If

        Next i

    End Function

某仓库物品代码格式为“X-XXX-XXXXX-Y”,其中“X”和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1 加上第2个数字乘以2……依此类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。

小吴设计一个根据校验码校验物品代码的VB程序,功能如下:在文本框Text1中输入物品代码,单击“校验”按钮Command1,如果输入的校验码与计算所得的校验码一致,则输出“校验通过。”(如下左图所示),否则输出“校验不通过!”(如下右图所示)。

 

实现上述功能的VB程序如下

Dim s As String    '用于存储输入的物品代码

Dim t As String

Dim i As Integer, j As Integer

Dim sum As Integer      '用于存储计算校验码的累加和

Dim check_old As Integer    '用于存储输入物品代码中的校验码Y

Dim check_new As Integer    '用于存储按照前面9个数字X计算所得的新校验码

Dim a(1 To 10)As Integer

Private Sub Command1_Click()

    '从物品代码中取出9个数字X依次存储到a(1)到a(9)中,取出校验码Y存储到a(10)中

    s= Text     ⑴

    j=0

    For i=1 To 13

        t=Mid(s,i,1)

        If(t>="0")And(t<="9") Then

            j=j+1

            a(j)=Val(t)

        End If

    Next i

    '计算新的校验码并和输入的校验码进行比较

    sum=0

    For i=1 To 9

        sum=sum+      ⑵

    Next i

    check_new=       ⑶

    check_old=a(10)

    If check_old=check_new Then

        Label1.Caption="校验通过。"

    Else

        Label1.Caption="校验不通过! "

    End If

End Sub

加框处代码有错,请改正。

 ⑵ ⑶ 

下列程序执行后的结果为(  )  

L = [1,-2,3,7,-8,-9,10]

j=len(L)-1

i = 0

k = 0

while i<j:

    while L[i]>0:

        i=i+1

    while L[j]<0:

        j=j-1

    if i<j:

        k = L[i]

        L[i]=L[j]

        L[j] = k

print(L)

A . 1,10,3,7,-8,-9,-2 B . 1,3,7,10,-2,-8,-9 C . 1,3,7,10,-8,-9,-2 D . -2,-8,-9,1,3,7,10
有如下VB程序段:

k = 0

For i = 1 To 10

    If b(a(i)) = 0 Then k = k + 1

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

Next i

For i = 1 To k

    p = 1

    For j = 2 To 10

       If b(j) > b(p) Then p = j

    Next j

    b(p) = 0

    s = s + Str(p)

Next i

数组a(1)~a(10)的元素分别为2,5,3,8,8,5,8,9,5,3。数组b(1)~b(10)的元素初始值均为0,执行程序后,变量s的值为(   )

A . " 5 8 3 2 9" B . " 2 3 5 8 9" C . " 8 5 3 9 2" D . " 2 9 3 5 8"
小萌同学又迷上研究加密算法,他设计了一种加密算法,将自己的一些私密字符串数据(例如他在各网站或APP 注册的用户名和密码等数据信息,这里统称为明文数据)进行了加密。他设计的加密算法有如下规则:

1)将明文数据中的所有的大写字母均转换为小写字母,例如

2)将明文数据中的所有数字加上1 变成另一数字,例如

3)明文数据中除大写字母和数字字符外均不进行转换;

4)将加密后的数据倒序输出;例如“abc” “cba”;

例如明文数据“ABc+123”加密后的密文为“432+cba”,他根据以上加密规则编写了下列Python程序:

def jiami(x):

if "A"<=x<="Z":

  y =     ①     

elif "0"<=x<="9":

  y = str((int(x)+1)%10)

else:

  y =     ②     

return y

mingwen = input("请输入明文数据:")

miwen = ""

for x in mingwen:

  miwen =      ③     

print("加密后的密文为:",miwen)

  1. (1) 根据小萌的加密算法,明文字符串“Ay89”加密后的结果为
  2. (2) 根据题意,请在划线处填入合适的语句或表达式

     ② ③ 

有如下Python程序段:

s = "PythonSuperNB"

list1 = ["Everyday","Study","Happy"]

if s[6:11] > list1[1]:

print(list1[1]  + s[0:6])

else:

print(list1[1])

该程序段执行后,输出的结果是(    )

A . Study B . StudyPython C . EveryPython D . StudySuper
哥德巴赫猜想是近代三大数学难题之一,即任一大于2的偶数,都可表示成两个素数之和。采用Python验证100以内哥德巴赫猜想的正确性,则划线处的代码为:(     )

import math

def isprime(num):

i=2

while i<=int(math.sqrt(num)):

  if num % i==0:

    return False

    i+=1

  return True

  n=6

  while n<=100:

    for j in range(3,int(n/2)):

      if                     :

        print (n,‘=’, j,‘+’, n-j)

n+=2

A . isprime(j) and isprime(n-j) B . isprime(j) and isprime(j+1) C . isprime(n) and isprime(j) D . isprime(j) and isprime(j-1)
有下列Python程序段:

a=[3,7,8,2,19,10,16,12]

n=len(a)

for i in range(2):

    k=i

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

        if a[k]<a[j]:

            k=j

            if i!=k:

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

下列说法不正确的是(       )

A . 程序段执行后,列表a中的元素为[19,16,8,2,3,10,7,12] B . 代码“for i in range(2):”等价于“for i in range(0,2):” C . 程序段执行后,变量k的值为7 D . 将代码“if i!=k:”修改为“if k>i:”,不会影响程序的运行结果
下列程序的输出结果是(    )

y=0

x=1

while x<=10:

  if x%5==0:

    break

  else:

    y+=x

    x=x+1

print(y)

A . 50 B . 55 C . 15 D . 10
下列循环结束后,s的值为(    )

s=0

for i in range(9):

  if i%3==0:

    s+=i

print(s)

A . 9 B . 18 C . 6 D . 15
某地出租汽车计费方法:起步价 10 元(三公里以内), 超出(含)三公里至十五公里以内的公里数 每公里按 2 元计费。超出(含)十五公里以外的公里数(每公里加收 50%空驶费)按 3 元计费。下列 程序段,输入行驶里程 s 后能正确计算出费用 pay 的是(     )

A.

if s < 3:

pay = 10

elif 3 <= s < 15:

pay = 10 + (s - 3) * 2

else:

pay = 34 + (s - 15) * 3

B.

pay = 10

if 3 <= s < 15:

pay = 10 + (s - 3) * 2

else:

pay = 34 + (s - 15) * 3

C.

pay = 10

if s >= 3:

pay = pay + (s - 3) * 2

if s >= 15:

pay = pay + s - 15

D.

pay = 10

if s >= 3:

pay = pay + (s - 3) * 2

elif s >= 15:

pay = pay + s - 15

A . A B . B C . C D . C
目前我国18位身份证号码的倒数第二位代表性别,单数为男性,双数为女性。若字符串变量s代表身份证号码,则下面判断语句表达正确的是(     )

A

B

C

D

if (s[16])%2==0:

print(“女性”)

else:

    print(“男性”)

If int(s[16])%2==0:

print(“女性”)

else:

    print(“男性”)

if int(s[16])//2==0:

print(“女性”)

else:

    print(“男性”)

if (s[16])//2==0:

print(“女性”)

else:

    print(“男性”)

A . A B . B C . C D . D
输入一个正整数(n>=3),判断该正整数是否为素数(质数),要判断一个数n是否为素数,最简单的方法是统计2到n-1之间的所有能整除n的整数个数,若能整除n的整数的个数大于0,则n不是素数

n=int(input(“n=”))

s=0

for i in range(2, n):

  if n%i==0:

    s=

  if :

    print(n,“是素数”)

  else:

    print(n,“不是素数”)

执行该程序段后,输出的结果为4,则应输入的内容为(     )

n=int(input("请输入一个正整数"))

d={}

c=0

m=0

while n>0:

  x=n % 10

  if x not in d:

    d[x]=1

  else:

    d[x]=d[x]+1

  if d[x]==1:

    c=c+1

    n=n // 10

print(c)

A . 135798 B . 232458 C . 20220320 D . 24686482
某Python程序段如下:

def doit(x):

   if x>=6:

      ans=1

   else:

      ans=3*doit(x+1)+2*doit(x+2)

   return ans

print(doit(3))

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

A . 17 B . 21 C . 61 D . 62