中易网

一道二级VB程序题(考试题目

答案:1  悬赏:80  
解决时间 2021-04-28 00:54
  • 提问者网友:喜遇你
  • 2021-04-27 08:25
Private Sub f(s As String)
Dim i As Integer, n As Integer, c As Integer
n = Len(s)
If n Mod 2 = 1 Then c = Mid(s, n \ 2 + 1, 1)
For i = 1 To Len(s) \ 2
c = Mid(s, Len(s) + 1 - i, 1) + c + Mid(s, i, 1)
Next i
s = c
End Sub
Private Sub Command1_Click()
Dim x As String
x = InputBox("x=")
Call f(x)
Print x
End Sub

1.为什么输入abc后,显示是cba?
2.为什么输入abcd后,显示是cdad?
要解释一下,最好清清楚楚的
最佳答案
  • 二级知识专家网友:抱不住太阳的深海
  • 2021-04-27 08:58

问题一:因为输入“abc” 后赋值给x,再调用f函数,并将x传递给s,(注意是地址传递)。


执行 n = Len(s) 后 n为字符串长度3,


执行这一句 If n Mod 2 = 1 Then c = Mid(s, n \ 2 + 1, 1) 长度为奇数时会执行 c = Mid(s, n \ 2 + 1, 1),即对S串第2个位置截取1个字符,即c=b


For i = 1 To Len(s) \ 2
c = Mid(s, Len(s) + 1 - i, 1) + c + Mid(s, i, 1)
Next i
此循环因为字符串长度为3,所以只执行一次。意思为截取S串最后一个字符 连接上c变量,再连接字符串第一个字符。即为cba

问题二:


因为输入“abcd” 后赋值给x,再调用f函数,并将x传递给s,(注意是地址传递)。


执行 n = Len(s) 后 n为字符串长度4,


执行这一句 If n Mod 2 = 1 Then c = Mid(s, n \ 2 + 1, 1) 长度为偶数,条件为假 不执行语句。c为空


For i = 1 To Len(s) \ 2
c = Mid(s, Len(s) + 1 - i, 1) + c + Mid(s, i, 1)
Next i
此循环因为字符串长度为4,所以只执行2次。


循环第一次:c=S串最后一个字符连接上c变量,再连接字符串第一个字符。因为C为空故连接出来后的c=da


循环第二次:


由于i加1为2后


c=S串 Mid(s, Len(s) + 1 - i, 1) 为截取第3个字符即“c”,在连接上变量C即“da”,再连接Mid(s, i, 1)
即s串第二个字符即“b”。结果C就等于cdab.



你问题中存在语法问题


1.Dim i As Integer, n As Integer, c As String


2.问2结果为cdab.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息