大家是否还记得曾经春晚上赵本山和宋丹丹演出的一个经典的小品,是有关考脑筋急转弯的,其中有宋丹丹问赵本山:“把大象装冰箱需要几步?”。赵本山顿时一懵,答不出来,宋丹丹笑着说:“只需3步:第一步把冰箱门打开,第二步把大象装进去,第三步把冰箱门关上。”惹得观众哄堂大笑。
为什么观众会笑?相信大家都明白,真正想把一头大象装进冰箱可不是件容易的事。首先是到哪儿找一个能放下大象的冰箱呢?好吧,即使有个厂家愿意生产出这么大的冰箱,现在冰箱门打开了,大象死活不愿意进去怎么办?再者,就算大象被引诱进冰箱,门还没关,它又突然跑出来了怎么办?一大堆令人挠头的问题和不确定的因素存在,所以想把大象装冰箱并非一件轻而易举的事。
编程与其有相似之处,在某些时候,可能会认为程序所要求的功能比较简单,觉得通过几条语句的依次(顺序)执行就可以轻松完成,以这种方式编写的程序就是具有顺序执行流程的结构。也许大部分情况下,程序都能正常地运行,也能得到正确的结果。但是,万一,不小心,会不会……由于用户不小心输错数据而导致程序的错误或者异常,甚至造成系统的崩溃?这些问题在代码编写的时候就应该充分地考虑,我们需要未雨绸缪,让编写出的程序代码能够更加健壮。例如在用户输错数据的情况下,程序能够及时发现并作出反应,例如有针对性地给出信息提示,并让程序能够重新获取用户的输入,直至输入正确。即在依次(顺序)执行的流程结构中加入检查、判断和重新获取用户输入等这些非顺序执行的流程结构,让程序能够自己发现错误、纠正错误。
C语言中按照程序的执行流程的不同,分为顺序结构、分支结构和循环结构。下面就用一个简单的案例来展示C语言的3种流程结构。