一道VB题目

Private Sub Command1_Click()
S = "ABCDEF": K = Len(S)
For I = 1 To K / 2
Mid(S, I, K - 2 * (I - 1)) = Mid(S, I + 1, K - 2 * I) & Mid(S, I, 1)
Print S
Next I
End Sub
s的值分别为BCDEAF
BDECAF
BDECAF
请问怎么做的啊?
Mid(S, I, K - 2 * (I - 1)) = Mid(S, I + 1, K - 2 * I) & Mid(S, I, 1)
是怎么运算的?

第1个回答  2011-03-11
len()求字符串的长度 Len(S)=6 k=6 k/2 =3
mid(字符串,起始位置,字符个数):该函数返回从字符串指定的位置开始的指定书目的字符
&是连接字符将两端的字符连接起来
所以第一次 I=1
等号前Mid(S, I, K - 2 * (I - 1)) =ABCDEF 之后 Mid(S, I + 1, K - 2 * I) =BCDE Mid(S, I, 1)=A 所以后边的值为BCDEA 等号后边的值开始将前者的值覆盖,未覆盖的保留,所以留下来的是BCDEAF
之后的循环也是如此,只是注意每次改变的时候s的值已经改变,应该在改变s值的基础上进行运算
Mid(S, I, K - 2 * (I - 1)) = Mid(S, I + 1, K - 2 * I) & Mid(S, I, 1)
就是后者将s中从 I 到K - 2 * (I - 1))的部分覆盖替换,s其他部分不变
第2个回答  2011-03-12
Mid(S, I, K - 2 * (I - 1)) = Mid(S, I + 1, K - 2 * I) & Mid(S, I, 1)
表达式左边是用的mid语句,含义和用法如下:
含义:在一 字符串 (String) 变量中以另一个字符串中的字符替换其中指定数量的字符。
Mid(stringvar, start[, length]) = string
Mid 语句的语法具有下面几个部分:
部分 描述
stringvar 必要参数。被更改的字符串变量名。
start 必要参数;Variant (Long)。stringvar 中被替换的字符开头位置。
length 可选参数;Variant (Long)。被替换的字符数。如果省略,string将全部用上。但被替换的字符数量总是小于或等于 stringvar 的字符数。
string 必要参数。字符串表达式,替换部分 stringvar 的字符串。
所以上边表达式左边语句的意思是对S操作,把它从第I个字符开始的K - 2 * (I - 1))个字符用表达式右边字符串Mid(S, I + 1, K - 2 * I) & Mid(S, I, 1)替换。
表达式右边就不用说了吧,是普通MID函数的用法,字符串截取。本回答被提问者采纳
第3个回答  2011-03-11
i s Mid(s, i, k - 2 * (i - 1)) Mid(s, i + 1, k - 2 * i) Mid(s, i, 1)
1 BCDEAF BCDEAF CDEA B
2 BDECAF DECA EC D
3 BDECAF EC E
将结果全部细节输出就能看懂了!
相似回答