过程与自定义函数 知识点题库

只能被1和它本身整除的自然数。要求编写VB程序找出任意两个整数之间中所有的素数及个数,程序运行界面如下图所示。

请根据算法将下列程序补充完整。

Function prime(a As Integer) As Boolean

    Dim j As Integer

    prime = True

    j = 2

    Do While prime And j <= a \ 2

       If a Mod j = 0 Then

           prime = False

         Exit Do

       End If

            

         Loop

End Function

Private Sub Command1_Click( )

Dim i As Integer, a As Integer, b As Integer

Dim count As Integer

a = Val(Text1.Text)

b = Val(Text2.Text)

        For i = a To b

           If  = True Then

               List1.AddItem Str(i)

               count = count + 1

           End If

Next i

Label1.Caption = "素数共有" + Str(count) + "个!"

End Sub

下列程序的功能是在text1中输入的自然数,分解为3个互不相同的质数(三个质数的和等于输入的自然数),并把分解产生的质数按升序顺序显示在左边的列表框中。例如,输入20,那么在列表框中会显示如右图所示结果。其中,上述界面中“开始处理”按钮的名称是“Command1”,程序中函数f(x)的功能是判断x是否为质数,如果是质数则返回值为true,否则返回false。

请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。

Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer

Function f(x) As Boolean

f = True

      For i = 2 To Sqr(x)

         If x Mod i = 0 Then   

Next i

End Function

Private Sub Command1 Click()

n =   

For a1 = 2 To n

 For a2 = a1 To n

  For a3 = a2 To n

   If     And f(a1) And f(a2) And f(a3) Then

    List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))

   End If

  Next a3

 Next a2

Next a1

End Sub

【加试题】找出100到1 000之间满足以下条件的整数:该数和冥半万数合开后组成的数字串中不存在重复的数字。例如209,其平方数为43 681,209和43 681合并后的数字串“20943681”中无重复数字,209就是符合条件的数。运行界面加图所示,实现上述功能的VB代码如下,但加框处代码有错,请改正。

Private Sub Command1_Click()

  Dim x As Integer,Y As Long,st

As String

  For x=100 To 1 000

    y=x^2

    st=x&y         ‘将数字x和y合并成不含空格的数字串st

    If  Then               ‘①

       List1. AddItem Str(x)&"  "& Str(y)&"  "&st

    EndIf

  Next x

  End Sub

  Function judge(s As String)As Boolean

    Dim a(1 To 100)As String,i As Integer,j As Integer

    judge=False

    For i=1 To Len(s)

      a(i)=Mid(s,i,1)

    Next i

    For i=1 To Len(s)-1

      For j=i+1 To Len(s)

         If  Then Exit Function       ‘②

      Next j

    Next i

    judge=True

  End Function

  1. (1) ①处应改为

  2. (2) ②处应改为

问题描述:有n个互不重复的数字,值的范围是[1,n],分别保存在数组元素a(1)到a(n)中,若数字i保存在a(i),则认为数字i在正确的位置上。若干个相互占用了位置的数字称为一组,一个在正确位置上的数字单独为一组,比如6个数字2,3,1,4,6,5分别保存在数组元素a(1)到a(6)中,则2、3、1为一组,4为一组,6、5为一组。该程序的功能为输出每组的情况。运行界面如图:

  1. (1) 数组元素a(1)到a(5)的值分别为2、5、3、1、4,这5个元素总共有组。
  2. (2) 请补充代码。

    Const n = 10

    Dim a(1 To n) As Integer     ‘保存原始数据

    Dim b(1 To n) As Boolean     ‘数组b用来标记相应的位置有没有找过

    Private Sub Command1_Click()

    Dim i As Integer, sum As Integer, total As Integer

    sum = 0: total = 1     ‘total表示第几组

    i = 1

    List2.AddItem“第” + Str (total) + “组”

    Do While sum < n

      Do While Not b(i)

        List2.AddItem a(i)

        b(i) = True

       

        sum = sum + 1

          Loop

          If sum < n Then

       

        List2.AddItem “第”+ Str(total)+“组”

        i = 1

        Do While b(i)     ‘该循环用来查找下一组的开始位置

          i = i+ 1

        Loop

          End If

    Loop

    End Sub

    Private Sub Form_Load()

    Dim i As Integer

    Randomize

    For i = 1 To n     ‘产生n个不一样的整数,范围为[1,n]

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

      Do While

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

      Loop

    Next i

    For i = 1 To n

      List1.AddItem a(i)

      b(i) = False

    Next i

    End Sub

    Function f(x As Integer, y As Integer) As Boolean

    ‘该函数的功能:判断x和数组a中前y个数有没有重复

    Dim j As Integer

    f = False

    For j = 1 To y

      If a(j) = x Then f = True:Exit For

    Next j

    End Function

奇偶校验是一种校验数据传输正确性的方法。其中奇校验方法:统计二进制数据的数位中“1”的个数,若个数为奇数,则校验位值为0,否则校验位值为1。小李编写了一个计算奇校验位值得VB程序,功能如下:在文本框Text1中输入1~255十进制待校验数,单击“计算”按钮Command1后,在文本框Text2中显示该数对应的二进制值,并在标签Label3中显示该数的校验位值。程序运行界面如图所示。

  1. (1) 在设计程序界面时,要清空文本框中的显示内容,应修改该文本框中的属性。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

      Dim a As Integer, s As String

      Dim n As Integer, t As Integer, v As Integer

    n=Val(Text1.Text)

    t=0

    s=""

      Do While n>0

    a=n Mod 2

    n=n\2

    t=  

    s=Str(a)+s

      Loop

    v=t Mod 2

    Text2.Text=s

    Label3.Caption="校验位值:"+  

    End Sub

  3. (3) 运行该程序,在文本框Text1中输入22,单击“计算”按钮,则显示的校验位值是
【加试题】删数问题。输入一个数字串s,删去其中k个数字(k<数字串中数字的个数),使剩余数字在保持相对位置不变的情况下构成一个值最小的整数。例如,s=“19990608”,k=4,处理结果为:608。

删数的算法如下:

⑴如果k>0,则从前往后检测相邻字符,否则,转⑶;

⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转⑴;

②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到⑴;

⑶去掉串首的0,输出结果。按照上述算法思路,编写了VB程序,功能如下:在文本框Text1中输入数字串,在文本框Text2中输入删数的个数,单击“处理”按钮Command1,在文本框Text3中显示最小的整数。程序运行界面如图所示。

  1. (1) 如果输入的数字串为“20160125”,删除个数为4,则结果是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    delete 函数说明:delete(st,x,y)为自定义函数,功能为在字符串st中删除x 位置开始的y 长度的子串。

    Private Sub Command1_Click()

    Dim s As String, k As Integer, i As Integer, j As Integer, n As Integer

    s = Text1.Text

    k = Val(Text2.Text)

    n = Len(s)

    Do While k > 0

    i = 1

    Do While i < n And 

    i = i + 1

    Loop

    If i = n Then

    n = n - k

    k = 0

    Else

    s = delete(s, i, 1)

    n = n - 1

    End If

    Loop

    i = 1

    Do While n > 1 And Mid(s, 1, 1) = "0"

    s = delete(s, 1, 1)

    I = i + 1

    n = n - 1

    Loop

    Text3.Text = s

    End Sub

    Function delete(st As String, x As Integer, y As Integer) As String

    'mid 函数第3个参数省略,则截取从开始位置向右到字符串结尾的所有字符

    delete = Mid(st, 1, x - 1) + Mid(st, x + y)

    End Function

二叉树是每个结点最多有两个子树的树结构,如值为9的结点有两个子树6和8,值为6的结点有两个子树5和3。若设二叉树的深度为h,则除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为9的结点是6和8的双亲结点,而6和8分别是9的左孩子和右孩子;同理,6是5和3的双亲结点,而5和3分别是6的左孩子和右孩子……

假如我们用数组表示上述大根堆:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

9

6

8

5

3

4

7

2

1

现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。

数组存储为:

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

6

8

5

3

4

7

2

1

8

具体操作方法如下:

第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;

数组存储为:

第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;

数组存储为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

9

8

8

5

6

4

7

2

1

3

第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。

  1. (1) 若在图中增加值为4的新元素,则元素4将被存储在数组元素中。
  2. (2) 小段为此编制一VB程序:在文本框Tcxt1中输入结点个数n,单击命令按钮Command1,随机产生n个[1,99]的整数作为结点值,并由此构造大根堆,结果显示在列表框List1中,程序运行界面如图所示。

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

    Dim a(1 To 100) As Integer

    ‘该函数功能为实现数据的对齐输出

    Function pout(x As Integer, y As Integer) As String

    代码略

    End Function

    Private Sub Command1_Click()

    Dim tmp As Integer, Dim m As Integer

    Dim n As Integer, Dim s As String

    n = Val(Text1.Text)

    For i=1 To n

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

    Next i

    For i= 2 To n

        p=i

        f=p\2

        Do While  ①  

            tmp = a(p): a(p)= a(f): a(f) = tmp

            p=f

            f=p\2

            If f= 0 Then Exit Do

        Loop

    Next i

    k= n

    Do While k >=1

        m=m+1

          ②  

    Loop

    k= 1

    For i=0 To m- 1

        s=""

        For j= 1 To   ③  

            If k> n Then Exit For

            s=s+ pout(a(k), (2^(m-1)-2^i)/2^i)

            k=k+ 1

        Next j

        List1.AddItem s

    Next i

     ② ③ 

罗马数字是阿拉伯数字传人之前使用的一种数码。罗马数字采用七个罗马字母作数字,即I(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法如下:

①相同的数字连写,所表示的数等于这些数字相加得到的数,如Ⅲ=3;

②小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如Ⅷ=8、XⅡ=12;

③小的数字(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如Ⅳ=4、Ⅸ=9;

王老师设计了一个将罗马数字转换成阿拉伯数字的程序,实现该功能的程序代码如下:

Private Sub Command1_Click()

Dim a(1 To 10)As String

Dim b(0 To 10)As Integer

Dim x As String,c As Integer,j As Integer

x=Text 1.Text

j=Len(x)

b(0)= 0

c=0

For i=1 To j

   a(i)= Mid(x,j-i+1,1)

   b(i)=zh(a(i))

   If  ①  Then

     c=c-b(i)

   Else

     c=c+b(i)

   End If

Next i

Label2.Caption="结果:"+Str(c)

End Sub

Function zh(xAs String)As Integer

s="IVXLCDM"

zh=1

For i=1 To 7

  If  Then

    Exit For

  Elself  ②  Then

    zh=zh*5

  Else

    zh=zh*2

  End If

Next i

End Function

  1. (1) 程序界面如图所示,程序中共包含个对象。

  2. (2) 加框处代码有错,应改为
  3. (3) 为完善程序,在划线处填入合适的代码。

  4. (4) 罗马数字MCMLXXX转换成阿拉伯数字为
有两个以字母结尾的字符串s1和s2,在不区分大小写的前提下判断它们是否相同。该功能的VB程序段如下:

Private Sub Command1_Click(  )

Dim c1 As String, c2 As String, s1 As String, s2 As String

s1 = Text1.Text: s2 = Text2.Text

i = 1: j = 1

Do While i <= Len(s1) And j <= Len(s2)

    c1 = Mid(s1, i, 1): c2 = Mid(s2, j, 1)

    If                        Then

        i = i + 1: j = j + 1

    Else

        Exit Do          'Exit Do表示退出循环

    End If

Loop

If i > Len(s1) And j > Len(s2) Then T3.Text = "相同" Else T3.Text = "不相同"

End Sub

Function toLowerCase(x As String) As String   '该函数把大写字母转成小写

    If x >= "A" And x <= "Z" Then

        toLowerCase = Chr(Asc(x) + 32)

    Else

                             

    End If

End Function

划线处的代码从以下代码中选择,每条划线一句代码:

①toLowerCase = Chr(Asc(x) - 32)     ②toLowerCase = x

③toLowerCase(c1) = toLowerCase(c2)   ④c1 = c2

选择代码组合正确的是

A . ④ ① B . ① ④ C . ③ ① D . ③ ②
某个进行素数判断的VB程序段如下:

Private Sub Command1_Click()

Dim x As Integer

x = Val(Text1.Text)

Label1. Caption = Str(x)+ prime(x, 2)

End Sub

Function prime(n As Integer, m As Integer) As String

If n = m Then

prime = "是素数。"

ElseIf n < 2 Or n Mod m = 0 Then

prime = "不是素数。"

Else

prime = prime(n, m +1)

End If

End Function

在文本框Text1中输入的值是123,并执行程序后,自定义函数prime被执行的次数是(  )

A . 1次 B . 2次 C . 122次 D . 123次
用Python编写程序,实现一元二次方程式ax2+bx+c=0(a≠0)的求解。输入系数a、b、c的值,输出方程可能的解。
  1. (1) 编写函数f实现一元二次方程根的判别式的求解。
  2. (2) 将下面程序划线①处的代码补充完整。

    import math

    a=int(input("a:"))

    b-int(input("b:"))

    c=int(input("c:"))

    if

        x1=((-1)*+s<+(:,),)))/(2*a)

        x2=((-1)*b-<+(f(),))/(2*a)

        print("x1=",x1,"x2=",x2)

    else:

    print("该方程式无解!")

  3. (3) (多选题)小明在调试程序时发现错误提示“NameError: name 'sqrt' is not defined" ,上述程序错误的语句是(     )

    A.a=int(input("a:"))

    B.x1=((-1)*b+sqrt(f(a,b,c)))/(2*a)

    C.x2=((-1)*b-sprt(f(a,b,c)))/(2*a)

    D.print("x1=",x1,"x2=",x2)

    应如何修改:

人机对战游戏一剪刀石头布,游戏规则如下:石头胜剪刀,剪刀胜布,布胜石头。编写Python程序实现上述算法,玩家输入0表示石头,输入1表示剪刀,输入2表示布,电脑随机产生[0,2]之间的整数,部分代码如下:

import random

def judge(player,computer):

    if player == computer:

        print("平局")

    elif    ①   

        print("玩家赢")

    else:

        print("电脑赢")

dic={0:"石头",1:"剪刀",2:"布"}

player = intinput("请输入序号(0.石头1. 剪刀2.布):"))

if player != 0 and player != 1 and player != 2:

print("请重新输入!")

else:

        ②   

    print("玩家出:",dic[player])

    print("电脑出:",dic[computer)

       ③  

请回答下列问题:

  1. (1) 如果玩家出1,电脑出2,那么程序运行的结果为
  2. (2) 请在程序中划线处填入正确的代码。

     ② ③ 

小刘开发了“留言收集系统”的应用软件。为了实现收集论坛某用户名发表的所有留言,他使用Python外接Requests函数库(爬虫)来采集数据。系统将根据用户输入的关键字采集数据,并将采集到的数据存储到数据库中。
  1. (1) 采集后的数据是一个有序的文本数据,系统根据关键字进行搜索,并将搜索到的时间和留言内容保存到result数据表中。请你为该数据表设计字段,写出至少3个字段名称及其数据类型。

    字段名

    数据类型

    备注

     

       

     

       

     

       
  2. (2) 编写FlaskWeb框架的Python程序,实现输入关键字,单击“搜索”按钮,显示result数据表中字段key值为所输入关键字的所有记录数。输出界面如图所示。

    请完善横线处的代码,实现将resut数据表中字段key值为txt(网页表单输入的关键字字符)的记录保存到列表变量rec中,并统计数量保存到sum中。

    from flask import Flask, render_template

    import sqlite3

    #打开Flask网页模板和打开数据库并建立conn对象等代码略

    app= Flask(_ name_ )

    app.config['SECRET_KEY']='xxx_Sss_ 1276589'

    bootstrap = Bootstrap(app)

    class NameForm(FlaskForm):

        txt = StringField('查询:', validators=[DataRequired( )])

        submit = SubmitField('搜索')

    @app.route(/)

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

    def index_cx( ):

        rec=[ ]

        sum= 0

    cu = conn.cursor( )   #建立游标对象

    rec =        #使用fetchall( )函数将结果保存到列表rec中

    sum =       #统计列表变量rec的数量

    conn.commit( )       #执行数据库语句

    ru.close#关闭游标对象

    conn.close

    return render_ template('t4.html', form-myform, txt=sum)

    if _name_ ='_main_':

    app.run( )

若在文本框Text1、Text2,Text3中分别输入2,5,6,下列程序段运行后,标签Labe12中显示的内容是(   )

Private Sub Command1_Click( )

    Dim a As Integer, b As Integer, c As Integer

    A=Val(Text1.Text): b=Val(Text2.Text): c=Val(Text3.Text)

    Label2.Caption=Str(fx(a, b, c))

End Sub

Function fx(x As Integer, y As Integer, z As Integer) As Integer

    If x<y Then fx=z

    If x>y Then fx=y Else fx=x

End Function

A . 2 B . 5 C . 6 D . 0
给出只包含加、减、乘、除中一个运算符的算术等式,求该算术等式中的最小进制。如等式6*9=42,该等式中的数字均属于13进制。推算的算法是:

⑴找出等式中单个数字的最大值;

⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;

⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。

小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。

  1. (1) 根据上述算法,则等式“5+7=13”成立,则该等式中的数属于进制数。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim s1 As String, ysf As String,t1 As String,t2 As String,t3 As String

        Dim ch As String,t As String, max As Integer, jz As Integer, i As Integer

        s1=Text1. Text

        t1=0: max=0

        For i=1 To Len(s1)

            ch= Mid(s1,i,1)

            If ch="+" Or ch="-" Or ch="*" Or ch="\" Then

                ysf=ch: t1=t: t=" "

            ElseIf ch="=" Then

                t2=t: t=" "

            ElseIf ch>="A" And ch <="F" Then

                t=t+ch

                temp=

                If max<temp Then max=temp

                Else

                    t=t+ch

                If max<Val(ch)Then max=Val(ch)

            End If

        Next i

        t3=t: jz=0

       

        Do While i<= 16

            If ysf="+" Then

                If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                ElseIf ysf="-" Then

                    If XtoD(i, t1)-XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                ElseIf ysf="*" Then

                    If XtoD(i, t1)* XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

                Else

                    If XtoD(i, t1)/XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do

            End If

            i=i+1

        Loop

        If jz < >0 Then

            Text2.Text="该数属于"+Str(jz)+"进制"

        Else

            Text2.Text="没有找到合适的进制"

        End If

    End sub

    Function XtoD(x As Integer,s As String) As Integer

        Dim j As Integer

        j=0

        For i=Len(s)To 1 Step-1

            XtoD=XtoD+Val(Mid(s, i, 1))*x

           

        Next i

    End Function

在n个(1≤n≤15)一连串的方格内填写字母A或B,但相邻两格内不能都填B,求所有可能的填写方案数。例如当n=3,可能的方案有AAA、AAB、ABA、BAA、BAB等5种。

丽华设计如下算法:考虑到方案中只包含了A与B两个字母,可以用二进制的0和1来代替(0表示A,1表示B)。当全部是0时最小,此数0;当全部是1时此数最大。枚举0到最大数的每一种情况,逐一判断是否包含B相连(二进制数1相连)情况,符合条件的0、1转为A、B后输出。

根据以上算法思想,丽华使用VB程序编写了一个程序来解决这个问题。在文本框Text1中输入n的值,点击“寻找方案”按钮Command1后,在列表框List1中输出所有的方案,在标签Label3中显示方案总数。

  1. (1) 如果输入的n值等于4,那么所有可能的方案有 种。
  2. (2) 实现上述功能的VB程序如下,运行结果如图所示,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, n As Integer, t As Integer, k As Integer

        Dim flag as Boolean, ans As Integer

        Dim a(1 To 15) As Integer

        n = Val(Text1.Text)

        For i = 0 To 2^n-1

            t = i

            For j = 1 To n

                a(j) = t Mod 2

                t = t \ 2

            Next j

            flag = True

            For k = 1 To n-1

                If  Then flag = False

            Next k

            If flag Then  : ans = ans + 1

        Next i

        Label3.Caption = "可能方案共" + Str(ans) + "种"

    End Sub

    Function GetStr(x As Integer, n As Integer) As String

        Dim m As Integer, i As Integer

        GetStr = ""

        m = x

        For i = 1 To n

            If m Mod 2 = 0 Then

                GetStr = "A" + GetStr

            Else

                GetStr = "B" + GetStr

            End If

           

        Next i

    End Function

下面代码运行结果是(     )。

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
如下Python程序段,运行后输出的值是(       )

def factorial(n):

    s=1

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

        s=s*i

        return s

total=factorial(4)

print(total)

A . 24 B . 4 C . 44 D . 16
从原点(0,0)出发,顺时针旋转,经过平面上所有整点恰好一次,我们称之为螺旋折线,如下图所示。对于整点(x,y),我们定义它到原点的距离是从原点到(x,y)的螺旋折线段的长度。例如:x=0,y=1,则螺旋折线段的长度为3;x=-2,y=-1,则螺旋折线段的长度为9。现要求计算从原点到整点(x,y)螺旋折线段的长度。小王根据,上述描述设计如下VB程序,请回答下列问题:

  1. (1) 从原点到整点(4, 0)螺旋折线段的长度为
  2. (2) 请在画线处填入合适的代码。

    Dim x As Integer, y As Integer     'x用于存储横坐标的值,y用于存储纵坐标的值

    Private Sub Command1_Click()

        Dim sum As Integer, m As Integer

        Dim dx As Integer, dy As Integer

        Dim i As Integer, t As Integer

        x= Val(Text1. Text)

        y=Val(Text2. Text)

        dx=0 : dy=0

        sum= 0

        m=1: t=- 1

        Do While Not check(dx, dy)

            For i=1 To m

                If check(dx, dy) Then Exit Do      'ExitDo表示退出Do循环

                dx=dx+t

                sum= sum+ 1

            Next i

            

            For i=1 To m

                If check(dx, dy) Then Exit Do

                

                sum= sum+ 1

            Next i

            m=m+1

        Loop

        Label1. Caption= Str( sum)

    End Sub

    Function check(x1 As Integer, y1 As Integer) As Boolean

        check= False

        If x1=x And y1=y Then

           

        End If

    End Function

某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