C语言分支语句
1、if 语句
if
语句的语法形式为
if(表达式)
{
语句;
}
表达式中,若表达式判断为真,则执行语句;若为判断为假,则不执行语句。
其中 非0 表示为真,0表示假。
如果一个数不是奇数,那就是偶数了,如果任意一个整数,我们要清楚的判断是奇数还是偶数怎么表达式呢?
此时就要用到if...else
语句了,语法形式为
if ( 表达式 )
{
语句1;
}
else
{
语句2;
}
若表达式判断为真,则执行语句1,若表达式判断为假,则执行语句2。if...else...
语句可以进行嵌套。
例如:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)
{
printf("输⼊的数字是0\n");
}
else if(num > 0) //这⾥的if 相当于嵌套在else语句中,形成了嵌套结构
{
printf("输⼊的数字是正数\n");
}
else
{
printf("输⼊的数字是负数\n");
}
return 0;
}
注意: 如果if
语句或if...else
语句之后只有一条语句,则可以不加{ }
,否则一定要加{ }
。但建议无论后边几条语句,都加上{ }
,这样看起来结构更加清晰,便于人们的阅读和理解。
2、switch语句
switch
语句是⼀种特殊形式的 if...else
结构,用于判断条件有多个结果的情况。它把多重的 else if
改成更易用、可读性更好的形式。
switch (表达式)
{
case value1: 语句1;
break;
case value2: 语句2;
break;
default: 语句3;
}
上面代码中,根据表达式 不同的值,执行相应的 case
分支。如果找不到对应的值,就执行 default
分支。
注
1、表达式必须为整形表达式;
2、case
后的值,必须是整形常量表达式;
3、 case
和后边的数字之间必须有空格
switch
语句中的break
例如一段代码:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
每一个 case 语句中的代码执行完成后,需要加上 break
,才能跳出这个switch
语句。
原因是 switch
语句也是分支效果的,只有在 switch
语句中使用 break
才能在跳出 switch
语句,如果某一个 case
语句的后边没有 break
语句,代码会继续往下执行,有可能执行其他 case
语句中的代码,直到遇到 break
语句或者 switch
语句结束。
switch
语句中的default
switch (表达式)
{
case value1: 语句1;
break;
case value2: 语句2;
break;
default: 语句3;
}
如果表达式的结果既不是value 1
,也不是value 2
,就会执行default
中的语句3。
switch
语句中case
语句和default
语句的顺序问题
在switch
语句中,case
语句和 default
语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过通常是把 default
子句放在最后处理的。