相关试卷

  • 1、有以下VB程序段:

    a(1)=6:a(2)=8:a(3)=7:a(4)=3:a(5)=1:a(6)=2:a(7)=5:a(8)=4

    i = 1: j = 8

    key = a(1)

    Do While i < j

     Do While i < j And a(j) >= key

      j = j - 1

     Loop

     a(i) = a(j)

     Do While i < j And a(i) <= key

      i = i + 1

     Loop

     a(j) = a(i)

    Loop

    a(i) = key

    For i = 1 To 8

     Label1.Caption=Label1.Caption++Str(a(i))

    Next i

    执行该程序段,标签Label1上显示的内容是(  )

    A、12345678 B、876 C、45231678 D、451
  • 2、有如下VB程序段:

    For i = 1 To n - 1

     t = n - (n + i) Mod 2

     For j = t To i + 2 Step -2

      If d(j) > d(j - 2) Then t = d(j):d(j) = d(j - 2):d(j - 2)= t

     Next j

    Next i

    已知n = 10,数组元素d(1)到d(10)的原始数据为1、2、3、4、5、6、7、8、9、10,程序运行后,d(10)的值为(  )

    A、9 B、1 C、2 D、10
  • 3、有如下程序段:

    i = 1

    Do While i <= 5

     If i = 0 or a(i -1) <= a(i) Then

      i = i + 1

     Else

      t = a(i): a(i) = a(i -1): a(i -1) = t

      i = i - 1

     End If

    Loop

    数组元素a(0)到a(5)的值依次为“0,71,22,48,79,27”,经过该程序段“加工”后,数组元素a(4)的值为(  )

    A、0 B、71 C、48 D、27
  • 4、使用数组a实现在列表框中显示数字的螺旋矩阵,图a中显示的是螺旋矩阵中数组元素的排列顺序,图b中显示的是矩阵中数组元素对应的赋值情况(以5×5 为例)。

    小明依据上述描述设计了如下VB程序,在Text1中输入矩阵的行数n (n≤10),单击“生成”按钮Command1,在List1中显示n×n的螺旋矩阵。请回答下列问题:

    (1)、当输入的行数为4时,单击“生成”按钮,则数组元素a(5)的值为
    (2)、请在划线处填入合适的代码。

    Function pout(x As Integer) As String     ‘函数功能用于数字的对齐输出

    Dim i As Integer, j As Integer, y As String

    y= Str(x) : j = Len(y)

    For i = 1 To 5 - j

     y = y +“”

    Next i

    End Function

    Private Sub Command1_Click()

    Dim a(1 To 100) As Integer

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

    Dim ts As String, t As Integer, v As Integer

    n = Val (Text1.Text) :v = 1 : t = 1      ‘t用于每次填数方向上的位置修正

    For m = n To 1 Step -2

     For i = 1 To m      ‘向右方向填数

     a(t + i - 1)=v

     

     Next i

     t = t + n - 1

     For i = 1 To m-1     ‘向下方向填数

    a(m + t) = v

    v=v+1

     Next i

     t = t - n

     For i = m - 1 To 1 Step -1     ‘向左方向填数

    a(t + i) = v

    v=v+1

     Next i

     For i = m - 2 To 1 Step -1     ‘向上方向填数

    a(t - n + 1) = v

    v=v+1

    t = t-n

     Next i

     t=t+2

     Next m

     For i = 1 To n     ‘以图a方式在List1中输出数组数据

     ts =“”

    For j =To i * n

     ts = ts + pout(a(j))

    Next j

    List1.AddItem ts

     Next i

     End Sub

  • 5、编写程序将某个字符串沿“N”字形排列显示。输入一个字符串,将该字符串沿“N”字形排列显示。例如输入字符串“ABCDEFGH

    IJKLMNOPQRSTUVWXYZ”,转换成5行的“N”字形排列如图所示:

    小张根据排列规律设计了“N”字形排列显示的VB程序,功能如下:在文本框Text1中输入原字符串,在文本框Text2中输入“N”字形的行数row(row大于等于3).单击“转换”按钮Command1后,将字符串沿“N”字形排列显示在列表框List1中。程序运行如图所示。

    (1)、如果原字符串为“0123456789”,转换为3行“N”字形排列,则第一行最后一个字符为
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim span As Integer     ‘第一行相邻字母在原字符串中的间距

    Dim space As Integer     ‘第一行相邻字母间的空格个数

    Dim row As Integer, i As Integer, s As String, line As String

    s = Text1.Text

    List1.Clear

    span = row * 2-2

    space = row - 2

    For i = 1 To row

     line =“”: j = i

     Do While j <= Len(s)

    line = line + Mid(s, j, 1)      ‘输出第i行第一个字符

     If i <> 1 And i<> row Then      ‘判断结果不为首行和末行时

      line=line+ Pad(space - i + 1)     ‘输出字符之前的空格

      line=line+      ‘输出字符

      line=line+ Pad(i - 2)     ‘输出字符之后的空格

     Else

      line=line+ Pad(space)     ‘输出首行和末行的空格个数

     End If

     j = j + span     ‘间隔之后的字符位置

    Loop

     Next i

     End Sub

    ’函数Pad(n)的值为n个空格构成的字符串,比如Pad(3)代表3个空格构成的字符串

    Function Pad(n As Integer) As String’产生n个空格构成

    的字符串

    ’代码略

    End Function

  • 6、小明编写了一个输出十进制数与二进制数对应表的VB程序。程序运行时,单击“输出”按钮Command1后,在列表框List1中输出运行结果,如下图所示。实现上述功能的VB代码如下,但①②加框处代码有错,请改正。

     Dim b(4) As Integer     ‘数组b按位存储二进制数

    Private Sub pprint(m As Integer)

    ‘本过程打印输出十进制数m和对应的二进制数

    ‘代码略

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer,j As Integer

    List1.Clear

    List1.AddItem “十进制数 二进制数”

    For i = 0 To 4

     b(i)=0

    Next i

    For i = 0 To 15

     Call pprint(i)     ‘打印输出一行

     j=       ‘①

     b(j)=b(j)+1

     Do While      ‘②

       b(j)=0

      j=j-1

      b(j)=b(j)+1

      Loop

    Next i

    End Sub

    第①处修改为; 第②处修改为

  • 7、在n个连续的方格内填字母A或B,但相邻两格都不能填B,求所有可能方案。可以用枚举算法解决,此题可以采用进制转换来解决。考虑到只包含了A与B两个字母,我们可以用二进制的0和1来代替。

    程序部分代码如下:

    Private Sub Command1_Click()

    Dim n, m, s, i, j, count As Long

    Dim flag As Boolean

    Dim a(1 To 100) As Integer

    n = Val(Text1.Text)

    count = 0

      ①  

    For i = 0 to s-1

     m = i

     For j = 1 To n

     a(j) = m Mod 2

     m = m \ 2

    Next j

    flag = True

    For j = 1 To n - 1

     If  ②  Then flag = false: exit For

    Next j

    If flag = True Then  ③  

    Next i

    Label1.Caption =“可行方案共”+ Str(count) + “种”

    End Sub

    (1)、将代码补充完整:① ② ③ 
    (2)、若Text1中输入5,则可行方案共种。
  • 8、在计算机系统中,数值一律用补码来表示和存储。求负整数的补码是将该数对应的正数转换为二进制数(不足8位时高位补0),最高位作为符号位为1,其余每位二进制数取反(1变成0,0变成1),末位加1。小明编写了一个VB程序,功能如下:在文本框Text1中输入一个负整数,单击“转换”按钮Command1后,在文本框Text2中显示该数对应的补码。程序运行界面如图所示。

    (1)、在设计程序界面时,要使按钮Command1显示为“转换”,应修改该按钮的属性。
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim a(1 To 8) As Integer, x As Integer, b As String

    x = Abs(Val(Text1.Text))

    For i = 1 To 7     ‘求反码

     a(i) =

     x = x \ 2

    Next i

    b = “1”: i = 1

    a(1) = a(1) + 1

    Do WhileAnd i < 7

     a(i) = 0

     i=i+1

    Loop

    For i = 7 To 1 Step -1

     b = b + Trim(Str(a(i)))     ‘Trim()函数去除字符前后空格

    Next i

    Text2.Text = b

    End Sub

    (3)、运行该程序,在文本框Text1中输入-10,单击“转换”按钮,则显示的补码是
  • 9、十进制数转换为二进制数。小明用VB编写了一个程序,把输入的十进制数转换为二进制数,并判断二进制数中的“0”和“1”的个数是否相等。程序运行界面如图所示,在文本框Text1中输入要转换的十进制数。单击“确定”按钮Command1后,在文本框Text2中输出其对应的二进制数,在标签Label3中显示“相等”或“不相等”。

    (1)、程序运行界面中使用的象个数为 , 要使按钮Command1上的文字显示为“确定”,应修改的属性名为
    (2)、为实现上述功能,请在划线处填入合适代码。

    Private Sub Command1_Click()

    Dim st As String, x As Integer, xl As Integer

    Dim i As Integer, j As Integer, v As Integer, c0 As Integer, cl As Integer

    c0 = 0 : cl = 0 : st = “”

    x =

    Do While x<>0

     y=

     If y=0 Then c0=c0+1 Else c1=c1+1

     st=y&st

     x=x\2

    Loop

    Text2.Text=st

    IfThen

     Label3.Caption=“相等”

    Else

     Label3.Caption=“不相等”

    End If

    End Sub

  • 10、下面是一种加密解密的方法。当输入一串进制数字,用空格分离时,每个进制数字的数值与字母A…Z成一一对应关系。小明只要将这串数字的数值求出,然后将数字值转换成相应的字母即破解密码得到明文。若输入的进制数值超出1~26范围,则当成非法数值。表中数值100、153属于非法数值,用字符“*”表示,在解密过程中非法字符不予处理。

    密文

    1100100

    11

    1000

    1001

    1110

    1

    10011001

    对应数值

    100

    3

    8

    9

    14

    1

    153

    明文

    *

    C

    H

    I

    N

    A

    *

    (1)、根据题意,若密文为16进制的“68 17 9 E 1F ”,则其明文为
    (2)、实现上述功能的VB程序如下,请在划线处填上合适的代码。

    Private Sub Command1_Click()     ‘密文解密过程

    Dim s As String, yw As String

    Dim n As Integer,i As Integer,k As Integer,value As Integer

    Dim flag As Boolean

    s =Text1.Text

    yw =“”

    flag = True

    k = Val(Text4.Text)     ‘k为密文的进制

    n = Len(s)

    value = 0

    For i = 1 To n

     t = Mid(s, i, 1)

     If flag Then

      If (t <> “”)Then

       If t >=“0” And t <= “9” Then

        value =

      Else If t >=“A” And t <= “F” Then

       value = value*k+Asc(t)-Asc(“A”) + 10

      End If

     Else

      flag = False

      If value <=26 Then

       yw =

      Else

       yw = yw + “*”

      End If

      value = 0

      End If

     Else

      If t >=“0” And t <=“9” Then

      value = Asc(t) - Asc(“0”)

      flag = True

      Else If t >= “A” And t <= “F” Then

      value = Asc(t) - Asc(“A”)+ 10

      flag = True

      End If

     End If

     Next i

     If flag Then

       If value < = 26 Then

        yw = yw + Chr(Asc(“A”) + value - 1)

      Else

       yw = yw + “*”

      End If

    End If

    Text2.Text = yw

    End Sub

    Private Sub Command2_Click()     ‘密文加密过程

    Dim s As String, yw As String, t As String, key As String

    Dim i As Integer, n As Integer, k As Integer, m As Integer

    key = “0123456789ABCDEF”

    s = Text2.Text

    n = Len(s)

    yw = “”

    k = Val(Text4.Text)

    For i = 1 To n

     t = Mid(s, i, 1)

     m =

     If m >= 1 And m <= 26 Then

      t =“”

      Do While m > 0

       t = Mid(key,(m Mod k + 1) , 1) + t

      

      Loop

      mw = mw + t + “ ”

      End If

    Next i

    Text3.Text = mw

    End Sub

  • 11、某日期加密授权码生成方法描述如下:

    ⑴授权码由10位字符组成,前8位为日期的密文,后2位为验证码;

    ⑵取日期的第1位字符,若该字符第一次出现,则直接取其对应加密字符,否则取下一个不重复的加密字符。按此操作,依次取出该日期余下各位对应的加密字符;

    ⑶求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符;若和不小于16,则将和除16取整加1得到另一位验证码字符,否则另一位验证码字符为“X”。取出验证码重复时,处理规则与(2)相同。加密(验证码)字符对应表如下:

    (十进制)

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    加密

    (验证码)

    字符

    K

    n

    G

    j

    L

    t

    W

    b

    O

    a

    P

    H

    Z

    q

    Y

    c

    小明设计了一个生成8位日期(YYYYMMDD格式)授权码的VB程序。程序功能如下:在文本框Text1中输入一个8位有效日期,单击“生成授权码”按钮Command1,在标签Label2中显示出该日期的授权码。运行效果如图所示。实现上述功能的VB程序段如下:

    (1)、请在划线处填入合适代码:

    Dim f(0 To 15) As Integer

    Const Code = “KnGjLtWbOaPHZqYc”

    Private Sub Command1_Click()

    Dim rq As String, sq As String

    Dim c As Integer, i As Integer, d As Integer

    For i = 0 To 15

     f(i) = 0

    Next i

    rq = Text1.Text

    sq=“”:d = 0

    If Len(rq) <> 8 Then

     Label2.Caption =“请输入8位日期!”

    Else

     For i = 1 To 8

     c = Val(Mid(rq, i, 1))

     d = d + c

     sq =+sq

    Next i

    If d >= 16 Then

     yz = GetChar(d Mod 16 + 1) + GetChar(d\16 + 1)

    Else

     yz = GetChar(d Mod 16 + 1) + “X”

    End If

    Label2.Caption = sq + yz

    End If

    End Sub

    ‘获取不重复的加密字符

    Function GetChar(x As Integer) As String

    Dim flag As Boolean

    flag = False

    Do While flag = False

     f(x) = f(x) + 1

     If f(x) = 1 Then

     

      f(x) = f(x) + 1

      flag = True

     Else

      x = (x + 1) Mod 10

     End If

    Loop

    End Function

    (2)、若输入的日期是“20170818”,则该授权码的验证码字符是
  • 12、某字符串(字节数为3的倍数)编码规则如下:

    ⑴将该字符串内码分成3个字节一组,顺次连接后得到24位二进制数;

    ⑵将得到的24位二进制数字按每6位一组分成4组,每组6个位;

    ⑶在每组数字前补上两个0,得到4个字节的二进制数;

    ⑷将⑶中得到的四个二进制数分别转换为十进制数;

    ⑸将每个十进制数转换为1个加密字符,对应的“密码表”按数值由小到大依次为“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn

    opqrstuvwxyz0123456789+/”。

    小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Command1,程序依次将文本框Text1中每3个字符的ASCII码值作为4个字节转换为四个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。程序运行效果如下图所示。

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

    (1)、在上述加密算法步骤⑷中,得到的十进制数最大是
    (2)、实现上述功能的VB程序如下。请在划线处填入合适代码。

    Function Code2Char(c As Integer) As String

    Dim s As String

    s=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”

    Code2Char=

    End Function

    Private Sub Command1_Click()    ‘加密过程

    Dim n As Integer, s As String, i As Integer, ss As String

    Dim a1 As Integer,a2 As Integer,a3 As Integer    ‘存储加密前字符的ASCII码

    Dim b1 As Integer,b2 As Integer    ‘分别存储分割、转换后的前两个十进制数

    Dim b3 As Integer,b4 As Integer    ‘分别存储分割、转换后的后两个十进制数

    s = Text1.Text : n= Len(s) : ss =“”

    For i = 1 To n

     a1 = Asc(Mid(s, i, 1))

     a2 = Asc(Mid(s, i+1,1))

     a3 = Asc(Mid(s, i+2,1))

     b1 = a1 \ 4

     b2 = (a1 Mod 4) * 16 + (a2 \ 16)

     b3 =

     b4 = a3 Mod 64

     ss = ss + Code2Char(b1) + Code2Char(b2) + Code2Char(b3) + Code2Char(b4)

    Next i

    Text2.Text = ss

    End Sub

  • 13、小明编写了一个字符串加密程序,功能如下:在文本框Text1中输入明码,单击“加密”按钮Command1后,在文本框Text2中显示加密后的密文,运行界面如下图所示。

    加密算法如下:

    1)将明码中每个字符的八位二进制ASCII码(不足八位的左端补0,凑足八位)分成两段(左4位一段,右4位为另一段),如字符“C”的二进制ASCII值为01000011,分段后为0100,0011;

    2)将高位段(左边4位)左移一位,并将原第一位数码移到第4位(如0100转化为1000),再转化为十六进制数(如1000化为8);

    3)对另一段(右4位)执行2)所示算法,如0011→0110→6;

    4)顺次连接两位十六进制数,得到该字符的暗码,如“C”的暗码为“86”;

    5)将每个字符的暗码按照明码的顺序连接。

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

    (1)、按照加密算法,字符“J”的密文是
    (2)、请在划线处填入合适代码。

      Private Sub Command1_Click()

      Dim i As Integer, j As Integer

      Dim m As Integer, k As Integer, c As String

      Dim x As Integer, y As Integer

      Dim d(1 To 8) As Integer     ‘数组d存储字符ASCII码二进制从左到右的各位数码

      Dim mw As String      ‘mw存储暗码

      mw =“”

      For i = 1 To Len(Text1.Text)

       c = Mid(Text1.Text,i,1)

       For j = 1 To 8

        d(j) = 0

       Next j

       m = Asc(c)

     

       Do While m > 0

        d(k) = m Mod 2

        m = m \ 2

        k =k-1

       Loop

      x = d(1) :y = d(5)

      For j = 1 To 3

       d(j) =d(j+1)

     

      Next j

      d(4) = x:d(8) = y

      mw = mw + btoh(d)

      Next i

      Text2.Text = mw

      End Sub

      ‘将数组元素中的二进制数转换成对应的十六进制数

      Function btoh(d() As Integer) As String

      Dim s As Integer, i As Integer, str1 As String, ch As String

      str1 = “0123456789ABCDEF”: s = 0: ch =“”

      For i = 1 To 8

       s = s * 2 + d(i)

       If i = 4 Then

        ch = Mid(str1,s+1,1)

        s = 0

       End If

       Next i

     

      End Function

  • 14、在密钥加密方式中,可以通过自己指定的一个密钥将字符串加密,而解密也必须通过密钥。本题采用的具体实现方法是将字符串的每个字符转换为ASCII码,顺序加上密钥中的对应数字后转换回ASCII字符得到密文(当密钥位数不够时重新从第一位循环)。

    以原文:Hello,密钥:123为例,“H”转换为ASCII码后加上密钥的第一个数字1,再转换回ASCII字符,得到“I”;“e”转换为ASCII码,加上密钥的第二个数字2,转换回ASCII得到“g”;“l”则加上密钥的第三个数字3得到“o”;随后原文又出现“1”,但是密钥中的数字已经用完了,则密钥从头开始,加上“1”,得到“m”;“o”则得到“q”,最后产生密文“Igomq”。

    具体程序如下,但是有两处加框的代码错误,请改正:

    Dim code As String, key As String

    Dim i As Integer, res_code As String

    Dim l_code As Integer, l_key as Integer

    Private Sub Command1_Click( )’加密程序

    code = Text1.Text

    key = Text2.Text

    l_code =Len(code)

    l_key =Len(key)

    res_code = “”

    For i = 1 To      ‘⑴

     c =Asc(Mid(code, i, 1))

     k =      ‘⑵

     res_code = res_code +Chr(k + c)

    Next i

    Text3.Text = res_code

    End Sub

    Private Sub Command2_Click( )

    ‘解密程序略

    End Sub

     ⑵ 

  • 15、平面上有N(3≤N≤100)个房间围成一圈,按顺时针方向分别编号为1…N,相邻的两个房间之间均有一扇门,第i个房间居住人数为a(i)。初始时选择一个房间,将所有人都聚集在该房间,接着每个人都按顺时针方向走到相邻的房间,直至走到居住的房间。一个人每经过一扇门花费1能量,请确定初始房间,使得所有人花费的能量和最小。例如:N=5,a(1)=4,a(2)=7, a(3)=8, a(4)=6, a(5)=4。

    最佳方案:初始时所有人聚集在2号房间,花费的能量和:7*0+8*1+6*2+4*3+4*4=48。为了解决这个问题,小明编写了一个VB程序。在窗体加载时,从数据库中读取N的值和编号为1到N的房间的居住人数,人数存储在数组a中。点击窗体上的按钮Command1,程序枚举每一种方案(不同的初始房间),计算该方案的能量和,在文本框Text1中输出最优方案的初始房间编号,在文本框Text2中输出最小能量和。

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

    Dim a(1 To 100) As Integer ’依次存储编号为1到100的房间的居住人数

    Private Sub Form_Load()

    ‘本过程从数据库中读取N的值和每个房间居住人数,存储在数组a中

    ‘代码略

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, j As Integer, w As Integer, k as Integer

    Dim t As Long, ans As Long

    k=0 : ans = 32767     ‘ans初始化为最大的Integer数据

    For i = 1 To n

     t = 0

     For j = 0 To n - 1

        w=

        If w = 0 Then w = n

        t=

     Next j

     If t < ans Then

        k= i

        ans = t

     End If

    Next i

    Text1.Text = Str (k)    ‘起始房间编号

    Text2.Text =

    End Sub

  • 16、字符环上的最长公共字符串。将字符串首尾相接后可以得到一个环,图1和图2分别是由字符串“ABCUVKLM”和“MADJKLUVKL”首尾相接后得到的环。在图1和图2所示的两个环中,最长的公共字符串为“UVKLMA”(图中带背景圆圈表示)。

    编写VB程序,实现如下功能:在文本框Text1和Text2中分别输入一个字符串(仅由大写字母构成,每个字符串长度不超过100),单击命令按钮Command1后,在标签Label3中输出两个字符串构成的环的最长公共字符串长度(字符串在环中必须连续)。程序运行效果如图所示。

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

    (1)、根据题意描述,字符串“BCEFGK”和“GKBLMCKEF”的最长公共字符串长度为
    (2)、请在划线处填入合适的代码。

    Function getmin(a As Integer, b As Integer) ’获取两个整数的较小者

     If a < b Then getmin = a Else getmin = b

    End Function

    Private Sub Command1_Click()

    Dim s1 As String, s2 As String, i As Integer, j As Integer, x As Integer, y As Integer

    Dim cnt As Integer, ans As Integer, len1 As Integer, len2 As Integer

    s1=Text1.Text

    s2=Text2.Text

    len1=Len(s1)

    len2=Len(s2)

    minlen =     ‘minlen中保存s1和s2中较短字符串的长度

    ans = 0

    For i = 1 To len1

     For j = 1 To len2

    cnt = 0: x = i: y = j

    Do WhileAnd cnt < minlen

     cnt = cnt + 1

      x = x Mod len1 + 1

     y = y Mod len2 + 1

    Loop

    IfThen ans = cnt

     Next j

    Next i

    Label3. Caption = Str(ans)

    End Sub

  • 17、某监狱人满为患,由于牢房太小,而囚犯太多,大家只能站着睡觉。因此囚犯们只好采取抓阄的策略来改善自身的生存环境:n个囚犯(n<=50)围成一圈,按顺序从1到n编好号。从第1个人开始报数,报到3的人自杀,下一个人从1开始报数,报到3的人自杀。如此下去,直到留下最后一个人。请按退出顺序输出自杀的人的编号。程序运行时,单击“抓阄”按钮,结果显示在列表框List1中,程序运行界面如图所示。

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

    (1)、当总人数为7时,对应的自杀序列编号为
    (2)、请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim i As Integer, n As Integer

    Dim num As Integer, t As Integer

    Dim a(1 To 50) As Boolean

    List1.Clear

    n = Val(Text1.Text)

    For i = 1 To n

     a(i) = True

    Next i

    t = n

    Do While

     For i = 1 To n

    If a(i) Then

     

    End If

    If num = 3 Then

     a(i) = False

     t = t - 1

     

     List1.AddItem Str(i)

    End If

     Next i

    Loop

    End Sub

  • 18、小明编写了一个求真分数精确值的VB程序。程序运行时,在文本框Text1中输入被除数,在文本框Text2 中输入除数,并保证被除数小于除数,单击“计算”按钮Command1,在标签Label3中显示结果(最多计算到第20位)。程序运行界面如图所示。

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

    Dim a(1 To 20) As Integer, b(1 To 20) As Integer

    ‘判断循环节

    Function Judge(position As Integer) As Boolean

    Dim i As Integer

    For i = 1 To position - 1

     If b(i) =Then Judge = False : Exit Function

    Next i

    Judge = True

    End Function

    Private Sub Command1_Click()

    Dim m As Integer, n As Integer, x As Integer, i As Integer

    Dim flag As Boolean, st As String

    m = Val(Text1.Text):n = Val(Text2.Text)

    st = Str(m) + “/” + Str(n) + “=”

    st = st + “0.”

    i = 1: x = 1: flag = True

    b(1) = m

    m = m * 10

    Do While i <= 20 And flag = True

     a(i)=

     If a(i) > 0 Then

      x = x + 1

      b(x) = m Mod n

      m = b(x) * 10

     Else

      m = m * 10

     End If

     flag = Judge(x)

     If b(x) =0 And x <> 0 Then flag = False

     st =

    Loop

    Label3.Caption = st

    End Sub

    (2)、运行程序,在文本框Text1中输入被除数1,在文本框Text2中输入除数3,单击“计算”按钮Command1,在标签Label3中显示的结果是
  • 19、当计算机程序中无法用普通数据类型表示位数较多的乘数和计算结果时,就需要采用高精度乘法。如,当两个各有20位数字的整数相乘时,就无法用长整型(Long)数据类型来表示。高精度乘法运算就是运用数组,用程序模拟列竖式计算的过程。两个正整数进行高精度乘法计算的一般算法如下:

    ⑴将第一个整数各位上的数字按照从低位到高位的顺序依次存入数组a(1)、a(2)、…、a(La)中,将另一个整数各位上的数字按照从低位到高位的顺序依次存入数组b(1)、b(2)、…、b(Lb)中。其中,La表示第一个整数的位数,Lb表示第二个整数的位数;

    ⑵按照从低位到高位的顺序,将两个整数各位数值进行逐位乘法计算(第一轮先让b(1)依次乘a(1)、a(2)…a(La),第二轮再让b(2)依次乘a(1)、a(2)、…、a(La),依次进行),每位的乘法结果也按照低位到高位的顺序依次存入数组ans(1)、ans(2)、ans(3)中;

    ⑶对数组ans中的计算结果进行从低位到高位的进位处理;

    ⑷统计数组ans中实际计算结果的有效数值位数,并将位数值存入变量length;

    ⑸按照高位到低位的顺序输出数组ans中的计算结果。

    小明按照上述方法设计了一个两数进行高精度乘法计算的VB程序,功能如下:在文本框Text1和Text2中依次输入两个整数,单击“计算”按钮Command1,程序进行高精度乘法计算,并在标签Label4中输出计算结果。

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

    (1)、请在划线处填入合适代码。

    Dim a(1 To 30) As Integer, b(1 To 30) As Integer

    Dim ans(1 To 60) As Integer

    Dim La As Integer, Lb As Integer

    Dim length As Integer

    Private Sub Command1_Click()

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

    ‘将两个乘数(正整数)各数位上的数字按照上述算法依次存入数组a和b,每个正整数位数分别保存到变量La和Lb;将保存结果的数组ans(i)值初始化为零(该部分程序代码略)

    For i = 1 To Lb    ‘按低位到高位的顺序进行列竖式的逐位乘法

     For j = 1 To La

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

     Next j

    Next i

    For i = 1 To La + Lb    ‘对计算结果进行进位处理

     ans(i+1) =ans(i +1)+ ans(i) \ 10

     ans(i) =

    Next i

    length = La + Lb    ‘最多位数

    Do While ans (length) = 0    ‘计算实际位数

     length = length - 1

    Loop

    For i =To 1 Step -1

     Label4.Caption = Label4.Caption + Str(ans(i))

    Next i

    End Sub

    (2)、根据本题算法,若输入的两个整数分别为5125和18,则在输出乘法计算结果时,变量length的值为
  • 20、大数加法。在文本框Text1和Text2中输入两个大数,点击“相加”按钮后,在文本框Text3中输出结果。

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

    Private Sub Command1_Click()

    Dim s1 As String

    Dim s2 As String

    Dim s3 As String

    Dim l1 As Integer

    Dim l2 As Integer

    Dim l3 As Integer

    Dim a(1 To 100) As Integer

    Dim b(1 To 100) As Integer

    Dim c(1 To 100) As Integer

    Dim t As Integer

    s1 = Text1.Text

    s2 = Text2.Text

    l1 = Len(s1)

    l2 = Len(s2)

    For i = l1 To 1 Step -1

     a(i) =

    Next

    For i = l2 To 1 Step -1

     b(i) =Val(Mid(s2, l2 - i + 1, 1))

    Next

    If l1 > l2 Then l3 = l1 Else l3 = l2

    t = 0

    For i = 1 To l3

      c(i) = a(i) + b(i) + t

      t = c(i) \ 10

      c(i) =

    Next

    For i = 1 To l3

      s3 = Str(c(i)) + s3

    Next

    IfThen s3 = “1” + s3

    Text3.Text = s3

    End Sub

上一页 1485 1486 1487 1488 1489 下一页 跳转