编程小博士(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下调试通过)

  小结

  对于一个问题,有时变换一下思路,解决起来可能变得一下子简单了许多。遇到分支情况很多时,往往通过这种方法就能将问题解决。