第四课:流程控制¶
1. 条件判断:if-else¶
示例:成绩评级¶
#include <stdio.h>
int main() {
int score = 85;
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;
}
2. 多分支选择:switch-case¶
switch (表达式) {
case 常量1:
// 代码
break; // 跳出 switch
case 常量2:
// 代码
break;
default: // 可选,匹配所有未列出的情况
// 代码
}
示例:星期转换¶
int day = 3;
switch (day) {
case 1: printf("星期一\n"); break;
case 2: printf("星期二\n"); break;
case 3: printf("星期三\n"); break;
case 4: printf("星期四\n"); break;
case 5: printf("星期五\n"); break;
case 6: printf("星期六\n"); break;
case 7: printf("星期日\n"); break;
default: printf("无效输入\n");
}
别忘了 break
如果漏掉 break,程序会继续执行下一个 case(称为穿透)。有时可以利用穿透简化代码。
3. 循环¶
for 循环¶
适用于已知循环次数的情况:
for (初始化; 条件; 更新) {
// 循环体
}
// 输出 1 到 5
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
// 输出:1 2 3 4 5
while 循环¶
适用于条件驱动的循环:
do-while 循环¶
无论条件是否满足,至少执行一次循环体:
4. 循环控制:break 和 continue¶
// break:提前终止整个循环
for (int i = 1; i <= 10; i++) {
if (i == 5) break; // i=5 时跳出循环
printf("%d ", i);
}
// 输出:1 2 3 4
// continue:跳过本次循环,进入下一次
for (int i = 1; i <= 5; i++) {
if (i == 3) continue; // 跳过 i=3
printf("%d ", i);
}
// 输出:1 2 4 5
5. 嵌套循环:打印九九乘法表¶
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d=%2d ", j, i, i * j);
}
printf("\n");
}
输出:
6. 综合示例:猜数字游戏¶
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int target = rand() % 100 + 1; // 1~100 随机数
int guess, attempts = 0;
printf("猜数字游戏(1~100)\n");
do {
printf("输入你的猜测:");
scanf("%d", &guess);
attempts++;
if (guess > target) {
printf("太大了!\n");
} else if (guess < target) {
printf("太小了!\n");
} else {
printf("恭喜你猜对了!共猜了 %d 次\n", attempts);
}
} while (guess != target);
return 0;
}
7. 练习¶
动手实践
- 输入三个整数,输出其中的最大值
- 打印 1 到 100 之间的所有偶数
- 输入一个正整数 n,计算 1 + 2 + 3 + ... + n 的和
- 打印以下图案(用嵌套循环):