请问这道vb题目问题出在哪里?

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:53:48
题目:建立一个文本框和两个命令按钮.在文本框中输入内容,单击"开始"后,把文本框中的字符按照字符ascii码的的顺序从小到大排序,然后输出在窗体上,按"结束"退出应用程序.
做出来的程序如下,但是运行时输出的新旧字符串是一样的:
Option Explicit
Private Sub Command1_Click()
Dim x As String
Dim y As String
Dim c() As String
Dim n As Integer
Dim i As Integer, j As Integer
Dim temp As String
x = Text1.Text
n = Len(x)
ReDim c(n) As String
For i = 1 To n
c(i) = Mid(x, i, 1)
Next i

For i = i To n - 1
For j = i + 1 To n
If c(i) > c(j) Then
temp = c(i): c(i) = c(j): c(j) = temp
End If
Next j
Next i

y = ""
For i = 1 To n
y = y & c(i)
Next i
Print "原始字符串:"; x
Print
Print "新的字符串:"; y
End Sub

Private Sub Command2_Click()
End
End Sub

问题是不是出在ASCII码没有设置还是其他?应该怎么改?
此外,Option Explicit是什么意思?在什么情况下使用?
谢谢!
很感谢! 但是把c(i) = Mid(x, i, 1) 改成

WIN98 VB6调试通过
Option Explicit是什么意思
Option Explicit每个VB代码文件开头都有这个
指针 i 第一次用过后是n+1, 要重新付值
Option Explicit
Private Sub Command1_Click()
Dim x As String
Dim y As String
Dim c() As String
Dim n As Integer
Dim i As Integer, j As Integer
Dim temp As String
x = Text1.Text
n = Len(x)
ReDim c(n) As String
For i = 1 To n
c(i) = Mid(x, i, 1)
Next i
i=0 '指针 i 第一次用过后是n+1, 要重新付值
For i = i To n - 1
For j = i + 1 To n
If c(i) > c(j) Then
temp = c(i): c(i) = c(j): c(j) = temp
End If
Next j
Next i

y = ""
For i = 1 To n
y = y & c(i)
Next i
Print "原始字符串:"; x
Print
Print "新的字符串:"; y
End Sub

Private Sub Command2_Click()
End
End Sub

Option Explicit是强制声明变量.只能说是推荐使用.

先说Option Explicit的作用吧
Option Explicit就是让该当前模块所有变量必须显示声明,如果有变量没有dim就会报错,不加Option Explicit不会报错。好的编