在日常生活中,我们每天都在做决定和重复动作:
编程中的逻辑也遵循同样的规律。通过分支结构,程序可以根据不同条件执行不同的代码路径;借助循环机制,可以反复运行某段代码,避免冗余书写。这两种控制流程的语句构成了几乎所有程序的核心骨架。
分支语句允许程序依据特定条件选择执行哪一部分代码。
当某个条件成立时,执行相应操作。
if (条件) {
// 条件为真时执行的代码
}
例如:只有温度高于30度才开启空调。
#include <stdio.h>
int main() {
int money = 100;
if (money >= 50) {
printf("我可以买这本书!\n");
}
return 0;
}
提供两种互斥的执行路径:条件成立走一条,不成立走另一条。
if (条件) {
// 条件为真时执行
} else {
// 条件为假时执行
}
实际应用场景如用户登录验证:密码正确进入系统,错误则提示重试。
#include <stdio.h>
int main() {
int score = 85;
if (score >= 60) {
printf("恭喜,考试及格!\n");
} else {
printf("很遗憾,需要继续努力\n");
}
return 0;
}
适用于多个条件依次判断的情形。
if (条件1) {
// 条件1为真时执行
} else if (条件2) {
// 条件2为真时执行
} else if (条件3) {
// 条件3为真时执行
} else {
// 所有条件都为假时执行
}
比如根据考试成绩划分等级:
#include <stdio.h>
int main() {
int score;
printf("请输入成绩:");
scanf("%d", &score);
if (score >= 90) {
printf("优秀!\n");
} else if (score >= 80) {
printf("良好\n");
} else if (score >= 70) {
printf("中等\n");
} else if (score >= 60) {
printf("及格\n");
} else {
printf("不及格\n");
}
return 0;
}
特别适合对单一变量进行多种值匹配的情况。
switch (表达式) {
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
default:
// 默认代码块
}
以输入数字判断星期为例,简洁明了地实现七种输出。
#include <stdio.h>
int main() {
int day;
printf("请输入星期(1-7):");
scanf("%d", &day);
switch (day) {
case 1:
printf("星期一:新的开始!\n");
break;
case 2:
case 3:
case 4:
case 5:
printf("工作日,加油!\n");
break;
case 6:
case 7:
printf("周末,好好休息!\n");
break;
default:
printf("输入错误!\n");
}
return 0;
}
注意事项:
当需要多次运行相同或相似代码块时,循环语句极大提升了效率。
常用于计数循环,结构清晰,初始化、条件、迭代一步到位。
for (初始化; 循环条件; 更新) {
// 循环体
}
示例:打印从1到10的所有整数。
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
printf("%d ", i);
}
printf("\n");
return 0;
}
其执行流程包括初始化 → 判断条件 → 执行循环体 → 更新变量 → 再次判断。
text
1. i=1 → 1<=10成立 → 输出1 → i++变成2
2. i=2 → 2<=10成立 → 输出2 → i++变成3
...
10. i=10 → 10<=10成立 → 输出10 → i++变成11
11. i=11 → 11<=10不成立 → 循环结束
实用功能扩展:计算1加到100的总和。
#include <stdio.h>
int main() {
int sum = 0;
int i;
for (i = 1; i <= 100; i++) {
sum += i; // 相当于 sum = sum + i
}
printf("1到100的和是:%d\n", sum);
return 0;
}
只要指定条件为真,就持续执行循环体。
while (条件) {
// 循环体
}
典型应用:模拟密码输入过程,直到输入正确为止。
#include <stdio.h>
int main() {
int password = 123456;
int input;
int attempts = 0;
printf("请输入密码:");
scanf("%d", &input);
while (input != password && attempts < 2) {
attempts++;
printf("密码错误,还有%d次机会:", 3 - attempts);
scanf("%d", &input);
}
if (input == password) {
printf("登录成功!\n");
} else {
printf("登录失败!\n");
}
return 0;
}
先执行循环内容,再判断是否继续,确保至少运行一遍。
do {
// 循环体
} while (条件);
常见于菜单系统设计中,比如主界面选项选择。
#include <stdio.h>
int main() {
int choice;
do {
printf("\n=== 菜单 ===\n");
printf("1. 开始游戏\n");
printf("2. 设置\n");
printf("3. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("游戏开始!\n");
break;
case 2:
printf("进入设置\n");
break;
case 3:
printf("再见!\n");
break;
default:
printf("无效选择!\n");
}
} while (choice != 3); // 只要不是退出选项,就继续显示菜单
return 0;
}
在复杂逻辑中,仅靠基本循环不够灵活,需配合控制关键字。
一旦触发,跳出整个循环结构,不再进行后续迭代。
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当i等于5时立即退出循环
}
printf("%d ", i);
}
// 输出:1 2 3 4
return 0;
}
结束当前轮次,直接进入下一轮判断。
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 如果是偶数,跳过本次循环
}
printf("%d ", i);
}
// 输出:1 3 5 7 9(只输出奇数)
return 0;
}
结合所学知识解决真实问题。
利用循环配合条件判断,检测是否存在除1和自身外的因子。
#include <stdio.h>
#include <math.h>
int main() {
int num, i;
int is_prime = 1; // 1表示是素数,0表示不是
printf("请输入一个正整数:");
scanf("%d", &num);
// 处理特殊情况
if (num <= 1) {
is_prime = 0;
} else {
// 检查从2到sqrt(num)是否有因子
for (i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
is_prime = 0;
break;
}
}
}
if (is_prime) {
printf("%d 是素数\n", num);
} else {
printf("%d 不是素数\n", num);
}
return 0;
}
嵌套循环的经典应用,展示双重 for 的强大表现力。
#include <stdio.h>
int main() {
int i, j;
printf("九九乘法表:\n");
for (i = 1; i <= 9; i++) { // 外层循环控制行
for (j = 1; j <= i; j++) { // 内层循环控制列
printf("%d×%d=%-2d ", j, i, i * j);
}
printf("\n");
}
return 0;
}
合理选用语句类型能提升代码可读性和效率。
初学者容易踩坑的地方及应对方法。
掌握这些陷阱有助于快速定位问题。
// 添加调试输出
for (i = 0; i < 10; i++) {
printf("调试:i=%d\n", i); // 查看循环执行情况
// 你的代码
}
分支与循环是C语言中最核心的流程控制手段,理解并熟练运用它们意味着掌握了编程的基本思维方式。
唯有通过不断练习、深入思考与反复调试,才能真正驾驭这些关键结构。
尝试用今天学习的内容编写一个简易计算器程序,支持加减乘除四种运算,并允许用户连续计算,直到主动选择退出程序为止。
扫码加好友,拉您进群



收藏
