- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
编写“幸运数字”程序,功能如下:在文本框Text1中输入出生日期,单击“算一算”按钮Command1,将日期中所有的数字按位相加,若结果为两位数则继续按位相加,直到结果为一位数,如出生日期为2003/08/11,数字按位相加2+0+0+3+0+8+1+1=15,15按位相加1+5=6。运行界面如图所示。

(1)程序窗体中共有_________类对象。
(2)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim luck As Integer
Dim sr, c As String
luck = 0
sr = Text1.Text
If Len(sr) = 10 Then ’输入的格式长度符合条件
For i = 1 To Len(sr)
c = __________
If c >= "0" And c <= "9" Then
luck = luck + Val(c)
End If
Next i
Do While luck > 9
luck = luck Mod 10 +__________
Loop
Label2.Caption =“你的幸运数字是:”+str(luck)
Else
Label2.Caption = "输入有误,请重输!"
End If
End Sub
(3)若在文本框Text1中输入“2004/08/18”,Label2中显示的内容为__________。

(1)程序窗体中共有_________类对象。
(2)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim luck As Integer
Dim sr, c As String
luck = 0
sr = Text1.Text
If Len(sr) = 10 Then ’输入的格式长度符合条件
For i = 1 To Len(sr)
c = __________
If c >= "0" And c <= "9" Then
luck = luck + Val(c)
End If
Next i
Do While luck > 9
luck = luck Mod 10 +__________
Loop
Label2.Caption =“你的幸运数字是:”+str(luck)
Else
Label2.Caption = "输入有误,请重输!"
End If
End Sub
(3)若在文本框Text1中输入“2004/08/18”,Label2中显示的内容为__________。
编程找出四位整数abcd 中满足下述关系的数:(ab+cd)(ab+cd)=abcd。小明编写了一个此问题求解的 VB程序,单击“求解” 命令按钮 Command1,在列表框List1中显示结果,如(20+25)*(20+25)=2025,则在列表框显示“2025”(注:双引号不显示)。程序设计界面如图所示:

(1)如图所示,小明通过设置“ 求解” 命令按钮 Command1 的____________ (单选,填字母:
(2)为实现上述功能,请在划线处填入合适代码或选项。
Private Sub Commandl_Click()
Dim i As Integer
Dim k As Long, m As Long, n As Long
For i = 1000 To 9999
m = i \ 100
n =___________________
k = (m + n) * (m + n)
If k = i Then
_______________________
End If
Next i
End Sub
(3) 由上述算法可知,“3025”这个四位数__________(选填:会/不会)在列表框 List1 中显示。

(1)如图所示,小明通过设置“ 求解” 命令按钮 Command1 的____________ (单选,填字母:
A.Caption | B.Font | C.Height )属性设置文字“求解” 为斜体。 |
Private Sub Commandl_Click()
Dim i As Integer
Dim k As Long, m As Long, n As Long
For i = 1000 To 9999
m = i \ 100
n =___________________
k = (m + n) * (m + n)
If k = i Then
_______________________
End If
Next i
End Sub
(3) 由上述算法可知,“3025”这个四位数__________(选填:会/不会)在列表框 List1 中显示。
有如下VB程序段:
Dim a(1 To 5) As Intger
A(1)=5 : a(2)=3 : a(3)=8 : a(4)=4 : a(5)=2
For i = 1 To 4
If a(i)> a(i+1) Then
t = a(i): a(i) = a(i + 1): a(i + 1) = t
Endif
Next i
当程序运行结束后,a(5)的值是( )。
Dim a(1 To 5) As Intger
A(1)=5 : a(2)=3 : a(3)=8 : a(4)=4 : a(5)=2
For i = 1 To 4
If a(i)> a(i+1) Then
t = a(i): a(i) = a(i + 1): a(i + 1) = t
Endif
Next i
当程序运行结束后,a(5)的值是( )。
A.2 | B.4 | C.5 | D.8 |
小王设计了一个Visual Basic小程序,该程序的功能是将一个二进制数转化为十六进制数。程序运行时,在文本框Text1输入二进制数(由0、1构成的数串),单击“转换”按钮Command1后,在文本框Text2中显示转换结果。程序运行界面如下图所示。

实现上述功能的程序代码如下所示,请在划线处填上合适的代码:
Private Sub Command1_Click()
Dim x As String, y As String,
Dim i As Integer, s As Integer, n As Integer, c As String
Dim q As String, h As String, ans As String
n = Len(Text1.Text)
y = Text1.Text
If n Mod 4 <> 0 Then ________________
For i = 1 To s
y = "0" + y
Next i
For i = 1 To n Step 4
________________________
If h = "0000" Then q = "0"
If h = "0001" Then q = "1"
If h = "0010" Then q = "2"
If h = "0011" Then q = "3"
If h = "0100" Then q = "4"
If h = "0101" Then q = "5"
If h = "0110" Then q = "6"
If h = "0111" Then q = "7"
If h = "1000" Then q = "8"
If h = "1001" Then q = "9"
If h = "1010" Then q = "A"
If h = "1011" Then q = "B"
If h = "1100" Then q = "C"
If h = "1101" Then q = "D"
If h = "1110" Then q = "E"
If h = "1111" Then ___________________
ans =_____________________
Next i
Text2.Text =ans
End Sub

实现上述功能的程序代码如下所示,请在划线处填上合适的代码:
Private Sub Command1_Click()
Dim x As String, y As String,
Dim i As Integer, s As Integer, n As Integer, c As String
Dim q As String, h As String, ans As String
n = Len(Text1.Text)
y = Text1.Text
If n Mod 4 <> 0 Then ________________
For i = 1 To s
y = "0" + y
Next i
For i = 1 To n Step 4
________________________
If h = "0000" Then q = "0"
If h = "0001" Then q = "1"
If h = "0010" Then q = "2"
If h = "0011" Then q = "3"
If h = "0100" Then q = "4"
If h = "0101" Then q = "5"
If h = "0110" Then q = "6"
If h = "0111" Then q = "7"
If h = "1000" Then q = "8"
If h = "1001" Then q = "9"
If h = "1010" Then q = "A"
If h = "1011" Then q = "B"
If h = "1100" Then q = "C"
If h = "1101" Then q = "D"
If h = "1110" Then q = "E"
If h = "1111" Then ___________________
ans =_____________________
Next i
Text2.Text =ans
End Sub
有如下 VB 程序段:
i=1:n=5
Do while i<=n x=Int(Rnd*9)+1
If x Mod 2=1 Then a(i)=x
Else
a(n)=x:n=n+1
EndIf
i=i+1
Loop
数组元素的初值均为 0,执行该程序段后,a(1)至 a(5)的值可能是( )
i=1:n=5
Do while i<=n x=Int(Rnd*9)+1
If x Mod 2=1 Then a(i)=x
Else
a(n)=x:n=n+1
EndIf
i=i+1
Loop
数组元素的初值均为 0,执行该程序段后,a(1)至 a(5)的值可能是( )
A.1 , 3 , 5 , 5 , 0 |
B.3 , 3 , 0 , 8 , 8 |
C.0 , 1 , 0 , 4 , 2 |
D.7 , 1 , 3 , 9 , 8 |
某算法的部分流程图如图所示,执行这部分流程后,下列分析正确的是( )

A.当 x 输入 2,y 输入 1 时,输出结果是 16 |
B.当 x 输入 2,y 输入 2 时,输出结果是 4 |
C.当 x 输入 2,y 输入 1 时,“b=b*x”共被执行 5 次 |
D.当 x 输入 2,y 输入 2 时,“a=a\x”共被执行 4 次 |
IPv6 是英文“Internet Protocol Version 6”(互联网协议第 6 版)的缩写。IPv6 地址总共有 128 位,为了便于人工阅读和输入,IPv6 地址使用 16 进制数表示,划分成 8 个块,每块 4 位,块与块之间用“:”隔开,如:ABCD:EF01:0000:0000:ABCD:EF01:0000:6789
同时,对于多个地址块为 0 的情况时,可以使用”::”号,进行化简。
化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全 0 块,可以化简为“::”
③一个 IPv6 地址中只能出现一个“::”,出现多个全 0 块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
程序界面如图所示:

实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Text1_Change()
Dim a(1 To 8) As String, ipstr As String, ips As String
Dim lenth As Integer, max_lenth As Integer, start As Integer ipstr = Text1.Text
For i = 1 To 8
a(i) =_________'将 IPv6 分段存入数组 a Next i
'对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字0,则压缩成 0,如果前导为 0,则去掉,处理完毕存回数组。
'///------ 处理过程略----- /////
'如果只有一串0,则将该串“0”用“::”代替,如果不止一串0,则将最长的一串“0”简化为“::”,如果有连续 0,则将左边的一串零简化,右侧保留。
max_lenth = 0
For i = 1 To 7
If_________Then lenth = lenth + 1
Else
If lenth > max_lenth Then
max_lenth = lenth: start = i - lenth: lenth = 0 End If
End If Next i
If lenth > max_lenth Then max_lenth = lenth: start = i - lenth '根据连续 0 串的位置确定输出简化后的结果
ips = ""
If start = 1 And max_lenth = 7 Then '开头是 0 且全 0 ips = "::"
ElseIf start = 1 Then '开头是 0 但不全为 0 ips = "::"
For i = start + max_lenth + 1 To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
ElseIf start > 1 And start + max_lenth = 8 Then '开头不是 0 但 0 到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
ElseIf start > 1 Then '开头不是 0 且 0 不到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
For i =_________To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
Else '无连续 0 出现
For i = 1 To 7
ips = ips + a(i) + ":"
Next i
ips = ips + a(i) End If
Text2.Text = ips End Sub
(2)IPv6 地址:3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为_______。
同时,对于多个地址块为 0 的情况时,可以使用”::”号,进行化简。
化简原则:
①全 0 块“0000”,可以化简为“0”
②连续多个全 0 块,可以化简为“::”
③一个 IPv6 地址中只能出现一个“::”,出现多个全 0 块时,“::”要化简最长的一段,没有最长的就将最左侧的一段化简为“::”
④“::”可以出现在地址开头或结尾具体示例如下:
程序界面如图所示:

实现上述功能的 VB 程序如下,请回答下列问题:
(1)请在划线处填入合适的代码。
Private Sub Text1_Change()
Dim a(1 To 8) As String, ipstr As String, ips As String
Dim lenth As Integer, max_lenth As Integer, start As Integer ipstr = Text1.Text
For i = 1 To 8
a(i) =_________'将 IPv6 分段存入数组 a Next i
'对数组进行处理,如果字母或非零数字开头,则不用处理;如果全是数字0,则压缩成 0,如果前导为 0,则去掉,处理完毕存回数组。
'///------ 处理过程略----- /////
'如果只有一串0,则将该串“0”用“::”代替,如果不止一串0,则将最长的一串“0”简化为“::”,如果有连续 0,则将左边的一串零简化,右侧保留。
max_lenth = 0
For i = 1 To 7
If_________Then lenth = lenth + 1
Else
If lenth > max_lenth Then
max_lenth = lenth: start = i - lenth: lenth = 0 End If
End If Next i
If lenth > max_lenth Then max_lenth = lenth: start = i - lenth '根据连续 0 串的位置确定输出简化后的结果
ips = ""
If start = 1 And max_lenth = 7 Then '开头是 0 且全 0 ips = "::"
ElseIf start = 1 Then '开头是 0 但不全为 0 ips = "::"
For i = start + max_lenth + 1 To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
ElseIf start > 1 And start + max_lenth = 8 Then '开头不是 0 但 0 到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
ElseIf start > 1 Then '开头不是 0 且 0 不到最后 For i = 1 To start - 1
ips = ips + a(i) + ":"
Next i
ips = ips + ":"
For i =_________To 7 ips = ips + a(i) + ":"
Next i
ips = ips + a(i)
Else '无连续 0 出现
For i = 1 To 7
ips = ips + a(i) + ":"
Next i
ips = ips + a(i) End If
Text2.Text = ips End Sub
(2)IPv6 地址:3BCD:0000:0000:ABCD:0000:0000:0000:6789,则化简后为_______。
有如下 VB 程序段:
For i = 1 To 2
For j = 1 To 6 – i
If a(j) - a(j + 1) > 0 Then
Next i
Text1.Text = ""
For i = 1 To 6
Text1.Text = Str(a(i)) + Text1.Text
Next i
数组元素 a(1)到 a(6)的初值依次为 15,11,58,38,26,9,执行该程序段,文本框 Text1 显示的内容是( )
For i = 1 To 2
For j = 1 To 6 – i
If a(j) - a(j + 1) > 0 Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t End If
Next jNext i
Text1.Text = ""
For i = 1 To 6
Text1.Text = Str(a(i)) + Text1.Text
Next i
数组元素 a(1)到 a(6)的初值依次为 15,11,58,38,26,9,执行该程序段,文本框 Text1 显示的内容是( )
A.9 58 11 38 15 26 | B.11 15 26 9 38 58 |
C.58 38 9 26 15 11 | D.58 9 38 11 26 15 |
下列 VB 程序段的功能为:对数组 a 中的 n 个元素进行排序,生成左右交替上升的数据系列。如排序前 a 中元素依次为:21,33,56,11,44,60,程序运行后 a 中元素依次为:11,33,56,60,44,21。
For i=1 To ①
k=i
For j=i+1 To n-i+1
If a(k)>a(j) Then k= ②
Next j
If k<>i Then t=a(k):a(k)=a(i):a(i)=t For j= ③
If a(j)<a(j+1) Then a(j)=a(j)+a(j+1) : a(j+1)=a(j)-a(j+1):a(j)=a(j)-a(j+1) Next j
Next i
上述程序段 3 个划线处的表达式分别为( )
For i=1 To ①
k=i
For j=i+1 To n-i+1
If a(k)>a(j) Then k= ②
Next j
If k<>i Then t=a(k):a(k)=a(i):a(i)=t For j= ③
If a(j)<a(j+1) Then a(j)=a(j)+a(j+1) : a(j+1)=a(j)-a(j+1):a(j)=a(j)-a(j+1) Next j
Next i
上述程序段 3 个划线处的表达式分别为( )
A.① n-1 ② j+1 ③ i To n-i+1 |
B.① n-1 ② j+1 ③ i To n-i |
C.① n\2 ② j ③ i+1 To n-i |
D.① n\2 ② j ③ i+1 To n-i+1 |
下列 VB 表达式中,只随机产生 9 到 99 之间偶数的是( )
A.Int(Rnd*90+10) | B.Int(Rnd*90+9) | C.Int(Rnd*45)*2+10 | D.Int(Rnd*45)*2+9 |