编程小博士(18)
软件世界
使用多个分支来解决问题
问:按上期小博士所讲的,一个分支只能解决两种情况,那如果出现十种八种的情况,用单分支来解决岂不是太麻烦了,有没有更简洁的办法吗?
小博士:如果条件引发的情况有多于3种,我们一般就采用多分支办法来解决。多分支方法,一是考虑用多分支语句select,或通过单分支if then 去组合;如果觉得前二者都比较麻烦,还应考虑或者说首先考虑有没有其他的解决办法。一是通过分支的顺序结构来解决,二是利用用循环。
我们还是以上期讲到的例子来看看,如何使用多个分支来解决问题。
示例:已知三个数a、b、c,请按从大到小排序。
问题的分析
如果像上期我们讲的通过单分支语句来做,程序的结构便成了分支中套分支的形式。如果需要排列的数据多了,肯定会导致我们分析问题显得异常复杂。怎样改变这种局面呢?
现在,我们可以定格最后输出的结果,即输出也是a、b、c。大小关系便是a>b>c。处理过程要做的正是将输入的6种结果可能情况,转化成最后的一种大小降序排列的形式,也就是说,a的赋值为最大,b第二,c最小。
上述程序,便是先将a和b、c比较,将大值放入a中。这样处理就需要两个步骤:
(1)比较a、b,使a>b
(2)比较a、c,使a>c
有了最大值,中间的值如何取得呢?只要将b和c进行比较,使b>c就行了。这样结果就出来了。
Private Sub CmdExit_Click() '退出
Unload Me
End Sub
Private Sub CmdSort_Click() '排序
' 输入
a = Val(TxtA.Text)
b = Val(TxtB.Text)
c = Val(TxtC.Text)
'比较
If a > b Then
Else
d = a
a = b
b = d
End If
If a > c Then
Else
d = a
a = c
c = d
End If
If b > c Then
Else
d = b
b = c
c = d
End If
'输出
TxtList.Text = Str(a) + “,” + Str(b) + “,” + Str(c)
End Sub
(上程序在Win2000、VB6.0下调试通过)
小结
对于一个问题,有时变换一下思路,解决起来可能变得一下子简单了许多。遇到分支情况很多时,往往通过这种方法就能将问题解决。