分支语句
分支语句:指的是通过条件判断语句实现多分支的一种语句
分支语句有哪些:if 语句和 switch 语句
if 语句和 switch语句
if 语句
在所有的 if 分支语句中,如果要在语句体中执行多条语句则要用花括号将整个语句体括起来
if 语句的语法格式
if 语句的语法格式:
if (表达式)
{
语句体;
}
if 语句的执行情况
if 语句是如何执行的:if 语句里的表达式如果为 true 的话,就会执行 if 语句中的语句体,如果为 false 的话,就不会执行if语句中的语句体。
表达式是 true 还是 false 可以根据这个来判断:在C语言中,0表示假,非0表示真。
if语句的代码示例:
//输入 a 和 b 的值,判断 a 是否大于 b 。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
if(a > b)
{
printf("a > b\n");
}
return 0;
}
这个例子中,if 语句的表达式是 a > b。
当 a > b 时,if 语句中的表达式就会为 true,然后执行 if 语句中的语句体。
当 a < b 时,if 语句中的表达式就会为 false,就不会执行 if 语句中的语句体。
2. if - else语句
else 是和 if 语句搭配起来使用的。
if - else 语句的语法格式
else 的使用方法如下:
if(表达式)
{
语句体1;
}
else
{
语句体2;
}
if - else 语句的执行情况
else语句的执行情况:if 语句里的表达式如果为 true 的话,就会执行if 语句中的语句体,如果为 false的话,就会执行 else 语句中的语句体。
if - else 语句的代码示例:
让我们来完善一下我们刚刚的代码示例。
//输入 a 和 b 的值,判断 a 是否大于 b,如果a > b,则输出a > b。如果a < b 则输出 a < b。
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
if(a > b)
{
printf("a > b\n");
}
else
{
printf("a < b\n");
}
return 0;
}
这个例子中,if 语句的表达式是 a > b。
当 a > b 时,if 语句中的表达式就会为 true,然后执行 if 语句中的语句体。
当 a < b 时,if 语句中的表达式就会为 false,然后执行 else 语句中的语句体。
3. if 的嵌套
if - else 语句是一个多分支语句它的语法格式如下:
if 的嵌套语句的语法格式
if(表达式1)
{
语句体1;
}
else if(表达式2)
{
语句体2;
}
else if(表达式3)
{
语句体3;
}
···
else
{
语句体n;
}
if 的嵌套语句的执行情况
else - if 语句的执行情况:当if 语句里的表达式为 true 时,就会执行 if 语句中的语句体,当 if 语句里的表达式为 false 时,就会判断每一个 else if 语句中的表达式是否为 true。若为 true 则执行该else if 分支,若为 false 则执行 else 分支。
if的嵌套语句的代码示例:
//根据输入的年龄输出年龄段
#include <stdio.h>
int main()
{
int age = 0;
printf("age = ");
scanf("%d", &age);
if(age <= 8)
{
printf("幼年");
}
else if(age > 8 && age <= 12)
{
printf("少年");
}
else if(age > 12 && age <= 18)
{
printf("青少年");
}
else
{
printf("成年");
}
return 0;
}
这个例子中:if 语句中的表达式是 age <= 8 。
当 age <= 8 时,if 语句中的表达式就会为 true。
然后执行 if 语句中的语句体,而不执行 else if 和 else 语句中的语句体。
当 age > 8 时,if 语句中的表达式就会为 false。
然后向下执行直到找到 else if 语句中表达式中为 true 的语句并执行其语句体。
如果 else if 语句中的表达式都为 false 那就会执行 else 语句中的语句体。
5.switch 语句
switch - case 语句的语法格式
switch(表达式)
{
case 0:
语句体1;
break;
case 1:
语句体2;
break;
case 2:
语句体3;
break;
···
case n:
语句体n;
break;
default:
语句体3;
break;
}
在switch - case 语句中 switch 语句和 case 语句的表达式只能为整型常量表达式,不能为浮点型变量表达式
switch - case 语句的执行情况
1.先执行switch语句的表达式
2.然后在case语句中寻找符合 switch 语句表达式的那个case语句的表达式
3.以此为入口进入switch - case 分支语句并执行case语句中的语句体
4.在执行完了case语句中的语句体后,如果case语句的语句体后有break就会直接退出switch - case分支语句不执行下面的case语句和default语句
5.如果case语句的语句体后没有break就会一直向下执行case语句和default语句直到退出switch - case分支语句
switch - case语句代码示例:
//根据输入的成绩返回S、A、B、C、D、E四个等级
#include <stdio.h>
int main()
{
int grade = 0;
printf("grade = ");
scanf("%d", &grade);
switch(grade / 10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("E");
break;
case 6:
printf("D");
break;
case 7:
printf("C");
break;
case 8:
printf("B");
break;
case 9:
printf("A");
break;
case 10:
printf("S");
break;
default:
printf("输入错误,请重新输入");
break;
}
return 0;
}
在这个例子中,switch的表达式是grade / 10,由于switch语句中只能存放整形常量表达式,这就会导致grade / 10 最后的结果会是一个整数。
当grade / 10 得出的结果是(0 <= grade < 6)时,就会从 case 0: 到 case 5: 中寻找入口进入switch语句,然后一直向下执行直到找到break退出switch语句或者一直执行完switch语句
当grade / 10 得出的结果是(60 <= grade < 70)时,就会从case 6:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当grade / 10 得出的结果是(70 <= grade < 80)时,就会从case 7:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当grade / 10 得出的结果是(80 <= grade < 90)时,就会从case 8:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当grade / 10 得出的结果是(90 <= grade < 100)时,就会从case 9:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当grade / 10 得出的结果是100时,就会从case 10:这个入口进入switch语句,然后通过break语句跳出switch - case分支语句
当输入的值都不符合case语句中的表达式时就会走default语句
switch语句中的default
switch语句中的default可以放在switch语句中的任意位置,并不是只能放在case语句的后面或switch语句的末尾