一.概念
C语言是结构化的程序设计语言,所谓结构化,可以看成一个程序是由多个模块构成,每个模块具体特定的功能,每个模块包含一个或多个不同结构,具有结构清晰,易读易理解的优点。结构化,就像拼积木搭模块一样,C语言的结构包含顺序结构,选择结构,循环结构,这三大结构组成C语言这座大厦最基础的模块,if,switch是实现选择结构的最基础“积木”,while,for则是循环结构的。
二.用法
1.if语句
if有条件,假设,如果的意思,既然是假设,自然有成立与不成立两种对立的情况,两种情况互补,没有其他可能,C语言中,if语句也是如此,不过在C语言中更准确的表达是真(True)和假(False),0表示假,非0表示真,if语句的表达式(条件)为真则执行条件代码,假则不执行,跳过条件代码。如图所示,就是if的运行逻辑。
if对应的语法则较为简单。若有多个条件表达式则用大括号包括。
当然if通常还和另一个叫做else的一同出现,上述图片中描述的是用if来判断是否执行条件代码,但也有情况是真和假执行不同的代码,例如用if判断一个数是奇数还是偶数,无论判断的表达式真假,都得有一段代码来执行表达该数是什么,此时便要使用if搭配else的用法了。下图形象表示了两者的区别。
当然如果有更多情况,不在只是简单的真假两方面了,就得连用if-else if-...-else的语句了,这是if的嵌套使用,具有多重if连用表达,不同的if判断条件执行不同的代码,例如等边三角形,等腰三角形,常三角形,都具有不同的判断条件,便可写入不同的判断条件,输出对应的三角形类型。
Tips:在其他if else出现多次的情况,else默认与最近的if配对,这可能会导致偏离原有想法,因此请随时记住带大括号或使用以上的标准形式。
2.switch语句
同样是c语言中实现分支结构的switch语句其实就是if else 的特殊形式。用于判断结果有多种情况的情形,可与上文的if-else if-else类比。标准语法如下。
值得注意的是,其中的expression必须是整形表达式,不能是float类型。而case后的值(如1,2)也必须是整形常量表达式。使用中,通常会在case后的代码最后加上break,否则程序依旧会向下继续进行,可以看作expression是几,程序就从对应的case处开始从上到下开始运行,而break就能进行完该case层的代码后终止。
3.while语句
while语句,作为实现c语言循环结构的基本组件,与if语句十分相像,循环不可能无限循环下去,总得有个条件判断,在合适时机进行终止,因此while同样也有条件表达式的存在,与if的不同在于,while通过条件表达式判断执行代码后,仍会回到原点再进行判断继续执行,若判断为假才和if一样跳出该语句,如此达到循环的目的。
在循环中经常使用break和continue。在此介绍下两者,break顾名思义,打破循环就用break,在循环中遇到break,就会直接跳出当前循环(在多重循环中,一个break只跳出所在当前循环),结束掉当前循环。而continue便是跳过该次循环的后续代码,直接进行下一次循环。
简单看完break和continue后,再来看看循环所具备的三个要素,即初始化,判断,和调整.
初始化条件判断所需要的值,条件判断来决定循环的进行与否,而调整则是在循环中改变一些量从而使得在某次循环中不满足判断条件从而结束循环.要想合理地进行循环,这三点必不可少.
4.for语句
在看while循环时你是否觉得三个要素过于分散?但是在for循环中,三位一体,这三个要素都集中在了一个点上,使得更加集中,也更加利于代码的维护,因此从形式上讲,fof循环优于while循环.
在for循环中,break和continue同样可用,break用来终止循环,无论是while还是for都一样,但在continue的使用中会存在一些差异.
就如上面的例子,左程序打印5后便陷入死循环无法停止,而右程序顺利停止只是少打印了6.分析一下,continue是跳过此次循环的后续代码后继续执行循环,左程序中便跳过了printf和i=i+1,因此跳过后再次进入循环时i仍然为6,依旧继续执行continue,而右程序仅仅只跳过了printf,i=i+1仍然可以进行,这就是两者在使用continue时的区别.