循环语句
while循环
基本结构
while(表达式) {
语句; // 表达式为真时执行
}
- 先判断表达式,为真才执行循环体;为假则直接跳过。
例子:显示 5 到 1
#include <stdio.h>
int main() {
int i = 5;
while(i >= 1) {
printf("%d ", i);
i--; // 每次减1
}
return 0;
}
// 输出:5 4 3 2 1
无限循环
-
用while(1)(1 代表 “真”)实现:
-
while(1) { printf("无限输出这句话\n"); }
do while语句
基本结构
do {
语句;
} while(表达式);
-
先执行一次循环体,再判断表达式;只要表达式为真,就继续循环。
例子:计算用户输入整数的位数
#include <stdio.h> int main() { int num, count = 0; printf("输入一个整数:"); scanf("%d", &num); do { num = num / 10; // 去掉最后一位 count++; } while(num != 0); // 直到数字被“拆完” printf("位数是:%d\n", count); return 0; } // 输入123 → 输出3
for循环
. 基本结构
for(表达式1; 表达式2; 表达式3) {
语句;
}
- 表达式 1:初始化(只执行 1 次)
- 表达式 2:循环条件(为真才执行循环体)
- 表达式 3:更新变量(每次循环体结束后执行
. 例子:显示 5 到 1
#include <stdio.h>
int main() {
for(int i = 5; i >= 1; i--) { // 初始化i=5;条件i≥1;每次i减1
printf("%d ", i);
}
return 0;
}
// 输出:5 4 3 2 1
省略表达式(C99 支持)
可以省略其中 1 个 / 多个表达式,但分号不能少
逗号运算符
-
可以在表达式 1/3 中用逗号写多个操作
-
// 同时初始化i和j,同时更新i和j for(int i=1, j=10; i<=5; i++, j--) { printf("i=%d, j=%d\n", i, j); } // 输出: // i=1, j=10 // i=2, j=9 // ...
break语句
-
立即跳出当前所在的循环
-
找到第一个大于 5 的数就停止循环
-
for(int i=1; i<=10; i++) { if(i > 5) { break; // 跳出for循环 } printf("%d ", i); } // 输出:1 2 3 4 5
continue语句
作用:跳过当前循环的剩余语句,直接进入下一次循环的条件判断:
// 跳过i=3,输出5、4、2、1
for(int i=5; i>=1; i--) {
if(i == 3) {
continue;
}
printf("%d ", i);
}
// 运行结果:5 4 2 1
goto语句
语法格式
-
当程序执行到 goto 标识名; 时,会立即跳过中间所有代码,直接跳转到 标识名: 对应的语句处,从该位置继续执行。
-
用 goto 实现循环(替代 while/for)
-
#include <stdio.h> int main() { int i = 5; loop_start: // 定义循环开始的标识 if (i < 1) { goto loop_end; // 满足条件时,跳转到循环结束标识 } printf("当前值:%d\n", i); i--; goto loop_start; // 跳回循环开始,继续执行 loop_end: // 定义循环结束的标识 printf("循环结束!"); return 0; } 当前值:5 当前值:4 当前值:3 当前值:2 当前值:1 循环结束!