第3章 程序设计基本结构


核心章节 必须掌握 三种基本控制结构是程序设计的基石

本章概述

C语言有三种基本的程序结构:

  • 顺序结构:按顺序执行语句
  • 选择结构:根据条件选择执行不同语句
  • 循环结构:重复执行某些语句

任何复杂的程序都可以由这三种基本结构组合而成。

顺序结构

顺序结构是最简单的结构,程序按照语句的书写顺序依次执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include 

int main() {
int a, b, sum;

printf("请输入两个整数:");
scanf("%d %d", &a, &b);

sum = a + b;

printf("两数之和为:%d\n", sum);

return 0;
}

顺序结构的执行流程:输入 → 处理 → 输出

选择结构

if语句

单分支if语句

1
2
3
if (条件表达式) {
// 条件为真时执行的语句
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include 

int main() {
int score;

printf("请输入成绩:");
scanf("%d", &score);

if (score >= 60) {
printf("恭喜及格!\n");
}

return 0;
}

双分支if-else语句

1
2
3
4
5
if (条件表达式) {
// 条件为真时执行
} else {
// 条件为假时执行
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include 

int main() {
int score;

printf("请输入成绩:");
scanf("%d", &score);

if (score >= 60) {
printf("恭喜及格!\n");
} else {
printf("需要继续努力!\n");
}

return 0;
}

多分支if-else if语句

1
2
3
4
5
6
7
if (条件1) {
// 条件1为真时执行
} else if (条件2) {
// 条件2为真时执行
} else {
// 所有条件都不为真时执行
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include 

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语句

switch语句用于多分支选择,特别适合处理等值判断:

1
2
3
4
5
6
7
8
9
10
11
switch (表达式) {
case 常量1:
// 语句1
break;
case 常量2:
// 语句2
break;
...
default:
// 默认语句
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include 

int main() {
int day;

printf("请输入星期几(1-7):");
scanf("%d", &day);

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");
}

return 0;
}

💡 注意事项

  • break语句用于跳出switch,如果没有break,会继续执行后面的case
  • case后面的常量必须是整数或字符
  • 各个case的常量值不能相同
  • default可以省略

循环结构

while循环

先判断条件,再执行循环体:

1
2
3
while (条件表达式) {
// 循环体
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include 

int main() {
int i = 1;
int sum = 0;

while (i <= 100) {
sum += i;
i++;
}

printf("1到100的和为:%d\n", sum);

return 0;
}

do-while循环

先执行循环体,再判断条件,至少执行一次:

1
2
3
do {
// 循环体
} while (条件表达式);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include 

int main() {
int number;

do {
printf("请输入一个正数:");
scanf("%d", &number);
} while (number <= 0);

printf("输入的正数是:%d\n", number);

return 0;
}

for循环

最灵活的循环语句:

1
2
3
for (初始化表达式; 条件表达式; 更新表达式) {
// 循环体
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include 

int main() {
int sum = 0;

// 计算1到100的和
for (int i = 1; i <= 100; i++) {
sum += i;
}

printf("1到100的和为:%d\n", sum);

// 九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d=%-2d ", i, j, i * j);
}
printf("\n");
}

return 0;
}

💡 三种循环的选择

  • while:不确定循环次数时使用
  • do-while:至少需要执行一次时使用
  • for:知道循环次数时使用

循环控制语句

break语句

立即跳出当前循环:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include 

int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 跳出循环
}
printf("%d ", i);
}
// 输出:1 2 3 4

return 0;
}

continue语句

跳过本次循环,继续下一次循环:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include 

int main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d ", i);
}
// 输出:1 3 5 7 9

return 0;
}

嵌套结构

循环和选择结构可以互相嵌套:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include 

int main() {
// 打印1-100之间的所有质数
for (int i = 2; i <= 100; i++) {
int isPrime = 1;

for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
isPrime = 0;
break;
}
}

if (isPrime) {
printf("%d ", i);
}
}

return 0;
}

综合示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include 

int main() {
int choice;
float num1, num2, result;

printf("简单计算器\n");
printf("1. 加法\n");
printf("2. 减法\n");
printf("3. 乘法\n");
printf("4. 除法\n");
printf("请选择操作(1-4):");
scanf("%d", &choice);

if (choice < 1 || choice > 4) {
printf("无效的选择!\n");
return 1;
}

printf("请输入两个数:");
scanf("%f %f", &num1, &num2);

switch (choice) {
case 1:
result = num1 + num2;
printf("%.2f + %.2f = %.2f\n", num1, num2, result);
break;
case 2:
result = num1 - num2;
printf("%.2f - %.2f = %.2f\n", num1, num2, result);
break;
case 3:
result = num1 * num2;
printf("%.2f × %.2f = %.2f\n", num1, num2, result);
break;
case 4:
if (num2 == 0) {
printf("错误:除数不能为0\n");
} else {
result = num1 / num2;
printf("%.2f ÷ %.2f = %.2f\n", num1, num2, result);
}
break;
}

return 0;
}

本章小结

  • ✓ 掌握了顺序结构、选择结构、循环结构
  • ✓ 学会了if语句和switch语句的使用
  • ✓ 掌握了while、do-while、for三种循环
  • ✓ 理解了break和continue的作用

下一步学习


© 2025 Rl. 使用 Stellar 创建
站点访问量 Loading... 站点访客数 Loading... 页面访问量 Loading...