您现在的位置是: 首页 > 高考调剂 高考调剂

高考vb矩阵,vba 矩阵

tamoadmin 2024-07-11 人已围观

简介1.vb矩阵排序问题2.VB编程,求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M、 N从键盘输入3.vb 矩阵乘法运算?Option?Base?1Option?ExplicitPrivate?Sub?Command1_Click() Cls?‘测试时建议加上这句,因为结果有鞍点的概率较低,多鞍几次按钮才可能出现一次有鞍点的情况 Dim?a(6,?5)?As?Integer,?f?As

1.vb矩阵排序问题

2.VB编程,求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M、 N从键盘输入

3.vb 矩阵乘法运算?

高考vb矩阵,vba 矩阵

Option?Base?1

Option?Explicit

Private?Sub?Command1_Click()

Cls?'测试时建议加上这句,因为结果有鞍点的概率较低,多鞍几次按钮才可能出现一次有鞍点的情况

Dim?a(6,?5)?As?Integer,?f?As?Boolean,?i?As?Integer,?j?As?Integer

Dim?k?As?Integer,?col?As?Integer,?max?As?Integer

Randomize

For?i?=?1?To?6

For?j?=?1?To?5

a(i,?j)?=?Int(Rnd?*?90?+?10)

Print?a(i,?j);

Next?j

Print

Next?i

'鞍点的意思就是在一行中的最大值也是该列的最小值

f?=?False

For?i?=?1?To?6?'从第一行查找到第六行

max?=?a(i,?1):?col?=?1

For?j?=?2?To?5

If?a(i,?j)?>=?max?Then

max?=?a(i,?j):?col?=?j

End?If

Next?j

'以上五句程序的功能是找出该行的最大值,并记下其位置

'以下三句判断找出的行的最大值是否是它所在的列的最小值

For?k?=?1?To?6

If?a(k,?col)?<?a(i,?col)?Then?Exit?For?'如果条件不满足,结束子循环,其结果是条件成立时k的值小于7

Next?k

If?k?=?7?Then'如果k=7,那么上面的子循环没有提前结束,也就是对于该列的每一个数都不小于所找出的列的最大值,即满足鞍点的条件

Print?"鞍点是:a("?&?i?&?","?&?col?&?")"

f?=?True?'将f设置为true,标示找到鞍点

End?If

Next?i

If?f?=?False?Then?Print?"没有鞍点"?'如果没有鞍点,输出没有鞍点

End?Sub

vb矩阵排序问题

Private Sub Command1_Click()

Dim a(4, 5) As Integer

Randomize

Print "原来的数组:"

For i = 1 To 4

s = 0 '不需要时此行可删除

For j = 1 To 5

? a(i, j) = Int(Rnd * 100 + 1)

? s = s + a(i, j)

? Print Tab(4 * j); a(i, j);

Next j

Print "", s'不需要时此行可删除

Next i

Min = 9999

Max = -1

For i = 1 To 4

Sum = 0

For j = 1 To 5

? Sum = Sum + a(i, j)

Next j

If Sum > Max Then maxi = i: Max = Sum

If Sum < Min Then Min = Sum: mini = i

Next i

For j = 1 To 5

t = a(maxi, j): a(maxi, j) = a(mini, j): a(mini, j) = t

Next j

Print "交换后的数组:"

For i = 1 To 4

s = 0 '不需要时此行可删除

For j = 1 To 5

? Print Tab(4 * j); a(i, j);

? s = s + a(i, j)

Next j

Print "", s '不需要时此行可删除

Next i

End Sub

VB编程,求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M、 N从键盘输入

Dim a(1 To 5, 1 To 5) As Integer

Dim i, j, n As Integer

Private Sub Form_click()

Print "随机输出5*5方阵:"

Randomize

For i = 1 To 5

For j = 1 To 5

a(i, j) = Rnd * 10

Print a(i, j);

Next j

Print

Next i

Print

For n = 1 To 5

m = 1

For j = 2 To 5

If a(n, m) > a(n, j) Then m = j

Next j

Print "第" & n & "行最小的是:" & a(n, m)

Next n

End Sub

Private Sub Command1_Click()

Cls

End Sub

Private Sub Command2_Click()

Dim b(12) As Integer

Dim a(1 To 3, 1 To 4) As Single

Dim i As Integer

Dim j As Integer

Dim sum, n As Integer

Print "原矩阵是:"

For i = 1 To 3

For j = 1 To 4

a(i, j) = Int(9 * Rnd)

Print a(i, j);

Next j

Print

Next i

Print

Print "转置矩阵是:"

For i = 1 To 4

For j = 1 To 3

Print a(j, i);

Next j

Print

Next i

Print "矩阵的上三角矩阵是:"

For i = 1 To 3

For j = i To 4

Print Tab(4 * j); a(i, j);

Next j

Print

Next i

Print "将矩阵按列放入一维数组并输出:"

For j = 1 To 4

For i = 1 To 3

b(n) = a(i, j)

Print b(n)

Next i

Print

Next j

Print

sum = 0

For i = 1 To 3

For j = 1 To 4

sum = sum + Val(a(i, j))

Next j

Next i

Print "矩阵中所有非零数值的总和为:" & sum

vb 矩阵乘法运算?

这个是那一章的全部答案

1.设有如下两组数据:

(1)1,3,5,2,4,18,50,25

(2)5,27,30,35,60,41,87,33

编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即1+5,3+27,……,25+33,并把相应的结果放入第三个数组中,最后输出第三个数组的值

代码

Private Sub Command1_Click()

Dim i

Dim x()

Dim y()

Dim z(0 To 7)

x = Array(1, 3, 5, 2, 4, 18, 50, 25)

y = Array(5, 27, 30, 35, 60, 41, 87, 33)

For i = 0 To 7

z(i) = x(i) + y(i)

Print z(i);

Next i

End Sub

运行界面

2.有一个n×m的矩阵,编写程序,找出其中最大的那个元素所在的行和列,并输出其值及行号和列号。

代码

Private Sub Command1_Click()

Dim a(1 To 10, 1 To 10) As Integer

Dim m%, n%, x%

For i = 1 To 10

For j = 1 To 10

a(i, j) = Int(Rnd * 101)

Print Tab((j - 1) * 5 + 2); a(i, j);

Next j

Next i

Print

x = a(1, 1)

For i = 1 To 10

For j = 1 To 10

If a(i, j) > x Then m = i: n = j: x = a(i, j)

Next j

Next i

Print "最大数为:" & x & ",它为第 " & m & "行," & "第" & n & "列的元素。"

End Sub

运行界面

3.某数组中有10个元素,元素的值由键盘输入,要求将前5个元素与后5个元素对换。即第1个元素与第10个元素互换,第2个元素与第9个元素互换……。请输出数组中原来各元素的值和对换后各元素的值。

代码

Option Base 1

Private Sub Command1_Click()

Dim a%(1 To 10)

Dim i%

For i = 1 To 10

a(i) = InputBox("请输入第" & i & "个数")

Print a(i);

Next i

Print

For i = 1 To 5

t = a(i)

a(i) = a(10 - i + 1)

a(10 - i + 1) = t

Print a(i);

Next i

For i = 1 To 5

Print a(i + 5);

Next i

End Sub

运行界面

4.输入若干个学生的一门课的成绩,统计各分数段的人数。按小于60分、60~69分、70~79分、80~89分、90~100分各为一个分数段。

代码

Private Sub Command1_Click()

Dim a$(), k%, y

Dim x(0 To 10) As Integer

a = Split(Text1.Text, ",")

For Each y In a

k = y \ 10

x(k) = x(k) + 1

Next y

Picture1.Print "统计结果如下"

Picture1.Print "90-100分有:" & x(9) + x(10) & "人"

For i = 8 To 6 Step -1

Picture1.Print i * 10 & "分—"; i * 10 + 9 & "分有" & x(i) & "人"

Next i

For i = 1 To 5

z = z + x(i)

Next i

Picture1.Print "60分以下的有:" & z & "人"

End Sub

运行界面

5.我国身份证号码的第18位是由前17位通过公式计算出来的,请编程:要求从键盘上输入其一身份证号码的前17位,求出第18位

代码

Private Sub Command1_Click()

Dim W(), A(0 To 16), s%, y%

For i = 0 To 16

W = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)

A(i) = InputBox("请输入第" & i + 1 & "个数")

Print A(i);

s = s + A(i) * W(i)

Next i

Print

y = s Mod 11

y = y + 1

m = Choose(y, "1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2")

Print "第十八位是:" & m

End Sub

运行界面

6.有一个数列,前两项为1,从第三项开始,每一项都是前现两项之和,输出该数列前30项。

代码

Option Base 1

Private Sub Command1_Click()

Dim a!(1 To 30)

a(1) = 1: a(2) = 2

Print a(1); a(2)

For i = 3 To 30

a(i) = a(i - 1) + a(i - 2)

Print a(i);

Next i

End Sub

运行界面

7.随机产生15个不重复的A~Z之间的大写字母,存放在字符数组中。

代码

Private Sub Command1_Click()

Dim a(1 To 15)

For i = 1 To 15

a(i) = Int(Rnd * 26) + 65

Next i

For i = 1 To 14

For j = i + 1 To 15

If a(j) = a(i) Then a(j) = Int(Rnd * 26) + 65

Next j

Print Chr(a(i));

Next i

End Sub

运行界面

8.将从键盘上输入的一个数插入到数组指定位置。

代码

Private Sub Command1_Click()

Dim a(), l%, u%

Dim x%, k%

a = Array(1, 2, 3, 4, 5, 6, 7, 9, 10)

l = LBound(a)

u = UBound(a)

For i = l To u

Print a(i);

Next i

Print

k = InputBox("请输入要插入的位置")

x = InputBox("请输入要插入的数")

ReDim Preserve a(l To u + 1)

For i = u To k Step -1

k = i

a(i + 1) = a(i)

Next i

a(k) = x

For i = l To u + 1

Print a(i);

Next i

End Sub

运行界面

9.在数组中查找从键盘上输入的一个数,如果找不到输出相应信息,如果找到,则删除该元素。

代码

Private Sub Command1_Click()

Dim a(), p As Boolean, x%, l%, u%, i%, k%

a = Array(1, 5, 8, 9, 4, 6, 3, 7)

l = LBound(a): u = UBound(a)

For i = l To u

Print a(i);

Next i

Print

x = Val(InputBox("请输入要删除的数"))

For i = l To u

If x = a(i) Then

p = True: k = i

Exit For

End If

Next i

If p = True Then

For i = k + 1 To u

a(i - 1) = a(i)

Next i

u = u - 1

ReDim Preserve a(l To u)

For i = l To u

Print a(i);

Next i

Else

MsgBox "未找到!"

End If

End Sub

运行界面

10.求一个M行N列的矩阵四周元素之和,元素值可以随机产生,M、N从键盘输入。

代码

Private Sub Command1_Click()

Dim a%(), m%, n%, i%, j%, b%, c%, d%, e%, f%

m = InputBox("请输入该矩阵的行数")

n = InputBox("请输入该矩阵的列数")

ReDim a%(1 To m, 1 To n)

For i = 1 To m

For j = 1 To n

a(i, j) = Int(Rnd * 11)

Print Tab((j - 1) * 6 + 3); a(i, j);

Next j

Next i

For j = 1 To n

b = b + a(1, j)

e = e + a(m, j)

Next j

For i = 2 To m - 1

c = c + a(i, 1)

d = d + a(i, n)

Next i

f = b + c + d + e

Print

Print f

End Sub

运行界面

11.某校召开运动会有10人参加男子100米短跑决赛,运动员号码和成绩如表5-3所示,试编制程序,按成绩由高到低排序。

代码

运行界面

Option Explicit

Dim a() As Integer

Dim b() As Integer

Dim d As Integer

Dim m As Integer

Dim n As Integer

Private Sub Command1_Click()

Dim i As Integer, j As Integer

d = InputBox("请输入A矩阵行数", "提示")

n = InputBox("请输入A矩阵列数", "提示")

ReDim a(d, n) As Integer

For i = 1 To d

For j = 1 To n

a(i, j) = InputBox("请输入矩阵A", "提示")

Picture1.Print a(i, j);

Next j

Picture1.Print

Next i

Picture1.Print

End Sub

'矩阵B输入程序

Private Sub Command2_Click()

Dim c As Integer

Dim i As Integer, j As Integer

c = InputBox("请输入B矩阵行数", "提示")

文章标签: # To # Print # For