紫竹姑娘今日上机考试完毕,翘着小辫唱着“哇哈哈”喊着“卖糕的”,奔向论坛报捷。
考试的前夜,女孩紫竹在论坛发了一个关于在列表框中排列一个右对齐的三角形字符列表问题(如图所示)。我看了一下觉得这个问题很简单,便写了一个函数给她。函数如下:
Function strlist1() As String
Dim i As Long, j As Long
Dim str As String
str = ""
For i = 1 To 5
For j = 1 To (i - 1) * 2 + 1
str = str & "×"
Next
str = str & ";"
Next
strlist1 = str
End Function
晚上看完《决战大西南》后,有想起这个问题来,觉得解法还是有点问题,因为这样的结果,将产生的是一个左对齐的排列。便认为用Format函数规定字符串长度,应该可以解决这个问题,便写了函数strlist2。
奇怪的是排列没有变化,于是看了看属性值,似乎应该加引号。就在函数strlist2基础上给字符串加上引号,写成strlist3。
有点鬼打架,strlist3的结果是排列为一个金字塔形。于是我想应该与半角全角有关,Format可能无法解决全角字符长度。便决定用Space函数前补空格,以此思路写了strlist4。可是排列依然是金字塔形,仍不能实现右对齐排列。百思不得其解中,不愿多想,便寻周公去了。
今日看见“卖糕的”紫竹姑娘,突有想起此问题。于是写了函数strlist5,强行前置空格。倒是实现了右排列,但怎么想怎么觉得这个问题的解法有问题。于是发此贴求解疑惑。
点击下载此附件
---------------------------------------------------------------------------------------------------------------------
紫竹姑娘三部曲:
1、《有个姑娘叫紫竹》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5153
2、《一份崇高两份伟大》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5154
3、《卖糕的紫竹姑娘》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5161