分支
C语言中常使用If语句以及switch语句实现分支结构
注意:在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执行;表达式的结果如果不是0,则语句执⾏。
if语句
1 基本形式
例如:输入一个整数,判断是否是基数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}
2 else的使用(与if配套使用)
愚见:可以理解为if的另一种情况
例如(上面那道题,增加条件,如果是奇数打印是奇数,否则打印偶数):
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
else
printf("%d 是偶数\n", num);
return 0;
}
此外,这道题 if 仅控制一道语句,如果我们要if语句同时控制2条语句,那就要使⽤ {} 将代码括起来,
else 后也可以跟上⼤括号。
3 嵌套if
两种形式
上图中橙⾊背景的代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。(我觉得也可以理解为并列if的多种情况,if是情况一,else if是情况二,else 是除去一二的所有情况)
再⽐如:
这里第一个else便嵌套了if语句,用{}包含其中,同时嵌套的if语句又进行了嵌套,嵌套里面又进行了嵌套,共进行了三次。
4悬空else
注意:如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
就比如这个代码:
#include <stdio.h>
int main() {
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
可能你认为结果是haha,但实际上什么也不输出。因为else 是和第⼆个 if进⾏匹配的,这样后边的 if…else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。
所以记住
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
switch语句
与if语句类似,基本形式如下;
switch(表达式)
{
case 1:
case 2:
case 3:
default:
}
例如:
#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 和后边的数字之间必须有空格
- 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。