控制结构
- 3.1 条件语句(if-else)
- 3.1.1 if 语句
- 3.1.2 if-else 语句
- 3.1.3 if-else if-else 语句
- 3.2 循环结构(Loops)
- 3.2.1 for 循环
- 3.2.2 while 循环
- 3.2.3 do-while 循环
- 3.3 switch 语句
- 3.3.1 case
- 3.3.2 break
- 3.3.3 default
3. 控制结构
控制结构是编程语言中的核心部分,用于控制程序的执行流程。常见的控制结构包括条件语句、循环结构和 switch
语句。通过这些结构,程序可以根据不同的条件执行不同的代码块,并实现重复的操作。
3.1 条件语句(if-else)
条件语句允许程序根据某个条件是否成立来决定执行哪段代码。
3.1.1 if 语句
if
语句用于判断一个条件表达式是否为真。如果条件为真(结果是 true
),则执行相应的代码块;如果为假(结果是 false
),则跳过该代码块。
语法:
if (条件表达式) {
// 条件为真时执行的代码
}
示例:
int age = 18;
if (age >= 18) {
printf("你是成年人。\n");
}
在这个示例中,如果 age
大于等于 18,则会输出“你是成年人。”
3.1.2 if-else 语句
if-else
语句为条件提供了两个可能的执行路径:如果条件为真,执行 if
块;如果条件为假,则执行 else
块。
语法:
if (条件表达式) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}
示例:
int age = 16;
if (age >= 18) {
printf("你是成年人。\n");
} else {
printf("你还未成年。\n");
}
在这个例子中,如果 age
小于 18,会输出“你还未成年。”
3.1.3 if-else if-else 语句
当需要判断多个条件时,可以使用 if-else if-else
语句来链式判断不同的条件。每个条件都被逐个检查,直到找到一个为真的条件。如果所有条件都为假,则执行最后的 else
块。
语法:
if (条件1) {
// 条件1 为真时执行的代码
} else if (条件2) {
// 条件2 为真时执行的代码
} else {
// 上述条件都不成立时执行的代码
}
示例:
int score = 85;
if (score >= 90) {
printf("优秀。\n");
} else if (score >= 75) {
printf("良好。\n");
} else if (score >= 60) {
printf("及格。\n");
} else {
printf("不及格。\n");
}
在这个示例中,score
为 85,所以输出“良好。”
3.2 循环结构(Loops)
循环结构允许程序重复执行某段代码,直到满足某个条件。常见的循环结构有 for
循环、while
循环和 do-while
循环。
3.2.1 for 循环
for
循环通常用于已知循环次数的情况。它由三个部分组成:初始化语句、条件表达式和增量表达式。
语法:
for (初始化; 条件; 增量) {
// 循环体
}
- 初始化:循环开始时执行一次,用于定义和初始化控制变量。
- 条件:在每次迭代前检查,如果条件为真则继续执行循环体,否则退出循环。
- 增量:每次迭代结束后执行,用于更新控制变量。
示例:
for (int i = 0; i < 5; i++) {
printf("i 的值是 %d\n", i);
}
这个循环会输出 i
的值从 0 到 4。
3.2.2 while 循环
while
循环在每次迭代前检查条件,如果条件为真,则执行循环体;如果条件为假,则退出循环。适用于当循环次数不确定但有明确退出条件的情况。
语法:
while (条件) {
// 循环体
}
示例:
int i = 0;
while (i < 5) {
printf("i 的值是 %d\n", i);
i++;
}
这个循环的功能与前面的 for
循环类似,输出 i
的值从 0 到 4。
3.2.3 do-while 循环
do-while
循环与 while
循环类似,但它保证循环体至少执行一次。条件检查发生在循环体执行之后。
语法:
do {
// 循环体
} while (条件);
示例:
int i = 0;
do {
printf("i 的值是 %d\n", i);
i++;
} while (i < 5);
这个循环也会输出 i
的值从 0 到 4,但无论条件是否满足,循环体会先执行一次。
3.3 switch 语句
switch
语句用于根据某个变量的值执行不同的代码块。它是一种替代多重 if-else
语句的简便方式,适合用于判断离散的、多选一的情形。
3.3.1 case
switch
语句使用 case
标签标识不同的分支,每个 case
标签对应一个具体的值。当 switch
表达式的值与某个 case
的值匹配时,执行该分支的代码。
语法:
switch (变量) {
case 值1:
// 当变量等于值1时执行的代码
break;
case 值2:
// 当变量等于值2时执行的代码
break;
// 更多 case ...
default:
// 当变量不匹配任何 case 时执行的代码
}
示例:
int day = 3;
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
default:
printf("无效的天数\n");
}
在这个示例中,day
为 3,程序会输出“星期三。”
3.3.2 break
break
语句用于跳出 switch
语句,防止程序继续执行后续的 case
语句。如果省略 break
,程序将执行完当前 case
后继续执行下一个 case
直到遇到 break
或 switch
结束。
示例:
switch (grade) {
case 'A':
printf("优秀\n");
break;
case 'B':
printf("良好\n");
break;
case 'C':
printf("及格\n");
break;
default:
printf("未知等级\n");
}
这里 break
确保每个 case
执行完后跳出 switch
语句。
3.3.3 default
default
用于在没有 case
匹配时执行的代码块。它是可选的,如果没有匹配的 case
且省略了 default
,则不会执行任何代码。
示例:
int score = 75;
switch (score) {
case 90:
printf("优秀\n");
break;
case 80:
printf("良好\n");
break;
case 70:
printf("及格\n");
break;
default:
printf("成绩不在范围内\n");
}
如果 score
不等于 90、80 或 70,那么会执行 default
部分,输出“成绩不在范围内”。
结论
控制结构通过条件语句和循环结构,极大地提升了程序的灵活性。条件语句允许程序根据不同的条件执行不同的代码路径,而循环结构则能高效处理重复任务。switch
语句提供了一种简洁的方法,方便地对变量的多个值进行判断,特别适用于离散情况。