爱问知识人 爱问教育 医院库

VB6.0是不是有BUG?

首页

VB6.0是不是有BUG?

请看下面一段代码,是求二维数组鞍点的
Private Sub Command1_Click()
Dim a(3, 4), i, j, m, n, max, flag As Integer
flag = 0
For i = 1 To 3
    For j = 1 To 4
        a(i, j) = InputBox("")
    Next j
Next i
For i = 1 To 3
    For j = 1 To 4
        Print a(i, j); Space(3);
    Next j
    Print
Next i
For i = 1 To 3
    max = a(i, 1)
    For j = 1 To 4
        If a(i, j) >= max Then
            max = a(i, j)
            m = j
        End If
    Next j
    For n = 1 To 3 Step 1
        If max > a(n, m) Then Exit For
    Next n
    If n = 4 Then
        Print "鞍点= "; "a("; i; ","; m; ")"; "="; max
        flag = 1
    End If
Next i
If flag = 0 Then Print "No found!"
End Sub

问题来了,用1~12进行调试,鞍点应该是4,但是显示无法找到。
同样,如果给数组直接用1~12赋值,就可以找到鞍点是4。

那么问题就出现了,为什么直接输入无法找到,而直接赋值,并且数据相同却可以知道到,这个是不是VB6.0的问题?

提交回答
好评回答
  • 2007-03-28 18:27:22
    不是vb的bug,是你声明变量的写法有问题。
    像
    Dim a(3, 4), i, j, m, n, max, flag As Integer
    这样的写法只有最后一个变量flag认为是Integer型的,
    前面的a(3, 4), i, j, m, n, max都会等到赋值的时候才能决定类型。
    所以用Input输入之后默认不会识别成Integer型,而是当成String放到数组a里了。
    看这段程序,i、j这些变量倒是不要紧,初值就是数值;但如果就想用逗号的形式声明的话至少也要把a(3, 4)后面加上“ As Integer”才行。可以写成
    Dim a(3, 4) As Integer, i, j, m, n, max, flag As Integer
    

    1***

    2007-03-28 18:27:22

类似问题

换一换
  • 程序设计 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):