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

以下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
下列有关If 单分支语句说法错误的是(  )。
A . If(条件表达式)后面加冒号: B . 执行过程中条件表达式为真,执行语句A,为假则不执行语句A C . If(条件表达式)后面可以不加冒号: D . 当语句A由多个语句构成时,严格遵守相同的缩进
有如下 VB 程序段:

For i = 1 To 8

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

Next i

For i = 1 To 3

    For j = 1 To 8 - 2 * i

        If a(j) Mod 7 > a(j + 2) Mod 7 Then

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

        End If 

    Next j

Next i

For i = 1 To 8

    ch(i) = Chr(a(i) + Asc("A") - 1)

Next i

执行该程序段后,ch(1)~ch(8)各元素值不可能的是(   )

A . AACBFBFE B . GGABCDDE C . ABBBCDDE D . ABBCDDEG
有如下VB程序段:

s = Text1.Text

ans = "": k =4

i = k - 1: j = k + 1: n = Len(s)

Do While k > 0

    If Mid(s ,i,1) = Mid(s, j, 1) Then

        ans = ans + Mid(s, i,1): k = k - 1

    End If

    i = (n + i - 2) Mod n + 1

    j = j Mod n+1

Loop

Label1.Caption=ans

在文本框Text1中输入“banana”,执行程序后,标签Label1中显示的内容是(  )

A . nana B . naba C . naan D . naaa
超级素数是指一个素数,每次去掉最后面的一个数字,依然为素数。如 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 . ①③②
COD(化学需氧量)是衡量水质污染程度的重要指标之一,污水处理时根据污水的COD指标来计算COD去除剂的投放量。

程序界面如图1所示,在本框Text1中输入COD指标,单击“计算投放量”按钮(Command1)后,程序根据COD指标计算出合适的COD去除剂投放量,并在标签Label3中输出计算结果。

污水处理厂根据COD指标投放COD去除剂的标准如下表所示:

当前COD指标X

根据COD指标应投放COD去除剂的剂量

X<50

10

X≥50并且X≤500

X>500

3X

图 1

图2

  1. (1) 在设计界面时,应使用图2所示“控件工具箱”中的(填写相应编号)添加“计算投放量”按钮。
  2. (2) 为实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click( )

        Dim x As Single,s As Single

        x =Val(Text1. Text)

        If x < 50 Then

            s=10

        ElseIf 

           

        Else

            s=3*x

        End If

        Label3. Caption= 

    End Sub

小林编写了一个用于1至9之间整数加减乘除运算的小程序,具体功能如下:在文本框Text1中输入一个算术表达式(该表达式仅包含1至9之间的整数和加减乘除运算符,其中最后一个运算符肯定是乘或除,且乘或除运算符的前和后一个运算符仅可能为加减或没有),单击“计算”按钮Command1,将运算结果显示在Label2中。程序运行界面如图所示,实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 将窗体标题更改为“简单算术运算",应修改窗体的属性的属性值。
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1_ Click()

        Dims As String, c As String, i As Integer

        Dim sum As Single, sum1 As Single, sum2 As Single, k As Integer,j As Integer

        s = Text1.Text : sum2=0:k= 1

        For i= 1 To Len(s)

            c=

            If c= "*" Or c= "/" Then

                If c="*" Then

                    sum = Val(Mid(s,i+ 1, 1)) * Val(Mid(s,i- I, 1))

                Else

                    sum = Val(Mid(s, i- 1, 1))/ Val(Mid(s,i+ 1,1))

                End If

                j=i-2

                Do While

                    c = Mid(s,j, 1)

                    If c="+" Then sum1 = Val(Mid(s,j-1, 1)) + sum

                    If c="-" Then sum1 = Val(Mid(s,j- 1, 1)) - sum

                    sum=sum1

                    j=j- 1

                Loop

                If k=1 Then

                    sum2 = sum2 + sum

                Else

                    c= Mid(s, k, 1)

                    If c =“+" Then sum2 = sum2 + sum

                    If c="" Then sum2 = sum2 - sum

                End If

                k=

            End If

            sum=0

        Next i

        Label2.Caption = sum2

    End Sub

  3. (3) 加框处的代码有错误,请改正。
设计一个算法,从一串数字中找出所有数字之间绝对值的最大差值。具体程序功能如下:在文本框输入数字串(数据间用逗号分隔,以数字结尾),单击按钮,在标签框输出结果。例如在Text1中输入“13,-5,20,3,-1”,单击“计算”按钮“Command1”,在标签框“shuchu”输出“25”。实现算法的VB程序如下,界面如图所示,回答下列问题:

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t1 As Integer, t2 As Integer

    Dim s As String, c As String, st1 As Integer, st2 As Integer, max As Integer

    s = Text1.Text: max = 0: st1 = 1

    For i = 1 To Len(s) - 1

        c = Mid(s, i, 1)

        If c = "," Then

            t1 = Val(Mid(s, st1, i - st1))

               ①    

            st2 = st1

            For j = i + 1 To Len(s)

                   ②   

                If c = "," Then

                    t2 = Val(Mid(s, st2, j - st2))

                    st2 = j + 1

                   

                End If

            Next j

        End If

        If j>0 Then t2 = Val(Mid(s, st2, j - st2))

        If Abs(t1 - t2) > max Then max = Abs(t1 - t2)

    Next i

    shuchu.Caption = "所有数之间绝对值相差最大为:" + Str(max)

End Sub

  1. (1) 为实现该程序,在窗体中使用了多个对象,如图所示,不包括窗体,该程序使用了类对象。
  2. (2) 根据算法要求,请在划线处填入合适代码,使程序完整。

     ② 

  3. (3) 若删除程序中加框处语句,则计算出的最大差值为:
(加试题)若数组元素d(1)到d(8)的值依次为“6,9,12,18,20,28,32,45”,查找Key值的VB程序段如下:

t(1) = 1: t(2) = 1

For i = 3 To 5

    t(i) = t(i - 1) + t(i -2)

Next i

Key =13

i=1: j=8: k=6

Do While i <=j

    m = i+t(k-1)                      ‘①

    If Key = d ( m ) Then Exit Do        ‘Exit Do表示退出循环

    If d(m) > Key Then

        j= m - 1

        k=k-1

    Else

        i = m + 1

        k=k-2

    End If

Loop

运行该程序段后,①处的赋值语句共执行(    )

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

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

count=0

for I in s:

    if i>="0"and i<="9":

        count=count+1

print(s[count:count+3])

若输入的字符串为"AB12CCC222GGBD",则程序运行结果为(      )

A . CCC B . GGBD C . CC2 D . C22
有如下Python程序:

importmath

total=float(input("请输入金额:"))

if total<=500:

    total*=0.9

elif total<=1500:

    total*=0.85

else

    total*=0.75

print(math.floor(total))

运行程序,输入“1024”后回车,程序的输出结果是

质数又称素数。一个大于1 的自然数,除了1 和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1 既不是质数也不是合数)。小明编写了一个筛选[a,b]范围内素数的程序,功能如下:程序运行,输入正整数a 和b(a和b均大于1),程序运行如图所示。

  1. (1) 运行该程序,分别输入整数“30”和“40”,则筛选出的素数有个。
  2. (2) 请在划线处补充代码

    def prime(x):#如果x 是素数返回True,否则返回False

    flag= True

    for i in range(2, x):

    if :

    flag = False

    break

    return flag

    a = int(input("请输入整数a:"))

    b = int(input("请输入整数b:"))

    if a > b:

    #如果a 大于b,则交换a 和b 的值

    c = 0

    for j in range(a, b + 1):

    if :

    print(j)

    print(a ,"和",b"之间共找到",c,"个素数!")

有如下VB 程序段:

For i = 1 To 7

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

Next i

s = 0

For i = 1 To 6

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

    f(i) = 1

  ElseIf a(i) > a(i + 1) Then

    f(i) = -1

  Else

    f(i) = 0

  End If

  s = s + f(i)

Next i

执行该程序段后,变量s的值为0,则数组a各元素的值可能是(   )

A . 9 8 4 1 3 3 9 B . 1 2 3 6 5 3 0 C . 1 8 6 2 4 3 8 D . 6 4 4 5 6 7 1
有如下Python程序,程序执行,输入数据k之后输出的结果不正确的是( )

L=[8, 10, 9, 14, 13, 4, 9, 13, 10]

k=int(input('请输入 k 值:'))

j=0

for i in range(8):

  if L[i]<=k:

    L[j]=L[i]

    j=j+1

print(L[:j])

A . k=8 输出:[8,4] B . k=9 输出:[8,9,4,9] C . k=10 输出:[8,10,9,4,9,10] D . k=13 输出:[8,10,9,13,4,9,13]
有如下程序段:

import random

a = [0] * 6

for i in range(0,6):  

    a[i] = random.randint(1,5) * 2 + 1

    i = 0

    while i < 5:

        if a[i] > a[i+1]:

            a[i],a[i+1] = a[i+1],a[i]

        else:

            a[i] += 1

            i += 1

print(a)

执行以上程序后,列表变量a可能的是 (    )

A . [1, 6, 10, 10, 10, 9] B . [3, 8, 7, 13, 3, 9] C . [5, 10, 7, 7, 12, 11] D . [5, 10, 10, 7, 10, 8]
输入三个数,按从小到大的顺序输出。

DIM A AS INTEGER, B AS INTEGER

DIM C AS INTEGER

A= VAL(INPUTBOX(“请输入第一个数”))

B= VAL(INPUTBOX(“请输入第二个数”))

C= VAL(INPUTBOX(“请输入第三个数”))

IF A>B THEN

    T=A

    A=B

    B=T

 

IF A>C THEN

    T=A

    A=C

    C=T

 

IF  THEN

    PRINT   A,B,C

 PRINT A,C,B

END IF

S=0: M=0: N=0

FOR I=1 TO 20

    IF I MOD 2=0 THEN

        S=S+1

    ELSEIF I MOD 3 =0 THEN

        M=M+1

    ELSEIF I MOD 5 =0 THEN

        N=N+1

    END IF

NEXT I

PRINT S, M, N

这段程序的执行结果是(        )

A . 10   4    1 B . 10   3   1 C . 10   5    2 D . 10   3   3
用Python程序随机生成100个[0,20]之间的随机数,统计0~9及9以上每个数字出现的次数并输出结果:

import random

list=[0]*100

count=[0]*11

for i in range(0,100):

  num=random.randint(0,20)

  list[i]=num

  If                    :

    num=10

    count[num]+=1

print(‘0~9 及 9 以上依次出现的次数为: ’,count)

程序某次运行的结果如下:

0~9 及 9 以上依次出现的次数为:  [3, 5, 4, 6, 5, 5, 2, 5, 9, 4, 52]

则划线处的代码为:(     )

A . num>i B . list[i]>num C . num>9 D . count[i]>9
运行如下程序,输入字符串“山羊上山山碰山羊角”,输入待查询字符“山”,Count的值为(    )

string=input('请输入字符串:')

word=input('请输入查询字符:')

count=0

for i in string:

  if i==word:

    count+=1

A . 4 B . 3 C . 2 D . 1
决策树是一种通过树形结构进行分类的人工智能预测模型,如根据图1所示“气象特点与游客是否来游乐场的关系”绘制的图2所示的决策树树形结构:

图1

图2

通过了解当天的是否有风、天气、温度和湿度这4个节点参数即可预测当天是否有人来游乐场。

不同的节点划分顺序可以绘制不同的决策树,为了选出最优的节点划分顺序,需要采用“信息熵”与“信息增益”指标。

信息熵,又称香农熵,被用来度量信息量的大小,信息熵越大表示信息量越大;

信息增益,表示样本经某节点划分后的信息熵变化大小。我们绘制决策树时应当逐次选择信息增益最大的节点作为当前节点。

对于有n个信息的样本D,记第k个信息发生的概率为,信息熵计算公式为E(D)=,

例如游乐场14个样本中“去”(9个)、“不去”(5个),则信息熵==0.940

若样本按“是否有风”节点划分,“是”(6个,其中3个去,3个不去)信息熵==1;

“否”(8个,其中6个去,2个不去)信息熵==0.811;经过此节点划分后的信息增益=原始信息熵按此节点划分后样本信息熵比例和=0.940(0.811)=0.048。

  1. (1) 该网络应用属于架构。(单选,填字母:A . B/S架构,B . C/S架构)
  2. (2) 若待解密文本为“自息爱信也我己爱”,密钥为“2, 7, 1, 6, 4, 0, 3, 5”,则解密结果是
  3. (3) 实现该功能的python程序如下,请在划线处填入合适的代码:

    from flask import render_template,request,Flask

    import random

    app=Flask(__name__)  #创建应用实例

    @app.route('/')  #选择页面路由

    def index():

        return render_template('')

    #加密功能代码略,以下为解密代码:

    @app.route('/jiemi1/',methods=["GET","POST"])

    def jiemi1():

        wb=request.form["wb"]  #利用request获取网页文本框内容,返回示例:“1,4,2,3,0”

    keyo=request.form["key"]  #变量wb存储密文,变量keyo存储密钥

        keyn=list(map(int,keyo.split(","))) #将字符串keyo转换为数值列表,示例:[1,4,2,3,0]

        result=""

        for i in range(len(keyn)):

            for j in range(len(keyn)):

                if :

                        break

            result+=wb[j]

        return render_template("jie.html",WB=wb,KEY=keyo,RESULT=result)

    if __name__=="__main__":

       

  4. (4) 根据上述描述与第16题图1,则“天气”节点中的“多云”信息熵是
  5. (5) 实现求首次划分节点的程序如下,请在划线处填入合适的代码:

    def cal(lst):   #计算样本lst的信息熵

    x,y,z=0,len(lst),0  #x表示该样本信息熵,y表示该样本数量,z表示某信息发生的概率

        num={}

        for i in lst:

            if i not in num:

              

            num[i]+=1

        for k in num:

            z=num[k]/y   #计算该信息发生的概率

            x-=z*log(z,2)  #根据公式计算信息熵,log(b,a)等价于logab

        return x

    def check(x,y):

    #根据节点x,对样本y进行划分,返回示例:{'否': [1, 1, 0, 0, 1, 1, 1, 1], '是': [1, 1, 0, 1, 0, 0]}

    dic={'是否有风': ['否', '否', '否', '否', '否', '否', '否', '否', '是', '是', '是', '是', '是', '是'],

    '天气': ['多云', '多云', '晴', '晴', '晴', '雨', '雨', '雨', '多云', '多云', '晴', '晴', '雨', '雨'],

    '温度': [28, 27, 29, 22, 21, 21, 20, 24, 18, 22, 26, 24, 18, 21],

    '湿度': [78, 75, 85, 90, 68, 96, 80, 80, 65, 90, 88, 63, 70, 80],

    '是否前往': [1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0]}

    xm=list(dic.keys())

    entropy=cal(dic[xm[-1]])  #调用函数计算样本原始信息熵entropy

    #计算各节点信息增益

    m=0;p=""

    col=xm[:-1]       #“是否前往”是结果项,不参与计算

    for i in col:

        size=len(dic[i]);entropy_1=0

        zyb=  #调用函数对样本按照当前节点进行划分

        for j in zyb:  #根据划分情况逐个求子样本信息熵并按比例累加

            entropy_1+=len(zyb[j])/size*cal(zyb[j])

        zy=entropy-entropy_1

        print(i,"的信息增益:",zy)

        if zy>m:   #计算最大信息增益与信息增益最大的节点

            m=zy

           

    print("信息增益最大的节点:",p)