C 语言分支与循环语句总结
程序的三大基本结构为顺序结构、分支结构、循环结构,分支与循环是实现程序逻辑控制的核心,以下是核心知识点总结。
一、分支语句
分支语句根据条件判断结果,选择执行对应的代码块,包含if系列和switch两种。
1. if 语句
基础单分支
运行
scss
if (条件表达式) {
// 条件为真时执行
}
C 语言中,非 0 为真,0 为假。
if-else 二分支
运行
arduino
#include <stdio.h>
int main() {
int a = 10;
if (a > 0) {
printf("正数\n");
} else {
printf("非正数\n");
}
return 0;
}
else if 多分支
运行
arduino
#include <stdio.h>
int main() {
int score = 85;
if (score >= 90)
printf("A\n");
else if (score >= 80)
printf("B\n");
else if (score >= 60)
printf("C\n");
else
printf("D\n");
return 0;
}
注意:else 永远与最近的未匹配 if 配对,建议统一加大括号避免悬空 else 问题。
2. switch 语句
适用于整型变量的多值等值判断。
运行
arduino
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1: printf("周一\n"); break;
case 2: printf("周二\n"); break;
case 3: printf("周三\n"); break;
default: printf("输入错误\n"); break;
}
return 0;
}
注意:
- switch 后必须是整型表达式,case 后必须是整型常量
- break 用于跳出 switch,省略会发生 case 穿透,可利用穿透实现多值匹配同一逻辑
- default 用于处理所有 case 都不匹配的情况,非必须但建议添加
二、循环语句
循环语句用于重复执行一段代码,包含while、for、do-while三种。
1. while 循环
先判断条件,再执行循环体。
运行
arduino
// 计算1-100的和
#include <stdio.h>
int main() {
int i = 1, sum = 0;
while (i <= 100) {
sum += i;
i++;
}
printf("和为%d\n", sum);
return 0;
}
2. for 循环
将初始化、条件判断、变量更新集中书写,适合已知循环次数的场景。
运行
arduino
// 打印1-10
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
return 0;
}
执行顺序:初始化 → 条件判断 → 执行循环体 → 更新变量 → 再次判断条件。
3. do-while 循环
先执行循环体,再判断条件,循环体至少执行一次。
运行
arduino
#include <stdio.h>
int main() {
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 5);
return 0;
}
4. break 与 continue
- break:永久终止当前所在层的循环,直接跳出循环
- continue:跳过本次循环后续代码,直接进入下一次条件判断
运行
ini
// break示例:找到第一个能被7整除的数
for (int i = 1; i <= 20; i++) {
if (i % 7 == 0) {
printf("%d\n", i);
break;
}
}
// continue示例:打印1-10的奇数
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0)
continue;
printf("%d ", i);
}
三、循环嵌套
循环内部可以再嵌套循环,外层循环执行一次,内层循环执行完整一轮。
运行
arduino
// 九九乘法表
#include <stdio.h>
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d*%d=%-2d ", j, i, i*j);
}
printf("\n");
}
return 0;
}
四、综合练习:猜数字游戏
运行
arduino
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL));
int target = rand() % 100 + 1;
int guess, count = 0;
printf("猜数字游戏(1-100)\n");
while (1) {
printf("请输入数字:");
scanf("%d", &guess);
count++;
if (guess > target)
printf("猜大了\n");
else if (guess < target)
printf("猜小了\n");
else {
printf("猜对了!答案是%d,共猜了%d次\n", target, count);
break;
}
}
return 0;
}
五、总结
- 分支选型:范围判断用
if-else,多值等值判断用switch - 循环选型:已知次数优先
for,条件终止用while,需至少执行一次用do-while - 注意事项:if 条件中
==勿写成=;switch 勿忘 break;循环必须设置退出条件避免死循环