- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
分析完善程序。
“完数”是指一个自然数恰好等于它的因子(不包含本身)之和。如6的因子为1,2,3,而6=1+2+3,因此6就是完数。再如28的因子为1,2,4,7,14,而28=1+2+4+7+14,因而28也是完数。
问题:输入一个正整数n,判断该正整数是否为完数。
要判断一个正整数n是否为完数,最简单的方法是:求出1到n-1之间的所有因子和为Sum,如果Sum的值和n的值相同,则n就是完数。
以下代码是判断n是否为完数的程序片段,请你补全代码:
Dim n As Long
Dim Sum As Long ' Sum用来记录n的因子和
n = InputBox(“n=”)
For i = 1 To n-1 ' 求n的因子和Sum
If n Mod i = 0 Then Sum =_________
Next i
If _____________ Then
Print n & “是完数”
Else
Print n & “不是完数”
End If
“完数”是指一个自然数恰好等于它的因子(不包含本身)之和。如6的因子为1,2,3,而6=1+2+3,因此6就是完数。再如28的因子为1,2,4,7,14,而28=1+2+4+7+14,因而28也是完数。
问题:输入一个正整数n,判断该正整数是否为完数。
要判断一个正整数n是否为完数,最简单的方法是:求出1到n-1之间的所有因子和为Sum,如果Sum的值和n的值相同,则n就是完数。
以下代码是判断n是否为完数的程序片段,请你补全代码:
Dim n As Long
Dim Sum As Long ' Sum用来记录n的因子和
n = InputBox(“n=”)
For i = 1 To n-1 ' 求n的因子和Sum
If n Mod i = 0 Then Sum =_________
Next i
If _____________ Then
Print n & “是完数”
Else
Print n & “不是完数”
End If
进入2016年7月份以来,浙江省气温连续高企,为了观察气温的变化情况,小明用VB编写了一个连续高温天数的统计软件。小明采集了杭州市7-8月的每日最高气温,并存放在ACCESS数据库中。程序运行时,读取日期和最高气温并显示在列表框List1中,在文本框Text1中输入温度值,单击“统计”按钮Command1,程序自动统计运行在该温度值以上的最长连续天数,并显示在Text3中,同时在Text2中显示日期区间,运行界面如图所示。
Dim rq(1 to 100) as String:Dim qw(1 to 100) as Integer:Dim n as Integer
Private sub Form_Load()
'读取数据库内容,其中日期数据放在数组rq中,最高气温数据存放在qw中,第i个日期保存在rq(i)中,对应的气温保存在qw(i)中,并显示在列表框List1中,代码略
End sub
Private sub Command1_Click()
Dim max as Integer '记录最大连续天数
Dim nend as Integer '记录最大连续天数时的结束日期的下标
Dim ncount as Integer '统计连续天数
Dim tjqw as Integer '存放输入的温度
tjqw = Val(Text1.Text)
ncount = 0
max = 0
For i = 1 To n
If _____________ Then
ncount = ncount + 1
Else
ncount = 0
End If
If max < ncount Then
max = ncount
__________________
End If
Next i
If max <> 0 Then Text2.Text = ____________________& ”-”& rq(nend)
Text3.text = Str(max)
End sub

Dim rq(1 to 100) as String:Dim qw(1 to 100) as Integer:Dim n as Integer
Private sub Form_Load()
'读取数据库内容,其中日期数据放在数组rq中,最高气温数据存放在qw中,第i个日期保存在rq(i)中,对应的气温保存在qw(i)中,并显示在列表框List1中,代码略
End sub
Private sub Command1_Click()
Dim max as Integer '记录最大连续天数
Dim nend as Integer '记录最大连续天数时的结束日期的下标
Dim ncount as Integer '统计连续天数
Dim tjqw as Integer '存放输入的温度
tjqw = Val(Text1.Text)
ncount = 0
max = 0
For i = 1 To n
If _____________ Then
ncount = ncount + 1
Else
ncount = 0
End If
If max < ncount Then
max = ncount
__________________
End If
Next i
If max <> 0 Then Text2.Text = ____________________& ”-”& rq(nend)
Text3.text = Str(max)
End sub
编写VB程序,实现如下功能:在文本框Text1中输入一串字符,单击“统计”按钮Command1,统计每个英文字母(不区分大小写)出现的次数,找出出现次数最多的字母,在标签Label1中显示结果。运行效果如图所示。

实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, max As Integer
Dim a(1 To 26) As Integer '数组a存放26个大小写字母出现的次数Dim st As String, ch As String
st = Text1.Text
For i = 1 To Len(st)
①_____
If ch >= "A" And ch <= "Z" Then n = Asc(ch) - Asc("A") + 1 a(n) = a(n) + 1
ElseIf ch >= "a" And ch <= "z" Then n = ②_____
a(n) = a(n) + 1
End If
Next i
max = a(1)
For i = 1 To 26
If ③_____Then max = a(i)
End If Next i st = ""
For i = 1 To 26
If max = a(i) Then
st = st + " " + Chr(Asc("A") + i - 1) End If
Next i
Label1.Caption = "出现次数最多的字母是:" & st & " " & "出现次数为:" & Str(max)
End Sub
(2)在文本框 Text1 中输入字符串“ABCEEEEffee333333”,运行程序时,标签 Label1 中输出结果为:出现次数最多的字母是:_____出现次数为:_____。

实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, max As Integer
Dim a(1 To 26) As Integer '数组a存放26个大小写字母出现的次数Dim st As String, ch As String
st = Text1.Text
For i = 1 To Len(st)
①_____
If ch >= "A" And ch <= "Z" Then n = Asc(ch) - Asc("A") + 1 a(n) = a(n) + 1
ElseIf ch >= "a" And ch <= "z" Then n = ②_____
a(n) = a(n) + 1
End If
Next i
max = a(1)
For i = 1 To 26
If ③_____Then max = a(i)
End If Next i st = ""
For i = 1 To 26
If max = a(i) Then
st = st + " " + Chr(Asc("A") + i - 1) End If
Next i
Label1.Caption = "出现次数最多的字母是:" & st & " " & "出现次数为:" & Str(max)
End Sub
(2)在文本框 Text1 中输入字符串“ABCEEEEffee333333”,运行程序时,标签 Label1 中输出结果为:出现次数最多的字母是:_____出现次数为:_____。
某客运公司为了合理地安排汽车运输,每年每月都会对汽车站的客运量进行统计,并保存到数据库。新的一年即将来临,客运公司准备制订明年的汽车排班计划。设计程序,从数据库中读取上一年的月客运量,并找出最大、最小月份,代码如下:
Dim a(1 To 12) As Integer
Private Sub Form_Load()
’本过程从数据库中读取上一年月客流量,并存储在数组a中,代码略
End Sub
Private Sub Command1_Click()
Dim max As Integer, min As Integer
Dim yx As Integer, yn As Integer
max = a(1)
min = a(1)
yx = 1
yn = 12 ……………………①
For i = 2 To 12
If a(i) >= max Then
max = a(i)
yx = i
End If
If a(i) <a(1) Then ………………②
min = a(i)
yn = i
End If
Next i
Label1.Caption =“客流量最大在第” + Str(yx) +“月,共” + Str(max) +“人,客流量最小在第” + Str(yn) +“月,共:” + Str(min) +“人”
End Sub
该程序①、②处有错误,请在画线处填写正确代码。
①_____________________②_____________________
Dim a(1 To 12) As Integer
Private Sub Form_Load()
’本过程从数据库中读取上一年月客流量,并存储在数组a中,代码略
End Sub
Private Sub Command1_Click()
Dim max As Integer, min As Integer
Dim yx As Integer, yn As Integer
max = a(1)
min = a(1)
yx = 1
yn = 12 ……………………①
For i = 2 To 12
If a(i) >= max Then
max = a(i)
yx = i
End If
If a(i) <a(1) Then ………………②
min = a(i)
yn = i
End If
Next i
Label1.Caption =“客流量最大在第” + Str(yx) +“月,共” + Str(max) +“人,客流量最小在第” + Str(yn) +“月,共:” + Str(min) +“人”
End Sub
该程序①、②处有错误,请在画线处填写正确代码。
①_____________________②_____________________
已知数组a(1)到a(6)的原始数据为“118”,“36”,“98”,“15”,“88”,“2”,对该数组进行排序操作,某同学编写了以下VB程序:
For i=1 To 3
For j=6 To i+1 Step-1
If a(j)<a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End if
Next j
Next i
则程序运行之后,数组a(1)到a(6)的值依次为( )
For i=1 To 3
For j=6 To i+1 Step-1
If a(j)<a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End if
Next j
Next i
则程序运行之后,数组a(1)到a(6)的值依次为( )
A.“118”,“15”,“2”,“36”,“88”,“98” |
B.“118”,“15”,“36”,“88”,“98”,“2” |
C.“2”,“15”,“36”,“118”,“88”,“98” |
D.“2”,“15”,“36”,“88”,“98”,“118” |
暑期旅游旺季,各地旅行社纷纷给出了国外游的各种行程报价。小宇为了同学们方便选择出行路线及价格,设计了一个程序。在文本框Text1中输入“国外”或“国内”,在文本框Text2中输入出游的天数,单击“线路及报价查询”按钮Command1,将在列表框中输出按价格从高到低排序的线路名称及报价信息。

实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dim g(100) As String, day(100) As Integer, xl(100) As String, pri(100)
As Integer
Const n=100
Private Sub Form_Load()
'从数据库中读取数据并存储在相关变量中。g()数组存储国内/国外,day()数组存储出游天数,xl()数组存储旅游线路名称,pri()数组存储行程报价。
'代码略
End sub
Private Sub Command1 Click()
Dim i As Integer,j As Integer
For i=I To n\2
t=pri(j):pri(j)=pri(j+1):pri(j+1)=t
End if
'①
If pri(j)<pri(j-1) Then
t=pri(j):pri(j) pri(j-1):pri(j-1)=t
End If
List1.Clear
i=1
Do While i<=n And g(i)=Text1.Text And day(i)=Val(Text2,Text)
(1)程序中①处加框代码应改为________________________________________。
(2)程序中②处加框代码应改为________________________________________。

实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dim g(100) As String, day(100) As Integer, xl(100) As String, pri(100)
As Integer
Const n=100
Private Sub Form_Load()
'从数据库中读取数据并存储在相关变量中。g()数组存储国内/国外,day()数组存储出游天数,xl()数组存储旅游线路名称,pri()数组存储行程报价。
'代码略
End sub
Private Sub Command1 Click()
Dim i As Integer,j As Integer
For i=I To n\2
For j=I To n-i
If pri(j)>pri(j+1) Thent=pri(j):pri(j)=pri(j+1):pri(j+1)=t
End if
Next j

If pri(j)<pri(j-1) Then
t=pri(j):pri(j) pri(j-1):pri(j-1)=t
End If
Next j
Next iList1.Clear
i=1
Do While i<=n And g(i)=Text1.Text And day(i)=Val(Text2,Text)
'②
i=i+1
Loop(1)程序中①处加框代码应改为________________________________________。
(2)程序中②处加框代码应改为________________________________________。
a(1)=17:a(2)=16:a(3)=12:a(4)=18:a(5)=15:a(6)=13:a(7)=17:a(8)=20
i=2
Do While i <=8
If i mod 2=0 and a(i)>a(i-1)then
t=a(i):a(i)=a(i-1):a(i-1)=t
Else If a(i-1) mod 2=1 then
a(i-1)=a(i-1)+1
End If
i=i+1
Loop
执行程序后,a数组各元素是( )
i=2
Do While i <=8
If i mod 2=0 and a(i)>a(i-1)then
t=a(i):a(i)=a(i-1):a(i-1)=t
Else If a(i-1) mod 2=1 then
a(i-1)=a(i-1)+1
End If
i=i+1
Loop
执行程序后,a数组各元素是( )
A.17,16,18,12,16,14,20,18 |
B.18,16,18,12,16,14,20,17 |
C.16,17,18,12,13,16,20,17 |
D.18,16,18,12,14,15,17,20 |
数组a中存放着1到20的正整数,要求对其中的元素进行分段排序,在Text2中输入每段元素的个数,在文本框Text3中显示每段降序排序后的数据,其中多余的元素不做处理,具体界面如图所示:

实现该功能的VB程序如下,请回答下列问题:
(1)要使程序运行时,窗体Form1标题显示“数组分段排序”,可在Form_Load事件过程中添加语句_______________(单选,填字母:
(2)程序代码中的加框处有错误,请改正。
__________________________
(3)请在划线处填入合适的程序代码。
①________________________
②________________________
Dim a(0 To 100) As Integer
Const high = 16
Private Sub Form_Load()
For i = 1 To high
Randomize
a(i) = Int(Rnd ∗ 20) + 1
Text1.Text = Text1.Text + Str(a(i))
Next i
End Sub
Private Sub Command1_Click()
Dim p As Integer, q As Integer, t As Integer,m As Integer, n As Integer, k As Integer
m = Val(Text2.Text)
For i = 1 To ①
c = ""
For j = 1 To m
p=j '改错
q = i ∗ m
k = sort(p, q)
If a(k) <> a(p) Then
t = a(p): a(p) = a(k): a(k) = t
End If
c = c + Str(a(p))
Next j
Text3.Text = Text3.Text + "" + c
Next i
End Sub
Function sort (f As Integer, g As Integer)As Integer
s = f
For i = f To g
If a(i) > a(s) Then
②
End If
Next i
sort = s
End Function

实现该功能的VB程序如下,请回答下列问题:
(1)要使程序运行时,窗体Form1标题显示“数组分段排序”,可在Form_Load事件过程中添加语句_______________(单选,填字母:
A.Form1. Caption=“数组分段排序”/ | B.Form1. Text=“数组分段排序”/ | C.Text1. Text=“数组分段排序”)。 |
__________________________
(3)请在划线处填入合适的程序代码。
①________________________
②________________________
Dim a(0 To 100) As Integer
Const high = 16
Private Sub Form_Load()
For i = 1 To high
Randomize
a(i) = Int(Rnd ∗ 20) + 1
Text1.Text = Text1.Text + Str(a(i))
Next i
End Sub
Private Sub Command1_Click()
Dim p As Integer, q As Integer, t As Integer,m As Integer, n As Integer, k As Integer
m = Val(Text2.Text)
For i = 1 To ①
c = ""
For j = 1 To m
p=j '改错
q = i ∗ m
k = sort(p, q)
If a(k) <> a(p) Then
t = a(p): a(p) = a(k): a(k) = t
End If
c = c + Str(a(p))
Next j
Text3.Text = Text3.Text + "" + c
Next i
End Sub
Function sort (f As Integer, g As Integer)As Integer
s = f
For i = f To g
If a(i) > a(s) Then
②
End If
Next i
sort = s
End Function
某排序算法的VB程序段如下:
k=1
For i=1 To 2
For j=1 To 6-2*i
If k* a(j)<k*a(j+2)Then
t=a(j): a(j)=a(j+2): a(j+2)=t
Next i
数组元素a(1)到a(6)的初始值依次为“15,11,58,38,26,9”,该程序段执行后,数组a元素的值分别为( )
k=1
For i=1 To 2
For j=1 To 6-2*i
If k* a(j)<k*a(j+2)Then
t=a(j): a(j)=a(j+2): a(j+2)=t
End if
k=-k
Next jNext i
数组元素a(1)到a(6)的初始值依次为“15,11,58,38,26,9”,该程序段执行后,数组a元素的值分别为( )
A.58,9,26,11,15,38 |
B.58,38,26,11,15,9 |
C.15,38,26,11,58,9 |
D.58,38,26,15,11,9 |
数组a中存储了n个学生的学号和成绩数据,其中奇数位置存储学号信息,偶数位置存储成绩信息,数组存储结构如下表所示:
小迪同学使用选择排序思想对上述n个同学按成绩进行降序排序(成绩相同的按学号升序排列),并依据成绩插入各位同学的名次信息,处理结束的数组a存储结构如下表所示:
小迪同学使用VB编写了成绩处理程序,程序运行界面如下图所示:
实现上述功能的VB程序如下,请回答下列问题。
Const n=20
Dim a(1 To 3* n)As Integer
Private Sub Command1_ Click()
Private Sub Command2_ Click()
'①改错
k=i
For j=l To i-l
If a(2*j)<a(2*k)Or ② Then
k=j
End if
A(3*i-1)=a(2*k-1)
③
A(2*k-1)=a(2*i-1)
Next i
List2. AddItem"第1名:学号+CStr(a(2))+",分数"+str(a(3))
A(1)=1
mc=1
For j=2 To n
(1)已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“第15题程序”,则可在_____________(单选,填字母)事件过程中添加代码: Form1. Caption=“第15题程序”。
(2)程序加框处的For循环语句有错,请改正。
(3)请将程序②③④划线处代码补充完整。
1 | 2 | 3 | 4 | 5 | 6 | …… | 2n-1 | 2n |
学号 | 成绩 | 学号 | 成绩 | 学号 | 成绩 | …… | 学号 | 成绩 |
第1个学生信息 | 第2个学生信息 | 第3个学生信息 | …… | 第n个学生信息 |
小迪同学使用选择排序思想对上述n个同学按成绩进行降序排序(成绩相同的按学号升序排列),并依据成绩插入各位同学的名次信息,处理结束的数组a存储结构如下表所示:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | …… | 3n-2 | 3n-1 | 3n |
名次 | 学号 | 成绩 | 名次 | 学号 | 成绩 | 名次 | 学号 | 成绩 | …… | 名次 | 学号 | 成绩 |
第1个学生信息 | 第2个学生信息 | 第3个学生信息 | …… | 第n个学生信息 |
小迪同学使用VB编写了成绩处理程序,程序运行界面如下图所示:

实现上述功能的VB程序如下,请回答下列问题。
Const n=20
Dim a(1 To 3* n)As Integer
Private Sub Command1_ Click()
'读取数据,存储在数组a中,并显示于列表框List1中
'代码略
End SubPrivate Sub Command2_ Click()

k=i
For j=l To i-l
If a(2*j)<a(2*k)Or ② Then
k=j
End if
Next j
A(3*i=a(2*k)A(3*i-1)=a(2*k-1)
③
A(2*k-1)=a(2*i-1)
Next i
List2. AddItem"第1名:学号+CStr(a(2))+",分数"+str(a(3))
A(1)=1
mc=1
For j=2 To n
If ④ Then mc=i
List2. AddItem"第"+Str(mc)+"名:学号"+CStr(a(3*i-1))+",分数"十Str(a(3*i))a(3*i-2)=mc
Next i
End sub(1)已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“第15题程序”,则可在_____________(单选,填字母)事件过程中添加代码: Form1. Caption=“第15题程序”。
A.Form_ Click() | B.Form_ Load() | C.Form1_ Click() | D.Forml_ Load() |
(3)请将程序②③④划线处代码补充完整。