
5个回答
2013-09-21
展开全部
出现越界是因为你的数组下标是从1开始的,而下面这段代码将有可能出现下标为0的情况:
temp = a(i)
j = i - 1
While a(j) > temp
a(j + 1) = a(j)
j = j - 1
Wend
例如:假设a(1)=50,a(2)=10,则有a(j)>temp,将执行上面的循环,结果是j=j-1=1-1=0,此时再执行判断语句While a(j) > temp时就相当于执行While a(0) > temp,而你的下标是从1开始的,即没有a(0)的说法,故会出现越界情况……
可以做如下修改:将下面代码
While a(j) > temp
a(j + 1) = a(j)
j = j - 1
Wend
修改为:
Do While A(j) > temp
A(j + 1) = A(j)
j = j - 1
If j = 0 Then '当J=0时退出循环
Exit Do
End If
Loop
还有,你的目的应该是打印排序后的10个数字吧?而你下面的代码只是打印了前9个:
'到这儿,说越界
p = Str(a(1))
For i = 2 To 9 '这里是不是出错了?
p = p & "," & Str(a(i))
Next
Label2.Caption = LTrim(p)
End Sub
应该将For i = 2 To 9 改为For i = 2 To 10
看得明白吧?
temp = a(i)
j = i - 1
While a(j) > temp
a(j + 1) = a(j)
j = j - 1
Wend
例如:假设a(1)=50,a(2)=10,则有a(j)>temp,将执行上面的循环,结果是j=j-1=1-1=0,此时再执行判断语句While a(j) > temp时就相当于执行While a(0) > temp,而你的下标是从1开始的,即没有a(0)的说法,故会出现越界情况……
可以做如下修改:将下面代码
While a(j) > temp
a(j + 1) = a(j)
j = j - 1
Wend
修改为:
Do While A(j) > temp
A(j + 1) = A(j)
j = j - 1
If j = 0 Then '当J=0时退出循环
Exit Do
End If
Loop
还有,你的目的应该是打印排序后的10个数字吧?而你下面的代码只是打印了前9个:
'到这儿,说越界
p = Str(a(1))
For i = 2 To 9 '这里是不是出错了?
p = p & "," & Str(a(i))
Next
Label2.Caption = LTrim(p)
End Sub
应该将For i = 2 To 9 改为For i = 2 To 10
看得明白吧?
2013-09-21
展开全部
Dim a()Private Sub Command1_Click()Clsb = Val(InputBox("输入一个数值:"))n = UBound(a)ReDim Preserve a(n + 1)For i = n To 0 Step -1 If b >= a(i) Then a(i + 1) = b Exit For Else a(i + 1) = a(i) End IfNextIf i < 0 Then a(0) = bFor i = 0 To n + 1Print a(i);NextEnd SubPrivate Sub Form_Load()a = Array(2, 6.5, 7, 20.4, 100, 920)End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-21
展开全部
菜单栏 windows和tool 中间那个.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-21
展开全部
3
Dim a()
Private Sub Command1_Click()
Cls
b = Val(InputBox("输入一个数值:"))
n = UBound(a)
ReDim Preserve a(n + 1)
For i = n To 0 Step -1
If b >= a(i) Then
a(i + 1) = b
Exit For
Else
a(i + 1) = a(i)
End If
Next
If i < 0 Then a(0) = b
For i = 0 To n + 1
Print a(i);
Next
End Sub
Private Sub Form_Load()
a = Array(2, 6.5, 7, 20.4, 100, 920)
End Sub
6
Sub tonji(ByVal st1 As String)
'统计出大写字母多少个,小写字母多少个,数字多少个
n = Len(st1)
For i = 1 To n
a = Asc(Mid(st1, i, 1))
Select Case a
Case 48 To 57
suzi = suzi + 1
Case 65 To 90
Daxie = Daxie + 1
Case 97 To 122
Xiaoxie = Xiaoxie + 1
End Select
Next
Print "大写字母有:"; Daxie; "个"
Print "小写字母有:"; Xiaoxie; "个"
Print "数字有:"; suzi; "个"
End Sub
Dim a()
Private Sub Command1_Click()
Cls
b = Val(InputBox("输入一个数值:"))
n = UBound(a)
ReDim Preserve a(n + 1)
For i = n To 0 Step -1
If b >= a(i) Then
a(i + 1) = b
Exit For
Else
a(i + 1) = a(i)
End If
Next
If i < 0 Then a(0) = b
For i = 0 To n + 1
Print a(i);
Next
End Sub
Private Sub Form_Load()
a = Array(2, 6.5, 7, 20.4, 100, 920)
End Sub
6
Sub tonji(ByVal st1 As String)
'统计出大写字母多少个,小写字母多少个,数字多少个
n = Len(st1)
For i = 1 To n
a = Asc(Mid(st1, i, 1))
Select Case a
Case 48 To 57
suzi = suzi + 1
Case 65 To 90
Daxie = Daxie + 1
Case 97 To 122
Xiaoxie = Xiaoxie + 1
End Select
Next
Print "大写字母有:"; Daxie; "个"
Print "小写字母有:"; Xiaoxie; "个"
Print "数字有:"; suzi; "个"
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-21
展开全部
用编程工具
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询