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

曲哲同学设计了一个英文字符串的加密算法,其加密的方法如下:

从被加密字符串中获取单个字符,然后得到其ascii码的8位二进制编码。

将字符的二进制编码反向,得到其逆序二进制码。

将逆序二进制码的每4位转换为相应的十六进制编码,即得到单个字符加密后的字符串。

以此类推,直到所有字符加密完成,得到加密字符串。

具体程序界面如下图,在text1中输入字符串,点击“加密”按钮command1后,在text2中显示加密后的字符串。

  1. (1) 已知字符a的ascii码为97,则字符串idear加密后的字符串为
  2. (2) 阅读整段程序,程序中①画线处应填入

    程序中②画线处应填入

    Private Sub Command1_Click()

    Dim s As String, ch As String

    Dim result As String, chA As String, chB As String

    Dim i As Integer, j As Integer

    Dim n As Integer, m As Integer

    s = Text1.Text

    n = Len(s)

    result = "": c = "0123456789ABCDEF"

    For i = 1 To n

        ch =           ①             

        ch = niXu(ch)

        m = 0

        For j = 1 To 4  ' 获取二进制码前4位的值

                       ②              

        Next

        chA = Mid(c, m + 1, 1)

        m = 0

        For j = 5 To Len(ch)

            m = m * 2 + Val(Mid(ch, j, 1))

        Next

        chB = Mid(c, m + 1, 1)

        result = result + chA + chB

    Next

    Text2.Text = result

    End Sub

    ' 得到单个字符ch的8位二进制编码

    Function D2B(ByVal ch As String) As String

        Dim s As String

        Dim data As Integer, i As Integer

        data = Asc(ch):s = ""

        Do While data > 0

            s =Str(data Mod 2) + s

            data = data \ 2

        Loop

        If Len(s) < 8 Then

            For i = 1 To 8 - Len(s)

                s = "0" + s

            Next

            D2B = s

        Else

            D2B = s

        End If

    End Function

    ' 返回字符串s的逆序

    Function niXu(ByVal s As String) As String

        Dim i As Integer:Dim r As String

        r = ""

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

            r = r + Mid(s, i, 1)

        Next

        niXu = r

    End Function

自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。使用枚举法寻找5位数以内的自幂数算法如下:

⑴使用循环列出1到99999中的每一个数zmsknz

⑵通过自定义函数ddknzms拆解得到每个数中的每位数上的数码及它们对应的n次幂之和

⑶将zmsknz与ddknzms进行比较,若相等则说明是自幂数,可将其加入列表。

编写VB程序,使用枚举法得到5位数以内的自幂数,程序设计界面如图所示:

  请根据算法及相应注释将下面的程序补充完整:

Function ddknzms(zmsknz As Long) As Long  '得到可能的自幂数

  Dim zmsknz_str As String    '字符串类型自幂数可能值

  Dim zmsknz_length As Integer, zmswsxh As Integer  '字符串类型自幂数可能值字符个数

  zmsknz_str = Trim(Str(zmsknz))

  zmsknz_length = Len(zmsknz_str)

  For zmswsxh = 1 To zmsknz_length

    ddknzms = ddknzms + Val(Mid(zmsknz_str, zmswsxh, 1))^  

  Next zmswsxh

End Function


Private Sub Command1_Click()

  Const ZMSWS = 5

  Dim zmsknz As Long, zmsknz_zz As Long

  zmsknz_zz = 10  ZMSWS - 1

  For zmsknz = 1 To zmsknz_zz

If  Then List1.AddItem (Str(zmsknz)

  Next zmsknz

End Sub

下列VB 程序用于求2个正整数(均小于10000)的最大公约数:

Private Sub Command1_Click()

Dim x As Integer,y As Integer,z As Integer

x=Val(Text1.Text)     ‘第1个正整数

y=Val(Text2.Text)     ‘第2个正整数

                   ‘调用函数gcd

Text3.Text=Str(z)

End Sub

Function gcd(a As Integer, b As Integer) As Integer

 Do While a <> b

If a>b Then a=a-b Else b=b-a

Loop

gcd=b

End Function

方框中的正确语句是(  )

A . z=gcd B . z=gcd(a, b) C . z=gcd(x, y) D . z=gcd x, y
任意一个大于或等于4的偶数,都可以用两个素数之和表示,这就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5, 10=5+5,12=5+7,98=19+79。

编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于或等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行效果如图所示。

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

Function judge(x As Integer)As Boolean

 ‘函数judge的功能是判断整数x是不是素数,若是素数则返回True,否则返回False

 Dim j As Integer

 judge=True

 j=2

 Do While j<=x-1 And judge=True

If x Mod j=0 Then

judge=False

Else

j=j+1

End If

 Loop

End Function

Private Sub Command1_Click()

 Dim n As Integer, p As Integer, q As Integer, flag As Boolean

 n=Val(Text1.Text)

 p=1

 flag=False

 Do While  And p<n    ‘

 p=p+1

      ‘

If judge(p)And judge(q)Then

Text2.Text=“Yes”

flag=True

List1.AddItem Str(n)+“=”+Str(p)+“+”+Str(q)

  End If

 Loop

 If flag=False Then

Text2.Text=“No”

End Sub

某游戏规则如下:将2*n位队员按2人一组分成n个队(n<10),地面上有一排格子,共2*n个,每个格子都对应一个小于10的随机正整数。游戏开始后,所有队员都选择站到一个空的格子里,等他们站满格子后,开始为每位队员进行记分。记分规则:每组甲乙两个队员,甲队员的分数是从自己所站的格子开始,按照格子序号递减,将这些格子中的数字一直累加到第1个格子。乙队员的分数是从自己所站的格子开始,按照格子序号递增,一直将格子中的数字累加到第2*n个格子。如果同一队的两名队员得到的分数相同,则该组参赛队获胜。

例如:如图所示,有4个队8位队员,地上一排格子的数字依次为2、1、1、7、9、2、5、6。若某队甲队员站在第4个格子,则其分数为2+1+1+7=11;乙队员站在第7个格子,则其分数为5+6=11。两者相等,则该队获胜。

gz(1)

gz(2)

gz(3)

gz(4)

gz(5)

gz(6)

gz(7)

gz(8)

←→

2

1

1

7

9

2

5

6

甲                                             乙

  1. (1) 假设有3队队员,地上一排格子的数字依次为6、7、3、4、3、9。若某队甲队员站在第3个格子上,那么该队乙队员站在第个格子上才能获胜。

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

    Dim n As Integer

    Dim gz(1 To 20) As Integer

    Private Sub Command1_Click()

    Dim dfa As Integer, dfb As Integer

    Dim ta As Integer, tb As Integer

    Randomize

    For i = 1 To 2 * n

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

     List1.AddItem “gz(“ & i & ”)” & gz(i)

    Next i

    num = 1

    For j = 1 To 2 * n

     ta = j

     dfa = zwdf(ta, True)

     For k = 1 To 2 * n

        tb = k

       

        If dfa = dfb Then

         List2.AddItem num & “甲队员(“ & j &”)得分=” & dfa & “乙队员(“ & k & ”)得分=” & dfb

         num = num + 1

        End If

     Next k

    Next j

    List2.AddItem “获胜的站法共有:”++ “种”

    End Sub

    Function zwdf(p As Integer, r As Boolean) As Integer

    Dim fs As Integer

    If r = True Then

      

        fs = fs + gz(i)

      Next i

    Else

      For i = p To 2 * n

      fs = fs + gz (i)

      Next i

    End If

    zwdf = fs

    End Function

下面VB程序段运行后,文本框Text1和Label1显示的内容分别是(  )

Private Sub Command1_Click()

  Dim y As Long

  Text1.Text = ""

  y = f(3)

  Label1.Caption = Str(y)

End Sub

Function f(n As Integer) As Long

    Text1.Text = Text1.Text + Str(n)

    If n <= 1 Then

       f = 1

    Else

       f = f(n - 1) + 2

    End If

End Function

A . 3 2 1和5 B . 1 2 3和5 C . 5和3 2 1 D . 6和3 2 1
给定m个区间和1个数组(有n个元素),现要求根据各区间限定的取值范围,将数组依次分割成m+1个段。具体分割方法如下:

●第1段是从数组首个元素开始,元素值都属于第1区间的最长连续元素段,如果首个元素不属于第1区间,则第1段元素个数为0;

●第1段分割后的剩余元素,用同样的方法来依次分割第2段、第3段、…、第m段;

●第m段分割后的剩余元素分割到第m+1段(剩余段)。若第p(1≤p≤m-1)段末尾连续元素的值也同时属于第p+1区间,则这块连续元素称为第p段“重叠块”,该段其余部分称为第p段“非重叠块”。由于不存在第m+1区间,这里特别规定:第m段的全部元素都分割到m段“非重叠块”,第m段“重叠块”的元素个数为0。一个数组分段示例如图。图中数组第1个元素10不属于第1区间[0,5],因此第1段的元素个数为0。10和20属于第2区间,而33不属于第2区间,因此第2段只包含10和20两个元素。第3段末尾连续3个元素的值也同时属于第4区间,因此,第3段“非重叠块”包含33,58,46,第3段“重叠块”包含55,62,69。

  1. (1) 给定2个区间依次为[10,50],[30,80],数组各元素为“12,44,34,45,66,50,45,70”,则第1段“重叠块”中的元素个数为
  2. (2) 小李根据上述描述,设计了一个统计各段“非重叠块”“重叠块”和剩余段中元素个数的算法。算法的VB程序如下,请在划线处填入合适的代码。

    Const n=18:m=6

    Dim a(1To n)As Integer

    Dim b(1To2*m)As Integer

    'b(1),b(2)为第1区间的下限和上限,b(3)、b(4)为第2区间的下限和上限,…

    Dim c(1 To 2 * m+1)As Integer

    '数组c用于保存统计结果:

    'c(1)、c(2)分别存储第1段“非重叠块”和“重叠块”的元素个数,

    'c(3)、c(4)分别存储第2段“非重叠块”和“重叠块”的元素个数,…

    'c(2*m-1)存储第m段“非重叠块”元素个数,c(2m)存储第m段“重叠块”的元素个数(值为0)

    'c(2*m+1)存储剩余段元素个数

    Private Sub Command 1_Click()

      Dim i As Integer, p As Integer, L As Integer, LL As Integer

      '读取n个数据并保存在数组a中,代码略

      '读取m个区间的下限和上限并保存在数组b中,代码略

      For i = 1 To 2 * m + 1

        c(i)= 0

      Next i

      i= 1:p = 1

      L= 0:LL = 0

      Do While   ①   

        If IsIn(i, p)Then

          If IsIn(i,p+1)Then

            LL = LL+1

          Else

              ②   

           LL = 0

         End If

         i= i+1

        Else

          c(2 * p - 1)= L

          c(2 * p)= LL

          L = 0

          LL=0

          p = p + 1

        End If

      Loop

      If i <= n Then

        c(2 * p-1)= n-i+1

      Else

        c(2* p - 1)= L

        c(2* p)=LL

      End If

      '输出统计结果,代码略

    End Sub

    '函数IsIn用来判断a(i)值是否属于第p区间

    Function IsIn(i As Integer,p As Integer)As Boolean

      If p>m Then

        IsIn=False

      Else

          If__③__Then IsIn=True Else IsIn=False

      End If

    End Function

某医院接受捐赠物资,各项物资数据包含编号、品名和收支数量。编号构成规则是:急需等级(单个大写字母,由高到低划分为A、B、C三个等级)+物资种别(单个大写字母,至多有A~Z共26种)。为提高库存管理效率,现需要整理物资库存,要求:先对同种物资数量进行合并统计;然后按各种物资库存量,更新其急需等级,并依等级由高到低分类显示。等级划分规则为:当库存量低于3天所需,设置为A级;当库存量低于7天所需,设置为B级;否则设置为C级。

按上述要求,编写一个VB程序,功能如下:在列表框List1中显示整理前的所有物资相关数据,单击“库存合并统计”按钮Command1,在列表框List2中显示整理结果,程序运行界面如图所示。

  1. (1) 由图中示例可知,急需等级发生变化的物资有种(填数字)。
  2. (2) 请在划线处填入合适的代码。

    Const n= 2000    ‘物资总项数

    Const nc = 26    ‘物资种别数,最多不会超过26

    Dim items(1 To n) As String, supplies(1 To n) As String, totals(1 To n) As Long

    Dim g(1 To2 * nc) As Long    ‘存储各种物资3天、7天的需求数量

    Dim b(1 To nc) As Long    ‘存储各种物资的库存量

    Dim c(1 To nc) As Long

    Dim q(1 To nc) As Integer

    Private Sub Form_Load()

    ‘本过程读取编号、品名、收支、需求的数据分别存储在数组items、supplies、totals、g数组中,并在List1中显示有关数据:g数组中g(1)、g(2)存储物资A的3天、7天的需求数量;g(3)、g(4)存储物资B的3天、7天的需求数……代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, k As Integer, top As Integer, bottom As Integer

        Dim r As Long, s As String, t As Integer, m As Integer

        For i=1 To nc.

            b(i)=0:c(i)=0

        Next i

        For i=1 To n    ‘统计每种物资的库存量

        k = Asc(Mid(items(i), 2, 1))- Asc("A")+1

          ①  

        c(k)=i

    Next i

    j=0

    For i=1 To nc

        If c(i)<>0 Then j=j+1: q(j)=i

    Next i

    top = 0: bottom=j+ 1

    j=1: k=bottom-1

    Do While j<bottom    ‘按各种物资的需求量进行等级分类

        m=q(j)

          ② 

        If r<g(2*m-1) Then

            top=top+1

            If top<>j Then t= q(top): q(top)=q(j): q(j)=t

            j=j+1

        ElseIf r>= g(2*m) Then

            bottom=bottom-1

            t= q(j): q(j)=q(bottom): q(bottom)=t

        Else

            j=j+1

        End If

    Loop

    List2.AddItem "编号  品名  库存"

        List2. AddItem "------------------------------"

        For i= 1 To k

            s= fp(i, top, bottom)

            List2.AddItem" " & s & " " & supplies(c(q(i))) & " " & b(q(i))

        Next i

    End Sub

    Function fp(pos As Integer, head As Integer, tail As Integer) As String

        If   ③   Then

            fp= "A"

        ElseIf pos < tail Then

            fp= "B"

        Else

            fp="C"

        End If

        fp = fp & Mid(items(c(q(pos))), 2, 1)

    End Function

     ② ③ 

某 VB 程序如下:

Dim a(1 To 6) As Integer

Randomize

a=n Mod k

n=n\k,k=k+1,s=s+a

a(1) = Int(11 * Rnd) + 2

For i = 2 To 6

a(i) = Int(11 * Rnd) + 2

If i Mod 2 = 1 And Not prime(a(i)) Then i = i - 1

ElseIf Not prime(a(i)) Then a(i) = a(i) + a(i - 1)

End If

Next i

'自定义函数 prime()用于判断参数是否为质数,prime(n) = True 则说明 n 为质数,否则为合数,定义函数代码略执行该程序后,a(1)~a(6)的值不.可.能.为(  )

A . 7, 10, 3, 7, 11, 23 B . 4, 10, 5, 11, 3, 11 C . 6, 10, 7, 16, 7,   7 D . 12, 2, 11, 3, 3, 13
有如下程序段

Function Search(m As Integer, pre As Integer) As Integer

Dim i As Integer

If m < 0 Then

Search = 0

ElseIf m = 0 Then

Search = 1

Else

For i = pre To m

Search = Search + Search(m - i, i) Next i

End If

End Function

Private Sub Command1_Click() Dim n As Integer

n = Val(Text1.Text) Label1.Caption = Search(n, 1)

End Sub

若在文本框 Text1 中输入“4”,则标签 Label1 中显示的内容为(  )

A . 2 B . 4 C .    5 D . 7
逆序数在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。例如序列2431,逆序依次为(2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为4,为偶排列。

编写VB程序,功能如下:程序运行时,在文本框Text1中输入序列,单击“计算”按钮Command11,在文本框Text2中输出逆序数,并在 Label3中输出判断结果(偶排列或者奇排列)。程序运行界面如图所示。

  1. (1) 如果序列为“5872469”,则逆序数为
  2. (2) 实现上述功能的VB程序如下,完善填空。

    Function NiXuShu(s As String) As Integer        '逆序数计算

       Dim i As Integer, j As Integer, c As Integer , n(1 To 100) As Integer

       c=0

       For i= 1 To Len(s)

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

         For j=1 To i- 1

           ifThen

             c=c+ 1

           End If

         Next j

       Next i

       

    End Function

    Private Sub Command1_ Click()

      Dim x As String, y As Integer

      x = Text1.Text

      

    Text2.Text = Str(y)

    If y Mod 2= 0 Then Label3.Caption = "偶排列" Else Label3.Caption = "奇排列"

    End Sub

维吉尼亚(Vigenere)密码。如下图所示,分别用行和列表示待加密的字符(明文)和当前字符的密钥,行和列的交叉点的字符即为加密后的结果(密文)。在加密时,密文与明文的字母大小写形式保持一致,如,明文字母为大写,则加密后的密文字母也为大写;当密钥长度不足时重复使用密钥。例如:当明文M=HelloWorld,密钥K=abc时,密文C=HfnlpYosnd。运算过程如下所示:

明文:HelloWorld

密钥:abcabcabca

密文:HfnlpYosnd

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

B

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

C

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

D

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

E

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

F

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

G

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

H

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

I

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

J

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

K

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

L

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

M

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

N

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

O

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

P

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

Q

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

R

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

S

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

T

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

U

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

V

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

W

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

X

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

Y

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Z

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

依据上述算法描述设计了如下VB程序。请回答下列问题:

  1. (1) 若明文是Jia,密钥是Pass,则输出的密文是:
  2. (2) 请在横线处填上合适的代码。

    Const MIN_ASC = 65       ′字母“A”的ASCII值

    Function X2D(x As String) As String     ′字符串小写转成大写

    Dim s As String, zf As String, i As Integer

    s = “”

    For i = 1 To Len(x)

    zf = Mid(x, i, 1)

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

                s = s +

    Else

          s = s + zf
              End If
        Next i
        X2D = s

    End Function

    Private Sub Command1_Click()

    Dim M As String, K As String, C As String, flag As Boolean

    Dim i As Integer, t As Integer, ch As Integer, pos As Integer, j As Integer

    M = Text1.Text             ′明文

    K = Text2.Text              ′密钥

    t = Len(K)

    K = X2D(K)                   ′将密钥全部转成大写

    C = “ ”                      ′加密后的结果

    For i = 1 To Len(M)

    ch = Asc(Mid(M, i, 1))

    flag = False

    If ch >= 97 And ch <= 122 Then ch = ch - 32: flag = True

      pos =                ′密钥的字符位置值

    If pos = 0 Then pos = t

          j = Asc(Mid(K, pos, 1))               ′密钥字符的ASCII值

         ch = ch - MIN_ASC

         j = j - MIN_ASC

          ch =

          ch = ch + MIN_ASC

      If flag Then ch = ch + 32         ′设置字母的大小写形式

         C = C & Chr(ch)

    Next i

    Text3.Text = C

    End Sub

一个n×n矩阵的主对角线(从左上到右下的对角线)上各个元素的总和称为这个矩阵的迹。一个矩阵转置后,新矩阵的迹和原矩阵的相等。

以3×3数据块为例,原矩阵和转置矩阵的结果如图所示。

小明发现对这个矩阵进行转置后,主对角线上的数字没有发生变化,所以决定编写VB程序随机生成一个n×n的矩降再试一下。程序实现的功能如下:在文本框Text1中输入整数n(2≤n≤10),单击“生成矩阵”按钮Command1,生成n2个10到99之间(包含10和99)的随机整数,并以n行、n列矩阵的形式显示在列表框List1中,将转置后的矩阵也显示在List1中。再单击“主对角线”按钮Command2,则在标签Label1中输出两矩阵主对角线上的元素,运行界面如图所示,程序代码如下,请在画线处填入合适的代码。

Const max=100

Dim n As Integer

Dim a(1 To max)As Integer

Dim b(1 To max)As Integer

Private Sub Command1_Click( )

  n=Val(Text1.Text)

  For i=1 To n*n

    a(i)=    ①   

  Next i

  p=1

  For i=1 To n*n

    b(i)=a(p)

    If i Mod n=0 Then

      p=p-n*(n-1)+1

    Else

         ②  

    End If

  Next i

  List1.Clear

  List1. AddItem Str(n)+"*"+Str(n)+"方阵”

  Call Output(a( ))

  List1.AddItem"转置矩阵"

  Call Output(b( ))

End Sub

Private Sub Command2_Click( )

  Label1.Caption="原矩阵":L.abel2.Caption="转置矩阵"

  For i=1 To n

    Label1.Caption=Label1.Caption & Str(a(i+(i-1)*n))

    Label2.Caption=label2.Caption & Str(b(i+(i-1)*n))

  Next i

End Sub

Sub Output(a()As Integer)

Dim line As String

line=""

For i=1 To n*n

    If i>1 And i Mod n=1 Then

      List1. AddItem line

      line=Str(a(i))

    Else

         ③  

    End If

  Next i

  List1. AddItem line

End Sub

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

如果两个质数的差为2,则这两个质数称为孪生质数对;编写VB程序,实现如下功能:单击“显示孪生质数对”按钮Command1,在列表框List1中显示100以内的所有孪生质数对(运行效果如图所示)。

实现上述功能的VB代码如下。

Dim a(1 To 50) As Integer

Private sub Command1_Click()

    Dim i As Integer

    k=0: i=3

    Do While i<= 100

        If Not prime(i) Then

            k=k+1

           

        End If

        i=i+2

    Loop

    For i=2 To k

        If         Then

            List1 AddItem Str(a(i-1))+"和"+ Str(a(i))

        End if

    Next i

End Sub

Function prime (x As Integer)As Boolean

    prime=False

    For i=2 To Int(sar(x))

        If x Mod i=0 Then

            prime=True

            Exit for

        End If

    Next i

End Function

  1. (1) 语句“List1. AddItem Str(a(i-1))+"和"+Str(a(i))”中的AddItem是(单选,填字母:A .对象名/B .属性名/C .事件名/D .方法名)。
  2. (2) 程序代码中,加框处有错,请改正。
  3. (3) 程序代码中,将横线处语句补充完整。
  4. (4) 在自定义函数中,函数返回值prime=Flase表示的含义是
某图书馆整理系统会自动将借阅归还的书籍按照书籍编号从小到大进行排序,以便于图书管理员查阅各阅览室书籍的在架情况。小明模仿该系统设计了如下程序,程序运行时,会自动对在架的书籍根据编号进行升序排序,在文本框Text1中输入阅览室编号,点击“查询”按钮,程序会将该阅览室的所有书籍及其对应的位置和书名全部输出到列表框List1中,如图所示。已知该图书馆分成四个阅览室,1号阅览室放置图书大类为A-F的书籍,2号阅览室放置图书大类为G-N的书籍……以此类推,每本书的编号第一位代表该书所属的图书大类。

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

  1. (1) 下列属于VB窗体文件的是               (单选,填字母)。
    A . dj.vbp B . dj.frm C . jd.exe D . dj.Vbw
  2. (2) 请在划线处填上合适的代码。

    Dim book(1 To 100) As String    '存储书籍的编号

    Dim bname(1 To 100) As String    '存储书籍的书名

    Dim pos(1 To 100) As String       '存储书籍所在阅览室的位置

    Dim rroom(1 To 4) As String       '存储每个阅览室存放书籍的大类

    Dim n As Integer'在架书籍总数

    Private Sub Form_ Load ()

    '在架书籍根据编号进行升序排序,书籍编号、书籍名称和所在阅览室的位置分别存放在数组book、bname 和pos中,在架书籍总数为n,代码略

        rroom(1)="ABCDEF":rroom(2)="GHIJKN"

        rroom(3)="OPQRST":rroom(4)="UVXZ"     '每个阅览室存放的书籍大类

    End Sub

    Private Sub Command1_Click ()

        Dim id As Integer,i As Integer,key1 As String,key2 As String,flag As Integer

        Dim start1 As Integer,end1 As Integer

        id = Val(Text1. Text)

        key1= Mid(rroom(id),1,1)

        key2=

        start1 =check (key1,1)

        end1 = check (key2,-1)

        For i = start1 to

            List1.AddItem "编号:"+gs(book(i))+"位置:"+gs(pos(i))+"书名:"+gs (bname(i))

        Next i

    End Sub

    Function check(key As String, flag As Integer) As Integer

        Dim left As Integer, right As Integer, m As Integer

        left=1:right=n

        Do While left <= right

            m= (left + right) \ 2

            If  Then

                right= m - 1

            Else

                left=m+1

            End If

        Loop

        check = left

    End Function

    Function gs(s As String) As String

        Dim i As Integer

        For i=1To15-Len(s)

            s=s+""

        Next i

        gs=S

    End Function

  3. (3) 程序加框处代码有错误,请改正。
下面代码的输出结果是(   )。

def fact(n):

    s=1

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

        s*=i

    return s

    sum=0

    for i in range(4):

        sum+=fact(i)

    print(sum)

A . 10 B . 6 C . 9 D . 3
阅读下列实现穷举搜索的自定义函数jiemi()的程序代码:

def jiemi():

    d1=datetime.datetime.now()     #获取当前系统时间d1

    p=int(varin.get())             #获取输入文本框的数字密码

    for i in range(0,p+1):         #从0循环到正确密码数值

        if i==p:                   #如果密码相同

            d2=datetime.datetime.now()     #获取当前系统时间d2

            d=d2-d1                #取得时间差

            #在输出文本框中显示解密用时

varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒")

下列选择错误的是(     )

A . p=int(varin.get()) 获取输入文本框的数字密码 B . for i in range(0,p+1)不可用for i in range(p+1)代替 C . if i==p 表示循环值与获取输入文本框的数字密码相同 D . varout.set(str(d.seconds)+"秒"+str(d.microseconds/1000)+"毫秒") 在输出文本框中显示解密用时
小明用Python语言写了一个货币兑换程序如下:

  1. (1) 参数currency指:
  2. (2) 该程序用了哪一种算法结构:
  3. (3) 输出结果为“50$= 325.25人民币”。则代码应该如何编写:
试卷运送。五校联考就要到了,本次负责安排运送试卷的路线的是TBY。由于各所学校都参与了一些科目命题工作,所以目前每个学校里都有几个科目的试卷。为了节省运输费用,TBY想要找到一种能连接所有学校且线路总长最短的方案。

一共有n(3<=n<=100)个学校,各所学校之间的线路长度以一行共n*n个数据输入,

第i组的n个数据为从第i个学校出发到其他学校的线路长度,保证第i组的第i个数据为0。

编写VB程序,实现上述功能。运行程序,在文本框Text1中输入学校总数,

在文本框Text2中按题述方法输入各校之间的距离,点击命令按钮Command1后,在标签Label1中显示最短的线路总长。程序运行界面如图所示。

请回答下列问题:

  1. (1) 若n=4,各校距离为0242831240352528350303125300,则最短的线路总长为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Const INF = 2147483646

    Dim n As Long, a As Long

    Dim dis(1 To 10001) As Long, flag(1 To 10001) As Boolean

    Dim head(1 To 10001) As Long, nxt(1 To 10001) As Long

    Dim ed(1 To 10001) As Long, value(1 To 10001) As Long

    Dim cnt As Long, tby As Long, sss As String

    Dim i As Long, j As Long

    Private Sub Command1_Click()

        cnt = 0

        n = Val(Text1.Text)

        For i = 1 To n

            dis(i) = INF : flag(i) = False : head(i) = 0

        Next i

        tby = 1

        sss = Text2.Text

        For i = 1 To n

            For j = 1 To n

               

                If i <> j Then Call addedge(i, j, a)

            Next j

        Next i

        Dim ans As Long

        dis(1) = 0 : ans = 0

        For i = 1 To n

            Dim hg As Long, u As Long

            hg = INF

            u = 0

            For j = 1 To n

                If  Then

                    hg = dis(j)

                    u = j

                End If

            Next j

           

            flag(u) = True

            Dim p As Long

            p = head(u)

            Do While p <> 0

                Dim v As Long

                v = ed(p)

                If Not flag(v) And dis(v) > value(p) Then

                    dis(v) = value(p)

                End If

                p = nxt(p)

            Loop

        Next i

        Label1.Caption = Str(ans)

    End Sub

    Sub addedge(a As Long, b As Long, x As Long)

        cnt = cnt + 1

        value(cnt) = x

        ed(cnt) = b

        nxt(cnt) = head(a)

        head(a) = cnt

    End Sub

    Function Getin() As Long

        Dim aaa As String

        aaa = Mid(sss, tby, 1)

        If aaa = " " Then tby = tby + 1

        aaa = Mid(sss, tby, 1)

        Dim bbb As Long

        bbb = 0

        Do While aaa <> " " And tby <= Len(sss)

            bbb = bbb * 10 + Val(aaa) : tby = tby + 1

            aaa = Mid(sss, tby, 1)

        Loop

        Getin = bbb

    End Function

某加密算法程序段如下所示:

def jiami(x):

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

  y=chr(ord(x)+32)

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

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

else:

  y=x

return y

mingwen=input("请输入明文")

miwen=""

for x in mingwen:

  miwen=miwen+jiami(x)

  print("密文为:",miwen)

输入“Abc@789”并运行程序,输出结果是(    )

A . abc8910 B . abc@890 C . ABC678 D . aBC@789