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

【加试题】某省学生信息技术学习平台使用情况数据存储在数据库中,利用VB编写一个程序,实现功能:输入一个积分的范围,显示该范围内的学生编号和对应的积分。程序运行界面如图所示:

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

Dim bh(10 000)As String        ‘存储学生编号

Dim jf(10 000)As Integer       ‘存储学生获得的积分值

Dim n As Integer               ‘存储学生总人数

Function Search(x As Integer)As Integer

    Search=0

    i=1:j=n:flag=True

    Do While i<=j And flag=True

      m=Int((i+i)/2)

      If x=jf(m) Then

         flag=False

             ①  

      Elself    ②     Then

        i=m+1

      Else

        j=m-1

      EndIf

    Loop

End Function

Private Sub Form_Load()

    ‘从数据库中读取学生编号和积分,分别存储到bh数组和jf数组中,并按积分值从小到大排序,显示在列表框List1中

End Sub

Private Sub Command1_Click()

    Dim Top As Integer,Bottom As Integer,Topxb As Integer,Bottomxb

As Integer

    List2.Clear

    Top=Val(Text1.Text)

    Bottom=Val(Text2.Text)

    If Top>Bottom Then t=Top:Top=Bottom:Bottom=t

    If Top>jf(n)Or Bottom<jf(1)Then Exit Sub

    Do While Search(Top)=0

      Top=Top+1

    Loop

    Do While Search(Bottom)=0

      Bottom=Bottom-1

    Loop

    Topxb=Search(Top)

    Do While jf(Topxb)=jf(Topxb-1)And Topxb>l

      Topxb=Topxb-1

    Loop

    Bottomxb=Search(Bottom)

    Do While jf(Bottomxb)=jf(Bottomxb+1)And Bottomxb<n

      Bottomxb=Bottomxb+1

    Loop

    For i=    ③    

       List2.AddItem bh(i)&"    "&jf(i)

    Next i

End Sub

 ② ③ 

【加试题】一个二进制数字串的压缩算法是取二进制字符串的首字符为压缩后的第一个符号,接着统计首字符的个数,二者连接后再连接一个分隔符“/”,接着是另一个连续字符的个数,再是分隔符“/”,……以此类推,直到结束。小明编写了一个VB程序实现上述算法,在文本框Text1中输入一串二进制数字,单击“压缩”按钮Command1,在文本框Text2中输入连续1和0的个数。程序运行界面如图所示。

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

Private Sub Command1_Click()

  Text2.Text=coding(Text1.Text)

End Sub

Private Function coding(s As String)As String

 Dim n As Integer,i As Integer,C As String

 c=Mid(s,1,1)

n=1

 For i=2 To Len(s)

    If  Then    ‘(1)

       n=n+1

    Else

      c=c+Str(n)+“/”

      n=1

    End If

  Next i

  coding=     ‘(2)

End Function

  1. (1) 处加框代码应改为
  2. (2) 处加框代码应改为; 。
【加试题】某个进行素数判断的VB程序段如下:

Private Sub Command1_Click()

    Dim x As Integer

    x=Val(Text1.Text)

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

End Sud   

Function prime(n A Integer m A 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次   
执行以下代码,单击命令按钮Command1后,显示在窗体第二行的内容是 (  )

Private Sub Commandl_Click()

Dim n As Integer, m As Integer

n=2:m=0

Do While m<3

  n=n+2

  lf fun(n)Then

    Print n

    m=m+1

  End If

Loop

End Sub

Function fun(x As Integer)As Boolean

fun=false

If x/2=Int(x/2)Then

  fun=fun(x/2)

Else

  If x=1 Then fun=True

End If

End Function

A . 4 B . 6 C . 8 D . 16
编号分别为1~n(n为偶数)的学生分成两组进行投篮比赛,奇数编号的为第一组,偶数编号的为第二组。对每个分组的成绩按从高到低排序,先比较处于分组第1位的两个队员成绩,成绩高的得1分,低的扣1分,相等均不得分,再依次比较处于分组相同位置的队员成绩,最后得到每组得分。

    如10名运动员1号到10号的成绩分别是“13,6,9,8,10,11,10,14,16,13”,从高到低排序后,第一组的成绩依次是“16,13,10,10,9”,第二组的成绩依次是“14,13,11,8,6”。第1位的成绩分别是16和14,则第一组获胜得1分,第二组扣1分,再比较两个分组第2位的成绩13和13,则两组均不得分。依次处理,比较完剩余队员的成绩,可得第一组得分为2,第二组得分为-2。

    编写一个VB程序,实现如下功能:在文本框Text1中依次输入成绩(偶数个整数,用逗号分隔并以逗号结尾),单击“确定”按钮Command1后,在列表框List1中显示对阵编号、对阵成绩及两个分组的最后得分。程序运行界面如图所示。

  1. (1) 下列对象不具有Caption属性的是(单选,填字母:A .Command1/B .Form1/C .Text1/D .Label1)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

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

    Dim s As String, ch As String, sum1 As Integer, sum2 As Integer

    Dim bh (1 To 50) As Integer, cj(1 To 50) As Integer

    s= Text1.Text

    j= 1: k=0

      For i= 1 To   ①  

        ch = Mid(s, i, 1)

        If Not (ch>= "0" And ch <= "9") Then

            k=k+1

            bh(k)=k

            cj(k) = Val(Mid(s, j, i-j))

                ②   

        End If

      Next i

      For i= 1 To k-2 Step 2

        For j= k To   ③   Step -1

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

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

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

            End If

        Next j

      Next i

      sum1 = 0: sum2= 0

      List1 .AddItem "对阵编号  对阵成绩"

      For i=1 To k- 1 Step 2

        If cj(i)> cj(i+1) Then

            sum1 = sum1 + 1: sum2 = sum2- 1

       

            sum1=sum1-1: sum2=sum2+1

        End If

        List1.AddItem adj(bh(i)) + "<-->" + adj(bh(i+1)) + adj(cj(i)) + "<-->" + adj(cj(i+1)

      Next i

      List1.AddItem"第一组得分: "+ adj(sum1)

      List1.AddItem"第二组得分: " + adj(sum2)

    End Sub

    Function adj(x As Integer) As String

    ‘函数功能:将数值x转换成字符串,并在字符串的左侧添加若干空格。代码略

    End Function

     ② ③ 

  3. (3) 程序代码中的加框处代码有误,请改正。
用26个互不重复的ASCI字符作为密码本,根据英文字母在字母表中位置,替换为密码本该位置的字符。现编写将英文字母加密的VB程序,在文本框Text1中输入明文,单击“加密”按钮Command1,在文本框Text2、Text3中输出产生的密码本和密文。程序运行界面如下图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。

Private Sub Command1_Click()

Dim i As Integer, mw As String, jm As String

mw= Text1.Text: Text2.Text = my(26)

For i =1 To Len(mw)

c= Mid(mw, i, 1)

If c>="A" And c<="Z" Or c>="a"

And c<="2"Then

       ‘①

jm =jm+ Mid(Text2.Text, t, 1)

Else

jm=jm +c

End If

Next i

Text3.Text =jm

End Sub

Function my(n As Integer)As String

Dim s As String, i As Integer, x As Integer

s ="ABCDEFGHIKLMNOPQRSTUVWXYZabc-defghijklmnopqrstuvwxyz0123456789"

i=1

Do While i <=n

t=63-i

x =Int(Rnd()*t+1)

       ‘②

s = Mid(s, 1, x-1)+ Mid(s, x+1, t-x)

i=i+1

Loop

End Function

 ② 

如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下列算法即可获得一个回数:

⑴把该整数的数字顺序颠倒,求得该数的逆序数;

⑵将该整数和其对应的逆序数相加;

⑶若相加结果不是回数,则将结果作为新的整数,返回步骤⑴。

小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。

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

Private Sub Command1_Click()

   Dim t As String, a As Long, b As Long

   Dim count As Integer       ‘count用于存储回数猜想的验证次数

   t = Text1.Text

   count = 1

   Do While Check(t) = False And count <= 10

     a = Val(t)

           ①       

     c = a + b

     List1.AddItem Str(a) & " +" & Str(b) & " =" & Str(c)

     count = count + 1

     t = c

   Loop

   If Check(t) Then

      List1.AddItem  "验证成功!"

   Else

      List1.AddItem  "10次内未验证成功!"

   End If

End Sub

' 自定义函数Turn

Function Turn(x As String) As Long

   Dim s As String, i As Integer

   s = ""

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

      s = s & Mid(x, i, 1)

   Next i

   Turn =      ②        

End Function

‘自定义函数Check,检查x是否为回文数

Function Check(x As String) As Boolean

   Dim i As Integer

   Check = True

   For i = 1 To Len(x) \ 2 Step 1

      If Mid(x, i, 1) <>       ③        Then Check = False mid(x,len(x)+1-i,1)

   Next i

End Function

  1. (1) 程序代码中,自定义函数Turn(x)的功能是
  2. (2) 请在划线处填入合适代码。

     ② ③ 

用户自定义函数是用户自己写的一段程序。一般包括等四部分。其中是必不可少的,可根据需要进行定义。
展开字符串,如果在输入的字符串中,含有类似于"c-g"或者“3-7"的字符串,就把它当作一种简写,字符串展开输出时有如下规则:

①如果“一”号右边的字符按照ASCII码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“一”号,例如"c-g"输出为"cdefg","3-7"输出为"34567"

②如果“一”号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,保留中间的“一”号,例如"a-a"输出时为"a-a","4-1"输出为"4-1"

③如果“一”号右边的字符恰好是左边字符的后续字符,则删除中间的“一”号,例如:"d-e"就输出为"de","3-4"应输出为“3-4"。

某同学按照上述算法,编写了VB程序,功能如下:在文本框Text1中输入简写字符串,单击“展开”按钮Command1后,程序进行字符串展开处理并显示在文本框Text2中。程序运行界面如图所示。

  1. (1) 如果输入的简写字符串为"abs—w—Y1234—5S—4Z",则展开后的字符串为
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

    Private Sub Command1_Click( )

      Dim st1,st2 As String,i,n As Integer

      St1=Text1.Text

      n=Len(s1)

      st2=""

      For i=1 To n

        If pos(st1, i)<> "—" Then

          st2=st2+ pos(st1, i)

        Else

            If pos(st1, i) <pos(st1, 1) Then

              For j=Asc(pos(st1, i-1))+1To Asc(pos(st1, i+ 1))-1

                    ①   

              Next j

            Else

              st2 = st2+"—"

            End If

          End If

      Next i

      Text2. Text = s2

    End Sub

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

           ②   

    End Function

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

验证哥德巴赫猜想“任一大于2的整数都可写成两个质数之和"的Python程序如下:

import math

def isprime(n):     #判断素数(素数又称质数)

    if n= 1:

        return False

    elif n= 2:

        return True

    else:

        for i in range      ①     

           if n%i== 0:

          return False

      return True

print('请输入一个正整数n:')

n = int(input( ))

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

    if isprime(i) and      ②      

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

  1. (1) 请在划线处填入合适的代码,完善程序,实现功能。

     ② 

  2. (2) 若输入的一个正整数为6,则输出结果是 。
小金同学学完了进制转换后,对课后的不同进制的加减法很是头疼,爱动脑筋的小金突发奇想,能不能用python程序来完成这些作业呢?请帮小金完成代码编程.

def convert(s):

    m=0

    le=len(s)

    key=s[le-1]

    if key=="B":

        n=2

    elif key=="D":

            ①   

    else:

        n=16

    i=0

    while i<=le-2:

        c=s[le-1-i]

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

            a=ord(c)-ord("0")

        elif c>="A"and c<="F":

            a=ord(c)-ord("A")+10

           ②    

        i+=1

    return m

s=input("请输入算式")

result=0;suanfu1="";suanfu2="";s1=""

for i in range(len(s)):

    c=s[i]

    if c=="+" or c=="-" or c=="=":

            ③  

        suanfu1=suanfu2

        suanfu2=c

        if suanfu1=="":

            result=t

        if suanfu1=="+":

            result=result+t

        if suanfu1=="-":

            result=result-t

        s1=""

    else:

        s1=s1+c

print("计算结果为"+str(result)+"D")

  1. (1) 将程序横线处补充完整

     ② ③ 

  2. (2) 如输入“1110B+10D-30H=”则输出结果为
斐波那契在《计算之书》中提出了一个有趣的兔子问题:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。迭代法也称辗转法,阅读下列程序代码。

def fib(n):

    #迭代求Fibonacci数列

    f2=f1=1

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

        ②

    return f2

n=int(input('输入需要计算的月份数:'))

print('兔子总对数为:',fib(n))

input("运行完毕,请按回车键退出...")

下列说法错误的是(    )

A . 确定迭代变量, 程序中的的f1、f2 B . 建立迭代关系式,②处应填写:f1,f2=f2,f1+f2 C . 对迭代过程进行控制,①处应填写range(3,n+1)枚举从第三个月开始 D . f1,f2=f2,f1+f2不可以用temp=f1+f2,f1=f2,f2=temp代替
恺撒密码将明文中的a用d替换,b用e替换,……,z用c替换。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种密码称为加法密码,又称为移位密码。阅读下列程序代码,

def CaesarCipher():

    c=mingwen.get("0.0", "end")   

    b=""

miwen.delete("0.0", "end")    

for i in range(len(c)):

    if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':  

b=b+chr(ord(c[i])  ①  )       #生成密文

        elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z': 

            b=b+chr(ord(c[i])  ②  )       #生成密文

        else:

            b=b+c[i]     

miwen.insert("0.0",b) 

下列说法正确的是(     )

A . ①的位置填写-3 B . ①的位置填写+3、②的位置填写-23,或-26+3 C . ①的位置填写-23 D . ②的位置填写+3
利用Python编程实现计算z=a+aa+aaa+aaaa+aa..a的值,其中a是一个数字,如8+88+888+8888+88888。设计一个summalion()函数,输入变量为数字a和需要多少个数相加的n,在这个函数中,a.aa.aaa这些基本数由变量Basic来保存,前几个数的求和保存在变量sum中,Python程序如下左图所示,请在下划线处填写代码(   )完善程序实现如下图的运行结果。

A . basic+=sum B . sum=basic+n C . sum=basic+1 D . sum+=basic
病毒疫苗抗体检测。使用字符串序列表示志愿者注射疫苗后细胞的DNA和疫苗抗体的DNA(志愿者的DNA序列长度大于疫苗抗体的DNA序列长度),通过检测疫苗抗体DNA序列是否在志愿者的DNA序列中出现来分析疫苗效果。其中疫苗抗体的DNA序列是环状的,志愿者的DNA序列是线性的。只要疫苗抗体的DNA序列在志愿者的DNA序列中出现,说明己产生抗体。例如:疫苗抗体的DNA序列是环状的“cced”,即可以表示为“cced”,也可以表示为“cedc”、“edcc”、“dcce”。A志愿者的DNA序列为“mtrcnmdaced”, 没有出现抗体序列,结果为“阴性”,B志愿者的DNA序列为“acedssdfaef",出现抗体序列,结果为“阳性”,C志愿者的DNA序列为“ce”,志愿者的DNA序列长度不够,无法比对,结果为“无效”。

按上述要求,编写一个VB程序,功能如下:程序运行时从数据库中读取志愿者的检测号、

DNA序列存入相应数组,在文本框Text1中输入抗体DNA序列,单击“检测结果”按钮Command11,在列表框List1中按检测号顺序显示每个志愿者的检测结果,并在标签Label1显示疫苗抗体的阳性率(以百分比表示,并保留2位小数),程序运行界面如图所示,请在划线处填入合适的代码。

Dim Pnum(1 To 100) As String        'Pnum数组存储志愿者的检测编号

Dim Pch(1 To 100) As String          'Pch数组存储志愿者的DNA序列

Dim Prs(1 To 100) As String            'Prs数组存储志愿者的检测结果

Dim n As Integer                           '存储志愿者的总人数

Private Sub Form_ Load( )

    Dim i As Integer, j As Integer

    Dim tmp As String, chtmp As String

    Dim Conn As New ADODB.Connection

    Dim Rs As New ADODB.Recordset

    Conn.ConnectionString = "Provider=Mi crosoft. ACE.OLEDB.12. 0;Data Source=" + App.Path+"\DNADB.accdb"

    Conn.Open

    Set Rs.ActiveConnection = Conn

    Rs.Open "SELECT * FROM Source"      '从数据库的名为 “Source”数据表中读取数据

    i =0

    Do While Not Rs.EOF

        i=i+1

        Pnum(i) = Rs.Fields(0)

        Pch(i) = Rs.Fields(1)

        Rs.MoveNext

    Loop

    Rs.Close

    Conn.Close

    n=

    For i=1 To n-1    '以检测号作为关键字对DNA序列数据进行升序排列

        j=i+1

        Do While j <= n

            If  Then

                chtmp = Pch(i):Pch(i)= Pch(j):Pch(j)= chtmp

                tmp = Pnum(i):Pnum(i)= Pnum(j):Pnum(j)= tmp

            End If

            j=j+1

        Loop

    Next i

End Sub

Private Sub Command1_ Click( )

    Dim Ach As String, RVch As String, Vch As String

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

    Ach = Text1. Text: s = Len(Ach): RVch = Ach + Ach

    k=0:m=0

    For i=1 To n

        If Len(Pch(i)) <= Len (Ach) Then

            k =k+ 1: Prs(i) = “无效”

        Else

            For j=1 To s            '按环状序列依次进行比较

                Vch =

                If Test(Vch,Pch(i)) Then

                    m=m+1

                    Prs(i) =“阳性”: Exit For

                Else

                    Prs(i) =“阴性”

                End If

            Next j

        End If

    Next i

    For i =1To n

        List1. AddItem Pnum(i) +"  " + Prs(i)

    Next i

    Label1. Caption = Str(Int(m/(n-k)*10000 +0.5)/100) + "%"

End Sub

Function Test(str1 As String,str2 As String) As Boolean    '字符串比对函数

    Dim i As Integer

    Test = False

    For i = 1 To Len(str2) - Len(str1) + 1

        If Then

            Test = True: Exit For

        End If

    Next i

End Function

  小张要对一批数据加密,数据内容全部由英文单词和空格组成(不包含数字和标点符号,数据最终以英文单词结尾,每个单词至少由两个字母组成)。加密时小张先从文本框中读取整段原文内容,然后对每个单词进行如下操作:每个单词中第一个和第二个字母交换位置,第三个字母按字母表顺序向后移动3 位,并后移到整个单词的最后面,其余字母前移,过程如图所示。例如:单词“Hazarded”,经过转换之后得到的密文是“aHardedc”。

代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:

 

Const n = 1000

Dim mw(0 To 1000) As String    '存放转换后密文的字符

Function zh(s As String) As String     '按字母表后移3位进行转换

    Dim p As Integer,flag As Boolean

    If s >= "a" And s <= "z" Then

        p = Asc(s) - 96: flag = True

    Else

        p = Asc(s) - 64: flag = False

    End If

        ①   

    If flag Then zh = Chr(p + 96) Else zh = Chr(p + 64)

End Function

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t As String, a As Integer

    Dim tmp As String, k As Integer, s As String

    s = Text1.Text

    k = 1: a = 1

    For i = 1 To Len(s)

    t = Mid(s, i, 1)

    If t = " " Then

        k = 0: mw(i) = t

    Else

        If k < 3 Then

            mw(i + a) = t: a = -a

        Else

            tmp = zh(t)

            j = i

            Do While

                   ②  

                j = j + 1

            Loop

            mw(j) = tmp

               ③   

        End If

    End If

    k = k + 1

    Next i

    For i = 1 To Len(s)

        Text2.Text = Text2.Text + mw(i)

    Next i

End Sub

请回答下列问题:

  1. (1) 如果输入的原文单词是“TextBox”,则加密后的密文是
  2. (2) 加框处代码有错误,则正确的是
  3. (3) 请将划线处补充完整

     ② ③ 

有如下Python程序段:

def fun():

    x=6

    return x

x=3

print(fun(),x)

则程序执行后输出(    )

A . 6 3 B . 3 3 C . 6 6 D . 程序出错,抛出异常
亲戚寻找。小李总是因为认不清亲戚而苦恼,于是他设计了如下程序来模拟亲戚寻找的过程。已知:如果1和2是亲戚,1和3是亲戚,则2和3也是亲戚。代码思维如下:

1)将每个人看成是一个钩码,能挂在另一个挂钩底下,自己底下也能挂其他挂钩。

2)如果两个钩码在同一条钩码串上,则为亲戚(如2、3都能找到1)。

3)如果两个是亲戚但不在一串钩码上,则可将其中一串的最上面的钩码挂在另一串的下方。

例如从图a加框处的前三行数据可得到图b所示的钩码串1和钩码串2,从第四行数据可知9、5也为亲戚,则可将两串钩码合并,合并后3为2的顶端,5为3的顶端,其余数据以此类推。

根据算法思想,编写VB程序功能如下:程序初始化时给出6条亲戚关系显示在List1中,单击“理关系”按钮,在List2中显示每个人所在钩码的顶端编号。在Text1和Text2中分别输入两人的编号,单击“询问”按钮,输出两个人是否为亲戚关系。程序运行界面如图a所示。

  1. (1) 根据图a数据,若输入两人的编号为4和5,则两人的关系是否为亲戚(填:是/否)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 9              '总人数

    Const m = 6              '已知的亲戚关系数

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

    Dim f(1 To n) As String    '记录不同的亲戚钩码串成员,每条亲戚钩码串内互为亲戚

    Dim k As Integer           '亲戚钩码串的数目

    Private Sub Form_Load()

     '初始化List1和List2,生成m条亲戚关系,每条亲戚关系的编号对应存储在数组a(i)和b(i) '中,在List1中输出a(i)和b(i),代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, x As Integer, y As Integer

        f(1) = a(1) + b(1)     '利用a(1)、b(1)生成第一条钩码串存储在f(1)中

        k = 1                  'k为钩码串编号

        For i = 2 To m

            x = root(a(i), 0): y = root(b(i), 0)  'x为调用函数获取a(i)所在的钩码串编号

            If x = 0 And y = 0 Then k = k + 1:  '根据x与y分类讨论

            If x <> 0 And y = 0 Then f(x) = f(x) + b(i)

            If x = 0 And y <> 0 Then f(y) = f(y) + a(i)

            If x <> y And x <> 0 And y <> 0 Then   'x、y在不同钩码串则将两条钩码串合并

                f(x) = f(x) + f(y): f(y) = f(k): k = k - 1

            End If

        Next i

        For i = 1 To n         '输出每个人所在钩码的顶端编号

            x = root(CStr(i), 0): y = root(CStr(i), 1)  'Cstr()函数用于去除字符前导空格

            If x <> 0 Then

                If y = Len(f(x)) Then List2.AddItem Str(i) + "  " + CStr(i)

                If y <> Len(f(x)) Then List2.AddItem Str(i) + "  " +

            End If

        Next i

    End Sub

    '按钮Command2的功能为判断输入的两个人是否为亲戚关系,代码略

    Function root(a As String, b As Integer) As Integer  '参数a表示待查找目标,参数b

    '表示返回值类型,0表示返回目标所在钩码串编号,1表示返回目标在该钩码串中的位置

    Dim m As Integer, n As Integer, i As Integer, j As Integer

    m = 0: n = 0: i = k: j = 0

        Do While i > 0

            If a = Mid(f(i), Len(f(i)) - j, 1) Then m = i: n = Len(f(i)) - j: Exit Do

            j = j + 1

            If j = Len(f(i)) Then i = i - 1: j = 0

    Loop   

    If  Then root = m Else root = n

    End Function

有如下Python自定义函数,执行后,输出结果为(    )

import math

def f(t):

  return math.ceil(t)+math.floor(t)

m=f(-3.5)

print(m)

A . 7 B . -7 C . 6 D . -6
仓库管理员对每一件物品都进行了编码,并按升序排列,每个用户在领取物品时需要提供物品的后几位编码,如果用户提供的编码在仓库中有多件物品符合,则给他编码较小的物品。如果仓库中没有符合用户需要的物品,

则输出 none。请你编程帮管理员找出每一位用户应该领取的物品编码,物品不能被重复领取。例如,仓库有5 件物品,分别为134,1123,1234, 2112,5123 ,有 3 个用户提出领取物品的需求:

2233456212,第1个数就是第1个用户要求的物品编码后几位的长度(1到9之间),例如是2,则向后读取2位数,23就是第一个用户要求的编码尾号,依次类推,第2个用户要求后3位编码为456,第3个用户要求后2位编码为12。则他们应该领取的物品为 1123,none,2112。

  1. (1) 根据题目中的物品编码,如果用户的需求数据是:143123223,领取的物品编码分别是
  2. (2) 实现上述功能的程序如下,请在划线处填入合适的代码。

    Const num = 5

    Dim a(1 To 10) As String     '物品编码

    Dim s As String, req(1 To 10) As Integer     '每位用户需求的后几位编码

    Dim n As Integer     '用户数

    Dim g(1 To 10) As String

    Dim b(1 To 10) As Integer     '每位用户需求的后几位编码长度

    Dim flag(1 To 10) As Boolean     '标记物品是否被领取

    Private Sub Form_Load()

    '仓库物品编码数据初始化,并在List1中列举,代码略

    End Sub

    Private Sub Command1_Click()

    s = Text1.Text

    k = 1: i = 1: n = 0

    Do While i <= Len(s)

    t = Val(Mid(s, i, 1))

    n = n + 1

    b(n) = t

    req(n) = Val(Mid(s, i + 1, t))

    Loop

    For i = 1 To n

       

    List2.AddItem g(i)

    Next i

    End Sub

    Function search(need As Integer, needlen As Integer) As String

    j = 1

    For j = 1 To num

    IfAnd flag(j) = False Then Exit

    For Next

    If j > num Then search = "none"

    Else

    flag(j) = True search = a(j)

    End If

    End Function