Mid()的疑问

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:41:35
假定有以下函数过程:
Function Fun(S As String) As String
Dim s1 As String
For i = 1 To Len(S)
s1=UCase(Mid(S,i,1))+s1
Next i
Fun = s1
End Function
在窗体上画一个命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim Str1 As String,Str2 As String
Str1 = InputBox("请输入一个字符串")
Str2= Fun(Str1)
Print Str2
End Sub
程序运行后,单击命令按钮,如果在输入对话框中输入字

符串"abcdefg"则单击"确定"按钮后在窗体上的输出结果为

______。

解析如下:
本题是把输入的字符串反向大写显示。
跟踪结果:
S=“abcdefg”
LEN(S)=7
I=1 S1=UCASE(“g”)+S1=“G”
I=2 S1=UCASE(“f”)+S1=“GF”
I=3 S1=UCASE(“e”)+S1=“GFE”
I=4 S1=UCASE(“d”)+S1=“GFED”
I=5 S1=UCASE(“c”)+S1=“GFEDC”
I=6 S1=UCASE(“b”)+S1=“GFEDCB”
I=7 S1=UCASE(“a”)+S1=“GFEDCBA”。

请问为什么s1=UCase(Mid(S,i,1))+s1这个语句会首先把G变成大写呢?Mid(S,i,1)首先得到的不是a吗?

你说的对,其实过程应该是这样:
I=1 S1=UCASE("a")+S1="A" + ""
I=2 S1=UCASE("b")+S1="B"+ "A"="BA"
I=3 S1=UCASE("c")+S1="C"+"BA"="CBA"
……

你没错,书错了,你看的是不是盗版书啊?如果不是,只能说明现在的编辑...