选择结构
首先我们先了解流程控制结构,流程控制结构是指能够改变程序执行顺序的结构,他们可以根据不同的条件在一段或多段程序中选择一个运行或者不运行
三大控制结构分别为:顺序结构、循环结构、选择结构
顺序结构:自上而下从左至右依次执行
选择结构:选择结构是依据一定的条件选择执行的路径,而非严格按照语句出现的前后顺序执行
循环结构:循环结构是依据一定的条件重复执行某一句或某几句代码,是为反复做某个操作而设置的一种程序结构
现在来了解选择分支结构(选择分支结构就是选择结构的一种,不想浪费时间,就不细分了),C语言支持两种选择结构,分别是if语句和switch语句
if语句
if (condition) {
// 当条件 condition 为真(非零)时执行的代码块
}
if-else语句
if (condition) {
// 当 condition 为真时执行的代码块
} else {
// 当condition为假时执行的代码块
}
当需要判断多个条件时,可以使用 else if
语句进行多分支判断
if(condition1){
//当condition1为真时执行的代码块
}else if(condition2){
//当condition2为真时执行的代码块
}else{
//当上面几个条件都是假时执行的代码块
}
其工作原理为:
1.程序从上往下依次判断 if 和 else if 语句中的条件表达式
2.一旦找到为 True(即非零)的条件,执行对应的代码块,然后跳过后面的所有 else if 和 else 语句
3.如果所有的 if 和 else if 条件都为 False,则执行 else 语句中的代码(如果有 else 部分)
4.如果没有 else 部分,并且所有条件都为 False,则程序不会执行任何操作
//从上往下通关,可以失误一万次,因为有else兜底;只赢一次,点到为止
if-else if-else
语句在多条件判断中非常有用
嵌套 if
语句
if(condition1){
if(condition2){
//当condition1和condition2同时为true时执行的代码块
}else{
//当condition1为真(因为你的这个代码也在if condition1中,所以只有condition1为真才能让编译器进来)且condition2为假时执行的代码块
}
}
C 语言中的条件判断基于整数值:非零值为真,零值为假
其实,如果 if
或 else
中的代码只有一行,可以省略大括号:
if (number > 0)
printf("正数\n");
else
printf("非正数\n");
而代码块通常使用大括号 {}
包裹,但为了提高可读性以及更好地维修,即使只有一行代码时,也建议加上大括号以防止错误
switch语句
switch(开关,转换)
switch (expression) {
case constant1:
// 当 expression == constant1 时执行
break;
case constant2:
// 当 expression == constant2 时执行
break;
...
default:
//当 expression 不等于任何 case 时执行
}
expression
:switch
中的表达式通常是整数类型(int
、char
等),但不能是浮点数或字符串case
:每个case
对应一个常量值,如果expression
的值等于某个case
后面的常量,就执行该case
下的语句break
:用于结束当前case
的执行,并跳出switch
语句。如果没有break
,程序会继续执行下一个case
,直到遇到break
或switch
结束(称为“穿透”)default
:可选的default
语句用于处理expression
不匹配任何case
时的情况
switch
语句只能比较常量,不能处理范围判断,因为switch的运行是基于==的关系是运算符。如果需要比较范围,if-else
可能更合适
break
很重要,他能让编译器在case 某个true的值中停下来运行后停下来,如果你忘了加break;就会发生“穿透”,执行多余的 case
语句
//条件只有一个,break;完便点到为止
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("Number is 1\n");
break;
case 2:
printf("Number is 2\n");
break;
case 3:
printf("Number is 3\n");
break;
default:
printf("Number is not 1, 2, or 3\n");
}
return 0;
}
最终将输出"Number is 2"
Comments NOTHING