- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- + 算法实例的程序实现
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
打印矩阵 0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
PRIVATE SUB FORM_CLICK
DIM A(4,4) AS INTEGER
FOR I = 1 TO 4
FOR J= 1 TO 4
IF ________[1]
A(I,J)=1
________[2]
A(I,J)=0
END IF
PRINT A(I,j);
________[3]
PRINT
________[4]
END SUB
1 0 1 1
1 1 0 1
1 1 1 0
PRIVATE SUB FORM_CLICK
DIM A(4,4) AS INTEGER
FOR I = 1 TO 4
FOR J= 1 TO 4
IF ________[1]
A(I,J)=1
________[2]
A(I,J)=0
END IF
PRINT A(I,j);
________[3]
________[4]
END SUB
对数组a中的n个元素进行排序,生成升序的数据序列,结果如下表所示:
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Const n = 8
Dim a(1 To n) As Integer, left As Integer, right As Integer, m As Integer
Dim i As Integer, j As Integer, t As Integer
__________________
__________________
End Sub
a(1) | a(2) | a(3) | …… | a(n-2) | a(n-1) | a(n) |
17 | 39 | 48 | …… | 79 | 79 | 100 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Private Sub Command1_Click()
Const n = 8
Dim a(1 To n) As Integer, left As Integer, right As Integer, m As Integer
Dim i As Integer, j As Integer, t As Integer
’读取一组数,存储在数组a中,代码略
For i = 2 To n
left = 1

Do While left <= right
m = (left + right) \ 2
If a(i) < a(m) Then right = m - 1 Else left = m + 1
Loop

t = a(i)
For j = i To m + 1 Step -1
a(j) = a(j - 1)
Next j
a(m) = t
Next i
’输出排序结果,代码略End Sub
(加试)数组a存放n个学生的学号及成绩,a(2*i-1)存放第i个学生的学号,a(2*i)存放第i个学生的成绩,且成绩按降序排列(i=1,2,……n)。下列VB程序功能为:文本框Text1中输入成绩key,查找该成绩对应学生的学号,在文本框Tex2中显示。
Key = Val(Text1. Text)
i=1:j=( ① )
flag =False
Do While I <=j And Not flag
m=(i+j)\2
If key =a(2*m)Then
Flag = True
Elseif ( ② ) Then
j=m-1
Else
i=m+1
End If
Loop
If flag Then Text2.Text=Str( ③ ) Else Text2.Text=“未找到!”
上述程序段3各方框处的代码分别为
Key = Val(Text1. Text)
i=1:j=( ① )
flag =False
Do While I <=j And Not flag
m=(i+j)\2
If key =a(2*m)Then
Flag = True
Elseif ( ② ) Then
j=m-1
Else
i=m+1
End If
Loop
If flag Then Text2.Text=Str( ③ ) Else Text2.Text=“未找到!”
上述程序段3各方框处的代码分别为
A.(1)2*n (2)key>a(2*m) (3)a(2*m+1) |
B.(1)2*n (2)key<a(2*m) (3)a(2*m+1) |
C.(1)n (2)key>a(2*m) (3)a(2*m-1) |
D.(1)n (2)key <a(2*m) (3) a(2*m-1) |
下列VB程序段功能为:根据数组a中各元素的大小关系,计算各元素升序排列的序号,并将序号保行值效组b中。如数组a各元素为20、40、10、30,b(1)~b(4)各元素的值分别为"1、2、3、4",程序运行后b(1)~b(4)各元素的值分别为"2,4,1,3"。

上述程序段3个方框处的代码分别为

上述程序段3个方框处的代码分别为
A.(1)b(i)=1 (2)a(j)<a(k) (3)t=a(k):a(k)=a(i):a(i)=t |
B.(1)b(i)=1 (2)a(b(j))<a(b(k)) (3)t=a(k):a(k)=a(i):a(i)=t |
C.(1)b(i)=i (2)a(j)<a(k) (3)t=b(k):b(k)=b(i):b(i)=t |
D.(1)b(i)=i (2)a(b(j))<a(b(k)) (3)t=b(k):b(k)=b(i):b(i)=t |
(加试题)数组a中存储的n个正整数满足如下条件:奇数位上的数降序有序,偶数位上的数升序有序,且所有奇数位上的数都大于偶数位上的数,如下表所示:

读取一组正整数,按照上述规则存入数组a中,代码略。


改错:(1)______________ (2)______________
a(1) | a(2) | a(3) | a(4) | a(5) | a(6) | a(7) | a(8) | a(9) | a(10) |
100 | 10 | 90 | 20 | 80 | 30 | 70 | 40 | 60 | 50 |
依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。

读取一组正整数,按照上述规则存入数组a中,代码略。


改错:(1)______________ (2)______________
获取字符串中指定范围内的元素,可以通过字符编号来实现,字符编号有正向编号和反向编号。如字符串"ABCDEF",字符A的正向编号为1、反向编号为-6,如下表:


(1)用户单击命令按钮Command1时调用的事件处理过程为__________。(单选,填字母:
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, ans As String
Dim a As Integer,b As Integer, n As Integer
s=Textl.Text:n= Len(s): ans=""
a=Val(Text2.Text): b = Val(Text3.Text)
If Abs(a)>n Or Abs(b)>nOra *b=0 Then
ans="输入范围有误"
Ifb<OThenb= ①_______
Ifa<=b Then
ans= ②_______
ans=ans+Mid(s,i,1)
Next i
End Sub
(3)若文本框Textl中输入的内容为"123456789",文本框Text2和Text3中输入的内容分别为-3和5,单击"获取”按钮,标签框Labell中显示的内容是____________。

"2:4"表示获取正编号"2"到"4”的字符串,即"BCD",-5:-3、2:3、-5:4这三种编号范围也表示的是字符串"BCD"。
小王根据上述算法设计如下程序,在文本框Textl输入字符串,在文本框Text2和Text3中输入字符编号,单击"获取"按钮,在标签Labell中显示指定范围的字符串。当Text2中的编号位置在Text3中的编号位置之前,则输出正向字符串,反之输出逆向字符串。程序运行界面如图所示。

(1)用户单击命令按钮Command1时调用的事件处理过程为__________。(单选,填字母:
A.Command1/ | ||
B.Caption/ | C.Click/ | D.Commandl_Click)。 |
Private Sub Command1_Click()
Dim s As String, ans As String
Dim a As Integer,b As Integer, n As Integer
s=Textl.Text:n= Len(s): ans=""
a=Val(Text2.Text): b = Val(Text3.Text)
If Abs(a)>n Or Abs(b)>nOra *b=0 Then
ans="输入范围有误"
Else
If a<0 Thena=a+n+ =1Ifb<OThenb= ①_______
Ifa<=b Then
ans= ②_______
Else
Fori=a To b Step-1ans=ans+Mid(s,i,1)
Next i
End If
End If
Label1.Caption=ansEnd Sub
(3)若文本框Textl中输入的内容为"123456789",文本框Text2和Text3中输入的内容分别为-3和5,单击"获取”按钮,标签框Labell中显示的内容是____________。
下列 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 |
小明学了排序和查找算法后,编写了一个处理成绩的程序。单击“获取成绩”按钮得到 n 个非降序数保存在数组 a(1)—a(n)中,并显示在 List1 中。在文本框 Text1 中输入成绩 key,单击“查找”按钮,则在标签 label1 中显示共有多少位同学的成绩大于等于该成绩。

(1)加框 1 处的程序代码有错,应改为____。
(2)请在划线处填入合适代码:
Dim a(1000) As Integer, n As Integer Private Sub Command1_Click()
'从数据库获取 n 个成绩存储在 a(1)---a(n)组中,代码略 For i = 2 To n ‘排序
tmp = a(i) j = 1
Do While tmp > = a(j) j = j + 1
If __________Then Exit Do Loop
For k = i To j + 1 Step -1 a(k) = a(k - 1)
Next k
'改错(1)
Next i
For i = 1 To n List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command2_Click()
Dim key As Integer, i As Integer, j As Integer, m As Integer key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If _________ Then j = m - 1
Else
i = m + 1 End If
Loop
Label1.Caption = "共有" +_________+ "位同学大于等于该成绩。"
End Sub

(1)加框 1 处的程序代码有错,应改为____。
(2)请在划线处填入合适代码:
Dim a(1000) As Integer, n As Integer Private Sub Command1_Click()
'从数据库获取 n 个成绩存储在 a(1)---a(n)组中,代码略 For i = 2 To n ‘排序
tmp = a(i) j = 1
Do While tmp > = a(j) j = j + 1
If __________Then Exit Do Loop
For k = i To j + 1 Step -1 a(k) = a(k - 1)
Next k

Next i
For i = 1 To n List1.AddItem Str(a(i))
Next i
End Sub
Private Sub Command2_Click()
Dim key As Integer, i As Integer, j As Integer, m As Integer key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If _________ Then j = m - 1
Else
i = m + 1 End If
Loop
Label1.Caption = "共有" +_________+ "位同学大于等于该成绩。"
End Sub