vb程序题:输入一个3*3矩阵(设该矩阵中没有相同的数),输出该矩阵中最大值和最小值所在的行号和列号。

如题所述

Private Sub Command1_Click()
Dim a(1 To 3, 1 To 3)
Dim max, min, hx, lx, hn, ln
For i = 1 To 3
For j = 1 To 3
a(i, j) = Val(InputBox("请输入数字!"))
Next j
Next i
min = a(1, 1)
max = min
hx = 1: lx = 1
hn = 1: ln = 1
For i = 1 To 3
For j = 1 To 3
If max < a(i, j) Then max = a(i, j): hx = i: lx = j
If min > a(i, j) Then min = a(i, j): hn = i: ln = j
Print a(i, j);
Next j
Print
Next i
Print "最大值位置:"; hx, lx
Print "最小值位置:"; hn, ln
End Sub追问

我主要是想知道
输入一个3*3矩阵(设该矩阵中没有相同的数)
怎么做的。
能帮我写一下吗,谢谢

追答

Private Sub Command1_Click()
Dim a(1 To 3, 1 To 3) As Integer
For i = 1 To 3
For j = 1 To 3
a(i, j) = Val(InputBox("请输入第(" + Str(i) + "," + Str(j) + ")数字!"))
For k = 1 To 3
For l = 1 To 3
If i = k And j = l Then
Exit For
Else
If a(i, j) = a(k, l) Then
j = j - 1
MsgBox "重复,请重新输入该数!"
Exit For
End If
End If
Next l
If l <= 3 Then Exit For
Next k
Next j
Next i
For i = 1 To 3
For j = 1 To 3
Print a(i, j);
Next j
Print
Next i
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-03
定义两个值min和max,都赋值为矩阵中第一个数,之后遍历矩阵,若有数值小于min或者大于max的,将该数值赋值给min或max,同时记下该数值的行号和列号。遍历过程结束后就可以得到了。代码如下:
#include<stdio.h>
struct number //定义两个结构体min,max,分别记录min和max的值、行号、列号
{
int num;
int line;
int row;
}min,max;
int main()
{
int i,j;
int a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
min.num=a[0][0]; //最初需注意将min和max的行列号赋初值
min.line=0;
min.row=0;

max.num=a[0][0];
max.line=0;
max.row=0;

for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(min.num>a[i][j]) //遍历数组,比较其值
{
min.num=a[i][j];
min.line=i;
min.row=j;
}
if(max.num<a[i][j])
{
max.num=a[i][j];
max.line=i;
max.row=j;
}
}
printf("最小值为:%d,其行列号分别为:%d,%d\n",min.num,min.line,min.row);
printf("最大值为:%d,其行列号分别为:%d,%d\n",max.num,max.line,max.row);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网