承接上篇的switch:
https://blog.csdn.net/2401_85286030/article/details/146325565?spm=1001.2014.3001.5502
在编程中,`switch`、`while`、`for` 和 `do-while` 是控制流程的重要工具,它们各自有着独特的用途和特点。以下是对这些控制结构的进一步解释和美化后的描述:
`switch` 语句
`switch` 语句允许多路分支,它根据变量的值执行不同的代码块。每个 `case` 标签代表一个可能的值,而 `break` 语句用于终止 `switch` 语句,防止代码继续执行下一个 `case`。如果没有任何 `case` 匹配,`default` 标签下的代码将被执行,它相当于 `if-else` 结构中的 `else` 部分,并且default的位置可以在结尾也可以在语句内的任意地方,但是一般为了代码规范都是写在最后的。
switch (expression) {
case constant1:
// 代码块
break;
case constant2:
// 代码块
break;
default:
// 默认代码块
}
这里要注意一点,在运用scanf的时候,你需要在while语句表达式结尾加上!=EOF,否则就会一直循环下去。
`while` 循环
`while` 循环在条件为真时重复执行代码块。它首先评估条件表达式,如果结果为真,则执行循环体,然后再次评估条件,直到条件为假。
while (condition) {
// 循环体
}
while循环实践:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
`for` 循环
`for` 循环提供了一种紧凑的方式来编写循环,它将初始化、条件检查和迭代步骤合并到一行代码中。这使得 `for` 循环在处理固定次数的迭代时非常方便。
for (initialization; condition; increment) {
// 循环体
}
for(表达式1; 表达式2; 表达式3)
for(int i=0;i<10;i++)//从左向右循环
for(int 1=10;i>0;i--)//从右向左循环
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
for循环实践:
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
//循环结果1 2 3 4 5 6 7 8 9 10
`do-while` 循环
`do-while` 循环与 `while` 循环类似,但它至少会执行一次循环体,因为条件检查是在循环体执行之后进行的。
do
{
// 循环体
} while (condition);
do-while循环实践:
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
//输出结果:1 2 3 4 5 6 7 8 9 10
对比与选择
- **`for` vs `while`**: `for` 循环在循环次数已知时更为简洁,而 `while` 循环在循环次数未知或基于复杂条件时更为灵活。
- **`do-while` 的特殊性**: 由于 `do-while` 循环至少执行一次,它适用于需要至少一次迭代的场景。
实践示例
以下是 `while`、`for` 和 `do-while` 循环的简单示例,它们都打印数字 1 到 10:
while循环
// while 循环
int i = 1;
while (i <= 10) {
printf("%d ", i);
i++;
}
for循环
// for 循环
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
do-while循环
// do-while 循环
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 10);
在选择循环结构时,应考虑代码的可读性和维护性。`for` 循环在迭代次数明确时通常更为清晰,而 `while` 和 `do-while` 循环在处理条件较为复杂或不确定时更为合适。