C语言基础语法 2.4 控制结构(条件语句、循环语句)
在C语言中,控制结构是程序的核心部分,它们决定了程序的执行流程。控制结构主要分为条件语句和循环语句。本文将详细介绍这两种控制结构,包括它们的语法、优缺点、注意事项以及丰富的示例代码。
1. 条件语句
条件语句用于根据特定条件的真假来决定程序的执行路径。C语言中主要有以下几种条件语句:
1.1 if 语句
if
语句是最基本的条件语句,用于判断一个条件是否为真。
语法
if (condition) {
// 当 condition 为真时执行的代码
}
示例
#include <stdio.h>
int main() {
int a = 10;
if (a > 5) {
printf("a is greater than 5\n");
}
return 0;
}
优点
- 简单易懂,适合处理简单的条件判断。
缺点
- 只能处理单一条件,复杂条件需要嵌套使用。
注意事项
- 条件表达式必须返回布尔值(0或非0),非0表示真,0表示假。
1.2 if-else 语句
if-else
语句用于在条件为真和假时执行不同的代码块。
语法
if (condition) {
// 当 condition 为真时执行的代码
} else {
// 当 condition 为假时执行的代码
}
示例
#include <stdio.h>
int main() {
int a = 3;
if (a > 5) {
printf("a is greater than 5\n");
} else {
printf("a is not greater than 5\n");
}
return 0;
}
优点
- 可以处理两种情况,逻辑清晰。
缺点
- 代码可读性在多层嵌套时会降低。
注意事项
else
语句是可选的,可以单独使用if
语句。
1.3 else if 语句
else if
语句用于处理多个条件。
语法
if (condition1) {
// 当 condition1 为真时执行的代码
} else if (condition2) {
// 当 condition2 为真时执行的代码
} else {
// 当所有条件都为假时执行的代码
}
示例
#include <stdio.h>
int main() {
int a = 7;
if (a > 10) {
printf("a is greater than 10\n");
} else if (a > 5) {
printf("a is greater than 5 but less than or equal to 10\n");
} else {
printf("a is 5 or less\n");
}
return 0;
}
优点
- 可以处理多个条件,逻辑清晰。
缺点
- 嵌套过多会导致代码复杂,降低可读性。
注意事项
- 确保条件的顺序合理,以避免逻辑错误。
1.4 switch 语句
switch
语句用于根据变量的值选择执行的代码块。
语法
switch (expression) {
case constant1:
// 当 expression 等于 constant1 时执行的代码
break;
case constant2:
// 当 expression 等于 constant2 时执行的代码
break;
default:
// 当 expression 不等于任何常量时执行的代码
}
示例
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
default:
printf("Invalid day\n");
}
return 0;
}
优点
- 适合处理多个离散值的情况,代码简洁。
缺点
- 只能用于整型或字符型,不能处理范围条件。
注意事项
- 每个
case
语句后面通常需要break
,以防止“贯穿”到下一个case
。
2. 循环语句
循环语句用于重复执行一段代码,直到满足特定条件。C语言中主要有以下几种循环语句:
2.1 for 循环
for
循环用于在已知循环次数的情况下重复执行代码。
语法
for (initialization; condition; increment) {
// 循环体
}
示例
#include <stdio.h>
int main() {
for (int i = 0; i < 5; i++) {
printf("Iteration %d\n", i);
}
return 0;
}
优点
- 结构清晰,适合已知循环次数的情况。
缺点
- 不适合处理未知次数的循环。
注意事项
- 确保循环条件能够在某个时刻变为假,以避免无限循环。
2.2 while 循环
while
循环用于在条件为真时重复执行代码。
语法
while (condition) {
// 循环体
}
示例
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
printf("Iteration %d\n", i);
i++;
}
return 0;
}
优点
- 适合处理未知次数的循环。
缺点
- 如果条件永远为真,可能导致无限循环。
注意事项
- 确保在循环体内有条件改变的代码。
2.3 do-while 循环
do-while
循环与 while
循环类似,但它至少会执行一次循环体。
语法
do {
// 循环体
} while (condition);
示例
#include <stdio.h>
int main() {
int i = 0;
do {
printf("Iteration %d\n", i);
i++;
} while (i < 5);
return 0;
}
优点
- 确保循环体至少执行一次。
缺点
- 可能导致不必要的执行,尤其是在条件一开始就为假时。
注意事项
do-while
循环的条件在循环体之后检查。
总结
控制结构是C语言编程的基础,合理使用条件语句和循环语句可以使程序逻辑清晰、结构合理。在使用这些控制结构时,开发者应注意代码的可读性和维护性,避免过度嵌套和复杂的逻辑判断。通过不断实践和总结,开发者可以熟练掌握这些控制结构,为编写高效、优雅的C语言程序打下坚实的基础。