2.2 条件分支
条件分支(conditional branch)让程序可以根据不同情况执行不同代码。C 使用 if、else if、else 来描述这些分支,并用大括号 {} 把属于同一个分支的语句组织成代码块(block)。
if
if 会判断一个条件。如果条件为真,就执行大括号里的语句块;如果条件为假,就跳过这个语句块。
c
int age;
scanf("%d", &age);
if (age > 0 && age < 18) {
printf("未成年人\n");
}一次可能的运行结果:
text
17
未成年人在 C 中,属于 if 的语句要放在大括号 {} 里。即使只有一行,也建议加上大括号,避免以后扩展时出错。
正在加载概念检查...
if-else
if-else 用于二选一:条件为真时执行 if 语句块,否则执行 else 语句块。
下面用闰年(leap year)判断作为例子。一个年份是闰年,需要满足以下条件之一:
- 能被 4 整除,并且不能被 100 整除。
- 或者能被 400 整除。
c
int year;
scanf("%d", &year);
int is_leap_year = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (is_leap_year) {
printf("闰年\n");
} else {
printf("平年\n");
}一次可能的运行结果:
text
2020
闰年这里把复杂条件先保存到 is_leap_year,可以让 if 那一行更清晰。写真实程序时,这种方式通常比把一长串判断直接塞进 if 更好维护。
正在加载概念检查...
if-else if-else
当情况不止两种时,可以使用多分支结构 if-else if-else。程序会从上到下检查条件,遇到第一个为真的分支就执行,并跳过后面的分支。
c
char c;
scanf(" %c", &c);
if (c >= 'a' && c <= 'z') {
printf("小写字母\n");
} else if (c >= 'A' && c <= 'Z') {
printf("大写字母\n");
} else if (c >= '0' && c <= '9') {
printf("数字\n");
} else {
printf("特殊字符\n");
}一次可能的运行结果:
text
T
大写字母else if 的顺序很重要。你应该把更具体、更优先的条件放在前面,把兜底情况放在 else 中。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...