在C语言中,分支语句和循环语句是控制程序逻辑的核心工具。它们让程序能够根据条件执行不同的代码块,或者重复执行特定任务。本文将通过通俗的讲解和实用的代码示例,带你全面掌握这些关键语法。
一、分支语句:让程序学会“选择”
1. if 语句:最简单的条件判断
语法:
if (条件表达式) {
// 条件为真时执行的代码
}
示例:判断用户输入是否为正数
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num > 0) {
printf("这是一个正数!");
}
2. if-else:二选一的分支
语法:
if (条件) {
// 条件为真时执行
} else {
// 条件为假时执行
}
示例:判断奇偶数
if (num % 2 == 0) {
printf("偶数");
} else {
printf("奇数");
}
3. else if:多条件分支
语法:
if (条件1) {
// ...
} else if (条件2) {
// ...
} else {
// ...
}
示例:成绩等级划分
if (score >= 90) {
printf("A");
} else if (score >= 80) {
printf("B");
} else {
printf("C");
}
4.switch:多路选择
语法:
switch (表达式) {
case 值1:
// 代码块1
break; // 防止“case穿透”
case 值2:
// 代码块2
break;
default:
// 默认情况
}
示例:根据星期数输出名称
switch (day) {
case 1: printf("周一"); break;
case 2: printf("周二"); break;
// ...其他case
default: printf("输入错误");
}
二、循环语句:让程序重复执行
1. for 循环:精确控制循环次数
语法:
for (初始化; 循环条件; 更新表达式) {
// 循环体
}
示例:计算1到100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
printf("和为:%d", sum);
2. while 循环:条件满足时循环
语法:
while (条件) {
// 循环体
}
示例:用户输入验证(避免除以零)
int b;
printf("请输入分母:");
scanf("%d", &b);
while (b == 0) { // 若输入0则要求重新输入
printf("分母不能为零,请重新输入:");
scanf("%d", &b);
}
int result = a / b; // 安全计算
3. do-while 循环:至少执行一次
语法:
do {
// 循环体
} while (条件);
示例:菜单交互
int choice;
do {
printf("1. 开始游戏\n2. 退出\n请输入选择:");
scanf("%d", &choice);
} while (choice != 1 && choice != 2); // 输入错误时重复
三、进阶技巧与常见问题
1. 循环控制语句
break:立即退出当前循环
for (int i = 0; i < 10; i++) {
if (i == 5) break; // 当i=5时终止循环
printf("%d ", i); // 输出0 1 2 3 4
}
continue:跳过本次循环剩余代码
for (int i = 0; i < 5; i++) {
if (i == 2) continue; // 跳过i=2的情况
printf("%d ", i); // 输出0 1 3 4
}
2. 避免死循环
while循环的陷阱:
int i = 0;
while (i < 5) {
// 忘记写i++,导致无限循环!
printf("%d", i);
}
解决方案:确保循环条件最终会变为假。
3. 分支与循环的嵌套
示例:寻找质数
for (int num = 2; num <= 100; num++) {
int is_prime = 1;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
printf("%d ", num);
}
}
四、总结与最佳实践
-
分支语句选择指南:
-
简单条件 →
if -
多条件 →
else if或switch -
范围判断(如区间) →
if-else -
离散值匹配(如枚举) →
switch
-
-
循环语句选择指南:
-
已知循环次数 →
for -
条件依赖外部状态 →
while -
至少执行一次 →
do-while
-
-
防御性编程:
-
在除法操作前检查分母是否为零。
-
循环中避免修改循环变量导致逻辑混乱。
-
使用
switch时不要遗漏break和default。
-
1905

被折叠的 条评论
为什么被折叠?



