多分支结构
if...else if多分支结构
当一个问题有多种可能的条件,针对每种条件需要分别处理,执行不同语句时,采用if…else…if…语句。
语句格式:
if(表达式1) 语句块1;
else if (表达式2) 语句块2;
else if(表达式e3) 语句块3;
…
else 语句Sn+1;
对于一次条件判断,只能选择一个分支被执行,不能同时被执行。首先,计算表达式1,如果为真,执行语句块1,否则,计算表达式2,如果为真,执行语句块2,否则,…,以此类推,直至计算表达式n,如果为真,执行语句块n,如果为假,此时如果有语句块Sn+1,则执行,否则,执行if…else…if…语句的下一条语句。执行过程如图3所示。
图3 if…else if语句流程
switch语句
当用某个变量或表达式单独测试每一个可能的整常量时,使用switch开关语句处理多分支选择结构,可以简化程序的结构。
语句格式: switch (表达式)
{
case 常量标号1:语句序列1;
break;
case 常量标号2:语句序列2;
break;
…
case 常量标号n:语句序列n;
break;
default: 语句S;
}
其中:switch、case、default均为C的关键字;表达式必须基于同一个整型变量,用以控制程序的执行过程;常量标号i(i=1,2,…,n),其类型应与表达式类型相同,根据表达式计算结果,在常量标号中查找,标号具有唯一性;语句序列允许由一条语句或多条语句组成,但不需要复合语句形式;break作为中断语句,在完成case分支规定的操作后直接跳出switch结构;default用于处理switch结构的条件非正常操作。switch执行过程如图4所示。
图4 switch语句执行流程图
switch语句的执行过程:
Step1:计算表达式的值。
Step2:将计算结果值依次与每一个case的常量标号进行比较。如果与某个case标号相等,执行该case标号后的语句序列;语句序列中如有break语句,则退出switch结构,整个switch多分支选择结构处理结束。如果没有break语句,则无条件执行下一条case语句(此时不需要对下一个case标号进行判断);
Step3:如果没有找到与计算结果值匹配的标号,则检查是否存在default标号,若有,则执行default后的语句,并结束switch语句的执行。若没有,则直接结束switch语句的执行。