1)对于两个形状相同的矩阵,它们的内积是每个对应位置的数字相乘之后的和;
2)对于小矩阵和大矩阵卷积运算时,以小矩阵为参考,沿着横向和纵向两个方向逐个滑动(取同样大小的矩阵),依次横向和纵向两个方向逐个滑动(取同样大小的矩阵),依次求出内积,得到结果矩阵,如图a所示。
图a
小A同学用VB程序模拟上述的矩阵卷积运算,单击“初始化小矩阵”按钮command1,随机生成小矩阵数据,单击“初始化大矩阵”按钮command2,随机生成大矩阵数据,单击“运算”按钮command3,进行矩阵卷积运算并生成结果矩阵,运行界面如图b所示:
图b
Const m = 2 ‘小矩阵行数和列数
Const n = 8 ‘大矩阵行数和列数 Dim a(1 To m * m) As Integer Dim b(1 To n * n) As Integer
Dim tempStr As String ‘输出行的临时数据 '初始化小矩阵
Private Sub Command1_Click()
Dim x As Integer ‘小矩阵当前坐标位置
Randomize
List1.Clear
For i = 1 To m
tempStr = ""
For j = 1 To m
x = (i - 1) * m + j
a(x) = Int(Rnd() * 5 + 1) ‘小矩阵[1,5]的随机数
tempStr = tempStr + Str(a(x))
Next j
List1.AddItem tempStr
Next i End Sub
‘初始化大矩阵
Private Sub Command2_Click()
Dim x As Integer ‘大矩阵当前坐标位置
Randomize
List2.Clear
For i = 1 To n
temp Str = ""
For j = 1 To n
x =
b(x) = Int(Rnd() * 10) ‘大矩阵[0,9]的随机数
tempStr = tempStr + Str(b(x))
Next j
List2.AddItem tempStr
Next i
End Sub
‘运算
Private Sub Command3_Click()
Dim productSum As Integer '内积
Dim product As Integer
Dim rowNow As Integer, colNow As Integer
List3.Clear
For i = 1 To n - m + 1 ‘处理纵向移动
tempStr = ""
For j = 1 To n - m + 1 ‘处理横向移动
productSum = 0
For k = 1 To m * m
rowNow = (k - 1) \ m ‘小矩阵值的行号
colNow = ‘小矩阵值的列号
product = a(k) * b((i - 1 + rowNow) * n + j + colNow - 1) '大小矩阵值乘积
Next k
tempStr = tempStr + Str(productSum)
Next j
List3.AddItem tempStr
Next i
End Sub
编写一个“合并重叠区间”的VB程序,功能如下:在文本框Text1中按各区间起始值升序依次输入各区间的起始值和终止值(数据都用逗号分隔并以逗号结尾),单击“确定”按钮后,在Text2中显示合并后的各个区间。例如,在文本框Text1中输入“1,2,3,5,4,6,9,12,10,11,”,表示区间[1,2],[3,5],[4,6],[9,12],[10,11],合并后的区间分别为[1,2],[3,6],[9,12]。程序运行界面如图所示,实现上述功能的VB代码如下:
Const n=100
Private Sub Cmd1_Click()
Dim i As Integer, k As Integer, L As Integer, R As Integer
Dim s As String, c As String, t As String, result As String
Dim a(1 To n) As Integer
s= ① : t=" ": k=0
For i=1 To Len(s)
c=Mid(s, i, 1)
If c<>"," Then
②
Else
k=k+1
a(k)=Val(t)
t=""
End If
Next i
L=a(1): R=a(2)
i=3
Do While i<=k
If a(i)>R Then
result = result+"("+Str(L)+","+Str(R)+"),"
L=a(i): R=a(i+1)
R=a(i+1)
End If
③
Loop
result=result+"("+Str(L)+","+Str(R)+"),"
Text2. Text=result
End Sub
① ② ③

下列说法正确的是( )
bianliang_a = 3:bianliang_b = 4
Label1.caption = “bianliang_a*bianliang_b”
该程序段运行之后,标签Label1将显示:( )
s= "Jinhua2022": t="": i= 1
Do While i< Len(s)
c=Mid(s,i,1):d=Mid(s,i+1,1)
If c <= d Then t=t+ c
Else t=t+d
i=i+2
Loop
Label1.Caption = t
执行该程序段后,标签Label1中显示的内容是( )
| 序号 | 书名 | 作者 | 收藏日期 | 价格 | 是否借出 |
| 自动编号 | 玫瑰门 | 铁凝 | 2012/11/15 | 39 | □ |
| 自动编号 | 蛙 | 莫言 | 2012/11/24 | 32 | √ |
| 自动编号 | 瓦尔登湖 | 梭罗 | 2012/11/11 | 28 | □ |
以下表结构设计合理的是( )
B .
C .
D .


为此,编写了一个 VB 程序,功能如下:运行程序,窗体加载时随机产生 10 个随机整数,并在列表框 List1 中依次显示排序前数据,单击“排序”按钮 Command1,在列表框 List2 中
显示经过上述排序算法后的数据,运行结果如图 b 所示。实现上述功能的 VB 代码如下,但加框处代码有错,请改正。
Const n = 10
Dim a(1 To n) As Integer '生成 n 个随机数,存储在 a 数组,代码略
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 2 To n
t = a(i) : j = i - 1
Do While t < a(j)
a(j + 1) = a(j) j = j – 1
If
Then Exit Do ①
Loop
②
Next i
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
① ②
Private Sub Command1_Click()
Dim msg As String c As String, tmp As String, s As String, flag As Boolean msg = Text1.Text msg = msg + "/" '标记字符串结束符
tmp = "" :s = "" : flag = True
For i = 1 To Len(msg)
c = Mid(msg, i, 1)
If Then
flag = False
tmp = tmp + c
ElseIf flag = False Then s = s + tmp + ","
tmp = ""
End If
Next i
Text2.Text = s
End Sub