第四十三节:if,else if,else的5种组合判断语句。 if,else if,else可以组成5种组合判断语句,这类组合语句可以这样通俗的解读:在众多条件判断中,先从第一个条件开始判断,如果第一个条件是真,那么不管后面的条件是否为真,都不再判断,直接执行条件1大括号后面的语句,组合语句中其它剩下的条件不再判断直接跳过,否则,就挨个条件往下判断,只要其中一个条件满足,就不再判断剩余的条件,也就是我们日常所说的多选一,甚至某些组合语句如果所有条件都不满足,那么什么也不选。总之,在如此众多的条件中,最多只能执行一个条件后面大括号的语句。组合语句还有一个规律:if语句只能出现在第一个条件判断,而且只能出现一次;else只能出现在最后一个条件判断,而且也只能出现一次;而else if语句总是出现在中间,绝对不能出现在第一个条件判断,如果没有else,也可以出现在最后的条件判断。接下来挨个仔细分析这5种组合语句的特点。 第一种: if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else //else只能出现最后,并且也只能出现一次。 { 语句2; } 分析:如果“条件1”为真,就直接执行“条件1”后面大括号的“语句1”,不再执行else后面的“语句2”。否则,如果“条件1”为假,那么就不执行“条件1”后面大括号的“语句1”,而是直接执行else后面的大括号“语句2”。简单概括就是两个必选一个,如果第一个条件1为假,就直接执行else后面大括号里的语句,也就是本例子中的“语句2”。 第二种: if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间,可以出现多次 { 语句2; } 分析:如果“条件1”为真,就直接执行“条件1”后面大括号的“语句1”,这时不管else if后面的“条件2”是否为真,都不再判断的“条件2”,这种情况当然也不会执行到“语句2”。否则,如果“条件1”为假,那么就不执行“条件1”后面大括号的“语句1”,而是继续判断else if后面的“条件2”,如果“条件2”为真,就会执行后面大括号的“语句2”,否则如果“条件2”也为假,那么“语句2”也不会执行。简单概括就是在两个条件中最多只能选一个,如果两个条件都为假,那么都不选。 第三种: if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间,可以出现多次 { 语句2; } else //else只能出现最后,并且也只能出现一次。 { 语句3; } 分析:如果“条件1”为真,就直接执行“条件1”后面大括号的“语句1”,这时不管else if后面的“条件2”是否为真,都不再判断的“条件2”,这种情况当然也不会执行到后面的“语句2”,更加不会执行到else 后面的“语句3”。否则,如果“条件1”为假,那么就不执行“条件1”后面大括号的“语句1”,而是继续判断else if后面的“条件2”,如果“条件2”为真,就会执行后面大括号的“语句2”,而else后面的“语句3”就不会被执行到,否则如果“条件2”也为假,那么“语句2”也不会执行,此时就直接执行else后面的“语句3”。简单概括就是在三个条件中必须选一个,如果前面两个条件都为假,那么就直接执行else后面大括号里的语句,也就是本例子中的“语句3”。 第四种: if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间,可以出现多次 { 语句2; } …… else if(条件N) //else if只能出现中间,可以出现多次 { 语句N; }
分析:从“条件1”开始往下判断,只要有一个条件满足了,就执行当前条件后面大括号的语句,剩余的条件不再判断直接跳过,如果所有的条件都不满足,那么里面的语句都不执行。简单概括就是在N个条件中最多只能选一个,如果所有的条件都为假,那么都不选。 第五种: if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间,可以出现多次 { 语句2; } …… else if(条件N) //else if只能出现中间,可以出现多次 { 语句N; } else { 语句N+1; }
分析:从“条件1”开始往下判断,只要有一个条件满足了,就执行当前条件后面大括号的语句,剩余的条件不再判断直接跳过,如果所有的条件都不满足,那么就直接执行else后面大括号里的语句,也就是本例子中的“语句N+1”。简单概括就是在N+1个条件中必须选一个,如果前面所有N个条件都为假,最后就直接执行else后面大括号的语句,也就是本例子中的“语句N+1”。 现在编写一个程序来实验上述5种组合语句。最后把程序编译后下载到坚鸿51学习板观察结果。请直接复制第十节模板程序,修改的main程序代码如下:
void main() //主程序
{
/*---C语言学习区域的开始---------------------------------------------------------------------------*/
//x这个变量作为条件判断的变量
unsigned char x=5;
//a,b,c,d,e这5个变量作为输出判断结果,0代表什么语句都没执行,1代表执行了语句1,
//2代表执行语句2,3代表执行语句3,4代表执行语句4,5代表执行语句5。
unsigned char a=0;
unsigned char b=0;
unsigned char c=0;
unsigned char d=0;
unsigned char e=0;
//第一种
if(x>6) //x默认是5
{
a=1; //语句1
}
else
{
a=2; //语句2
}
//第二种
if(x>6) //x默认是5
{
b=1; //语句1
}
else if(x==7) //x默认是5
{
b=2; //语句2
}
//第三种
if(x>6) //x默认是5
{
c=1; //语句1
}
else if(x==7) //x默认是5
{
c=2; //语句2
}
else
{
c=3; //语句3
}
//第四种
if(x>6) //x默认是5
{
d=1; //语句1
}
else if(x==7) //x默认是5
{
d=2; //语句2
}
else if(x==5) //x默认是5
{
d=3; //语句3
}
else if(x==4) //x默认是5
{
d=4; //语句4
}
//第五种
if(x>6) //x默认是5
{
e=1; //语句1
}
else if(x==7) //x默认是5
{
e=2; //语句2
}
else if(x==5) //x默认是5
{
e=3; //语句3
}
else if(x==4) //x默认是5
{
e=4; //语句4
}
else
{
e=5; //语句5
}
GuiWdData0=a; //把a这个变量结果放到窗口变量0里面显示
GuiWdData1=b; //把b这个变量结果放到窗口变量1里面显示
GuiWdData2=c; //把c这个变量结果放到窗口变量2里面显示
GuiWdData3=d; //把d这个变量结果放到窗口变量3里面显示
GuiWdData4=e; //把e这个变量结果放到窗口变量4里面显示
/*---C语言学习区域的结束---------------------------------------------------------------------------*/
while(1)
{
initial();
key_service();
display_service();
}
}
查看运算结果的方法。如何在坚鸿51学习板上观察变量?按下S1或者S5按键即可切换显示不同的窗口,从而显示不同的变量。按下S9按键不松手就可以切换到十六进制的显示界面,松开手后会自动切换到十进制的界面。16个LED灯显示的就是当前变量的二进制数,亮代表1,灭代表0。上坚鸿51学习板观察程序执行的结果如下: 变量a为2。(2代表执行了语句2) 变量b为0。(0代表什么语句都没执行) 变量c为3。(3代表执行了语句3) 变量d为3。(3代表执行了语句3) 变量e为3。(3代表执行了语句3)
下节预告:一维数组。 (未完待续)
|