4.3 运用选择结构描述问题求解过程 知识点题库

下列VB程序段功能为:在文本框Text1中显示整型数组元素a( 1 )到a( 10 )中的最小值和次小值。

k1 = 1:k2= 10

For i=2 To 10

     If a(i) < a(k1) Then

        

        

     ElseIf a(i) < a(k2) Then

        

     End If

Next i

Text1.Text = Str(a(k1)) + "," + Str(a(k2))

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

①k1=i

②k2= i

③k2= k1

则⑴⑵⑶处语句依次是(    )

A . ①②③ B . ③①② C . ②①③ D . ③②①
以下是牛顿迭代程序,认真阅读,填写横线内容

import math

a=float(input("请输入方程系数a:"))

b=float(input("请输入方程系数b:"))

c=float(input("请输入方程系数c:"))

d=b*b-4*a*c

if :

    x1=(-b+math.sqrt(d))/(2*a)

    x2=(-b-math.sqrt(d))/(2*a)

    print("方程有两个不同的解",x1,x2)

elif:

    x1=-b/(2*a)

    print("方程有两个相同的解",x1)

else:

    print("方程无解")

有如下VB程序段:

For j=7 To 3 Step -1

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

        t=a(j-2): a(j-2)=a(j): a(j)=t

    End If

Next j

数组元素a(1)到a(7)的值依次为“1, 4,5,2,7,6,3”,执行该程序段后,元素交换的次数为(    )

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

Dim a(0 To 25)As Integer

s=Text1.Text

For i=1 To Len(s)

    ch=Mid(s,i,1)

    If ch>=“a” And ch<=“z” Then

        m=Asc(ch)-97

        a(m)=a(m)+1

    End If

  Next i

已知数组a中元素的初值为0,若文本框Text1中输入的内容是“One of the most important questions;”,执行该段程序后,数组元素a(14)的值为(  )

A . 0 B . 2 C . 4 D . 5
下面if语句统计满足“性别 (gender) 为男、职称(rank) 为副教授、年龄(age)小于40岁”条件的人数,正确的语句为(     )。
A . if(gender=="男" or age<40 and rank=="副教授"): n+=1 B . if(gender=="男" and age<40 and rank=="副教授"): n+=1 C . if(gender=="男" and age<40 or rank=="副教授"): n+=1 D . if(gender=="男" or age<40 or rank=="副教授"): n+=1
某仓库管理员希望使用计算机来帮助他管理仓库物品。会有不同的人到仓库取物品,每人希望取走不同数量的物品,物品库存总量事先已知。

计算机的管理规则如下:

·对于某人需要的物品数量,若仓库有足够的物品,将直接分配给该人。

·若某人需要的物品数量超过了当前的库存量,仓库会拒绝该人的请求。

管理员希望知道有多少人没有顺利取到物品。

现编写VB程序实现对物品的管理,在文本框Text 1中输入物品库存总量,在文本框Text 2中输入每人所需要物品的数量(以逗号分隔),单击“统计”按钮count,在Label 4中显示一天中没有取到物品的人数。程序设计界面如图所示。

图片_x0020_100009

  1. (1) 根据题意,“统计”按钮的对象名为
  2. (2) VB程序代码如下,请在划线处填入合适的代码。

    Private Sub count_Click()

        Dim sum As Integer,num As Integer

        Dim cnt As Integer

        Dims As String,chAs String,tmp As String

        cnt= 0

        sum=Val(Text 1.Text)

        s=Text 2.Text

        For i=1 To Len(s)

            ch=Mid(s,i,1)

            If ch=","Then

                num=Val(tmp)

                If num>sum Then

                    cnt=cnt+ 1

                Else

                   

                End If

                tmp=""

            Else

               

            End If

        Next i

        Label 4.Caption=Str(cnt)

    End Sub

  3. (3) 若在文本框Text 1中输入“30”,文本框Text 2中输入“10,5,20,6,78”,则程序运行结束时标签Label 4中显示的内容为
程序代码如下:

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
从前有一只九尾狐叫小九,他拥有超高的智商,喜欢数学推理。最近他喜欢上了利用约瑟夫环玩推理纸牌的游戏。即给定n张环形排列的纸牌,选定最小的一张牌为起始位置。第一次取第1张牌(起始位置的纸牌),第二次间隔1张取第3张纸牌,第三次

间隔2张取第6张纸牌,……直到取完为止(如果取的位置超过n,重新从1位置取)。如果有4张纸牌,那么取的纸牌编号依次为1,3,4,2。同样,可以知道每张纸牌的被取走的顺序如下表。

序号

1

2

3

4

1

轮次

1

2

1

3

1

4

1

2

轮次

2                     2

2

4

2

3

轮次

3

2

3

4

轮次

4

纸牌被取走顺序也可以理解为纸牌存留的轮次。每次取走一张纸牌后,下一轮第一张纸牌编号为该纸牌的后一张。上述例子中3第二个被取,留存轮次2,下一轮的第一张纸牌为4,剩下的纸牌留存轮次增加。

现在,只要给小九纸牌的数量n,他能通过逆推法快速地计算出取的纸牌编号顺序,方法如下(以n=4为例):

逆推得到的纸牌顺序

1

4

2

3

最终得到的纸牌编号

1

2

3

4

即在第i轮,上一轮纸牌轮次加1,并在后面增加一张轮次为1的纸牌。然后将轮次为1放在最前的位置,最后整体循环向右移动n-i次。直到n轮后,可知每张纸牌被取走的顺序,根据此顺序,得到每次取走纸牌的编号。

轮次

数组

1    2    3    4

1

a(1)=1

1

2

①前一轮所有值加1

②第二位增加数值1

③将轮次为1的数放在最前

④整体右移动2位

2

2    1

1    2

1    2

3

①前一轮所有值加1

②第三位增加数值1

③将轮次为1的数放在最前

④整体右移动1位

2    3

2    3    1

1    2    3

3    1    2

4

①前一轮所有值加1

②第四位增加数值1

③将轮次为1的数放在最前

④整体右移动0位

4    2    3

4    2    3

1    4    2

1    4    2

根据以上算法小九编写了如下VB程序,请回答下列问题。

  1. (1) 由题意可知,当n的值为6时,1~6张纸牌被取走顺序为
  2. (2) 请在划线处填入合适的代码。

    Dim n As Integer

    Dim a(1 To 100) As Integer

    Private Sub Command1_Click()

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

        Dim ans As String, x As Integer

        n = Val (Text1. Text)

        a(1) = 1

        For i=2 To n

            For j=1 To i-1

                

            Next j

            j=i

            Do While j>1

                a(j)=a(j-1)

                j=j-1

            Loop

            a(1) = 1

            For j=1 Ton - i

                k = a(1)

                

                a(x) = k

            Next j

        Next i

        ans =“”

        For i=1 Ton

            ans = ans + Str(a(i))

        Next i

        Label1. Caption =“序列为:”+ ans

    End Sub

    Function yd(i As Integer) As Integer

        Dim j As Integer, tmp As Integer

        For j=i To 2 Step -1

            tmp=j+1

            If tmp > i Then

            a (tmp) = a(j)

        Next j

        yd=j+1

    End Function

班级里有48名学生,按6行8列安排座位,每2列为一组,共4组,矮的在前,高的在后。班级里每周都进行位置轮换,轮换规则如下:第一组同学换到第二组,第二组同学换到第三组,第三组同学换到第四组,第四组同学换到第一组, 并且同桌之间互换位置。为了方便学生在座位轮换的时候快速找到自己的新座位,设计了如下VB程序:窗体加载时,从数据库中读取班级学生数据,并按身高从小到大排序后,以6行8列的形式显示在列表框List1中:单击命令按钮Comand1后,在列表框list2中显示进行次轮换后的座位表。 程序运行界面如下:

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) “换座位”按钮的对象名为:
  2. (2) 请在划线处填入合适的代码,完成上述算法。

    Dim xn(1 To 50) As String, sg(1 To 50) As Integer

    Dim n as integer, i as integer, j as integer, ch as string, t1 8s string, t2 as integer

    Private sub form_load( )    ‘把数据表中姓名和身高分别存储到数组xm( )和sg( ),代码略

        ‘按身高从低到高对学生数据进行排序,代码略

        List1.Clear

        List1.AddItem“第一组”+“第二组”+“第三组”+“第四组”

        List1.AddItem

        “------------------------------------------------------------”

        ‘将排序好的学生姓名按6行8列的格式输出在列表框list1中

        For i=1 To n

            ch=ch+xm(i)+””

            If i Mod2=0 Then ch=ch+””

            If  Then

                List1.Addltem ch

                ch=””

            End If

        Next i

    End Sub

    Private Sub Com1_Click( )

        Dim a(1 To 50) As String, b(1 To 50) As String

        Dim st As String

        ‘下面进行组与组之间的调换,调换后的数据保存在数组a中

        For i =1 To 6

            For j=1 To 8

                a((-1)*8+j)=

            Next j

        Next i

        ‘下面进行同桌之间互换位置,互换后的数据保存在数组b中

        For i=1 To 6

            For j=1 To 8

                If j Mod2=1 Then

                    b((-1)*8+j)=

                Else

                    b((i-1)*8+j)=a((-1)*8+j-1)

                End If

            Next j

        Next i

        ‘在列表框List2中输出轮换后的结果,代码略

        ‘下面进行数据重新赋值,为下一次轮换做准备

        For i=1 To 48

            xm(i)单b(i)

        Next i

    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
阅读下列程序,写出运行结果

n=30

s=0

for i in range(2,n):

    if n%i==0:

        s=s+i

print(i)

程序运行后输出结果是:

已知某数据加密方法如下:将字符的内码以字节为单位进行加密。将每个字节的后5位转换为十进制数,后面跟上“,”和该字节的前3个二进制位转换为十进制数,形成该字节的加密形式。例如:

内码(十六进制)

CA

B1

二进制

11001010

10110001

后5位十进制

10

17

前3位十进制

6

5

加密结果

10,6,17,5

按照上述规则,小明设计了一个解密的VB程序,功能如下:单击“解密”按钮,程序依次将文本框Text1中的字符提取,进行解密处理,并输出在文本框Text2中,程序效果如图a所示,请回答下列问题

  1. (1) 要改变Command1对象上的字体颜色,可以改变Command1对象的属性的属性值。(单选,填字母:A . Caption/B . Font/C . Forecolor/ D . Additem)。
  2. (2) 实现上述功能的VB程序段如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Const n = 100

        Dim s As String, ch As String, nm As String

        Dim p As Integer, i As Integer, k As Integer, t As Integer Dim a(1 To n) As Integer

        s = Text1.Text p = 0: k = 0

        For i = 1 To Len(s)

            ch = Mid(s, i, 1)

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

               

            Else

                If k Mod 2 = 1 Then

                   

                Else

                    a(k+1) = p

                End If

                k = k + 1:p = 0

            End If

        Next i

        a(k + 1) = p * 32 + a(k)

        For i =

            nm = nm + dtoh(a(i))

        Next i

        Text2.Text = nm

    End Sub

    Function dtoh(x As Integer) As String Const

        st1 = "0123456789ABCDEF"

        Do While x > 0

           

            x = x \ 16

        Loop

    End Function

  3. (3) 程序中加框处代码有错,请改正。
请判断如下程序的运行结果是将三个数(  )。

print("请输入3个数:")

x=int(input("x="))

y=int(input("y="))

z=int(input("z="))

temp=0

if x>y:

  temp=y

  y=x

  x=temp

if x>z:

  temp=z

  z=x

  x=temp

if y>z:

  temp=z

  z=y

  y=temp

print("这3个数新序列是:",x,y,z)

A . 从小到大排序 B . 从大到小排序 C . 都变成最大的数 D . 都变成最小的数
以下程序段实现的功能是删除字符串s中第i位上的字符,代码如下:

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

i = int(input("请输入待删除字符是第几位:"))

n = len(s)

if i < 1 or i > n:

result = "输入错误"

elif i == 1:

result = s[1:]

elif i < n:

                

elif i == n:

result = s[:-1]

print(s,"删除第",i,"位后的结果是",result)

则程序中划线处应填入的语句是(    )

A . result = s[1:i-1] + s[i:] B . result = s[:i-1] + s[i:] C . result = s[:i-1] + s[i+1:] D . result = s[:i] + s[i+1:]
有如下VB程序段:

s=0:k=0

For i=1 to 7 step 2

    If i<=1 then

        k=k+1

    Elseif i<=2 then

        k=k+2

    Elseif i<=3 then

        k=k+3

    End if

        s=s+k

Next i

该程序段运行后,s值是(    )

A . 5 B . 7 C . 13 D . 15
有N个人围成一个圈,从1到k报数,报到k的人出列,剩下的同学继续围成一个圈,由出列位置的下一个同学再从1开始报数,输出出列的顺序,则①②划下线处填空选项为(    )

Private Sub Command1 Click)

    Const n=9 '总人数

    Dim b(1 Ton) As Integer

    Dim k As Integer, i As Integer, p As Integer, cnt As Integer, pre. p As Integer

    k =Val(Text1. Text)

    For i= 1 Ton

        b(i)=iModn+1

    Next i

    p = n:i = 0:cnt=0

    Do While i<n

        pre_p = p

        p=   ①   

    cnt=cnt+1

    If cnt=k Then

       List1. AddItem Str(p)

       b(pre_p)    ②    

       cnt=0

       i= i+1

    End If

  Loop

End Sub

A . ①b(p)   ②b(p) B . ①p mod n+1   ②b(p+1) C . ①b(p)   ②b(p+1) D . ①(p-2+n) mod n    ②b(p)
有如下程序段:

Dim i As Integer, sum As Integer

Dim a(1 To 10) As Integer

sum=0

For i=1 To 10

    a(i) = i+5

    If a(i) Mod 3=0 Then sum=sum+a(i)

Next i

Text1. Text = Str(sum)

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

A . 24 B . 42 C . 105 D . 205
输入一个字母,生产一个回文字符串,如输入大写字母“E”,则产生从“A”开始的回文字母“ABCDED-CBA";如输入“e”,则产生“abcdedcba”;实现该功能的VB程序段如下:

m= Text1. Text: s=" "

If m>= "a" And m<= "z" Then init= Asc("a")

If m>= "A" And m<= "Z" Then init= Asc("A")

n= Asc(m) - init +1

  For i=1 To

    If i <= n Then

      s=s+

    Else

      s=s+

    End If

  Next i

Label2. Caption=s

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

①12*n-1   ②2*n   ③Chr(Asc(m)+i-n)   ④Chr(init+2 * n- i- 1)

则(1)(2)(3)处语句依次是(    )

A . ①③④ B . ①④③ C . ②③④ D . ②③④
执行该程序段后,输出的结果为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
有如下程序段,测试结果为图所示

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

if n % 2 == 0:       #保证n的值为奇数

    n=n-1 a=[]

for i in range(n):

    if i<=n//2:

        b=2*i+1           #当在上半部分的时候

    else:

                          #当在下半部分的时候

                 

    a.append(" "*w+"&"*b)
for s in a:

请输入行数:9

请输入行数:6

    print(s)

上述程序中划线处可选语句为(     )

①b=n-2*i+1   ②b=(n-i)*2-1

③w=(n-b)%2   ④w=(n-b)//2

A . ①③ B . ①④ C . ②③ D . ②④
最近更新