C语言程序的三种基本结构(附带示例)
按照代码的执行顺序,或者执行流程,我们可以将C语言程序分成三种基本结构,分别是顺序结构、选择结构和循环结构:
除了这三种基本结构,C语言其实还有第四种结构,就是跳转结构(通过 goto 语句实现),它允许程序跳转到任意一条代码,然后从此处开始执行。不过,频繁使用跳转结构会使得程序的逻辑变得复杂难懂,调试费劲,所以现在已经不推荐使用跳转结构了。
在大学教材,或者考试题目中,通常只会提到“三种基本结构”,很少涉及第四种结构。
本教程前面的代码都是顺序结构,这是初学者最先接触的程序结构。
下面是一个顺序结构的示例,展示了如何计算长方形的面积:
C语言有三种方式来实现分支结构,分别是 if else 语句、switch case 语句、三目运算符
下面的例子使用了 if else 分支结构,用来判断一个数是否是偶数:
C语言提供了三种主要的循环结构,分别是 for 循环、while 循环和 do while 循环。
下面的例子使用 for 循环来计算从 1 加到 100 的和:
下面的例子中,我们使用 goto 语句跳出嵌套循环:
- 顺序结构就是按照从头到尾的顺序依次执行每一条C语言代码,不重复执行任何代码,也不跳过任何代码。
- 选择结构也称分支结构,就是程序出现了“岔路口”,会有选择性的执行部分代码,而忽略其它代码;换句话说,程序可以跳过没用的代码,只执行有用的代码。
- 循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。
除了这三种基本结构,C语言其实还有第四种结构,就是跳转结构(通过 goto 语句实现),它允许程序跳转到任意一条代码,然后从此处开始执行。不过,频繁使用跳转结构会使得程序的逻辑变得复杂难懂,调试费劲,所以现在已经不推荐使用跳转结构了。
在大学教材,或者考试题目中,通常只会提到“三种基本结构”,很少涉及第四种结构。
1. 顺序结构
顺序结构是最简单的程序结构,也是代码默认的执行顺序。在程序结构中,程序会按照代码的书写顺序从上到下、从左到右依次执行每一条语句。顺序结构的代码就是傻瓜式执行,没有任何拐弯抹角。本教程前面的代码都是顺序结构,这是初学者最先接触的程序结构。
下面是一个顺序结构的示例,展示了如何计算长方形的面积:
#include <stdio.h> int main() { float length, width, area; length = 5.0; width = 3.0; area = length * width; printf("长方形的面积是:%.2f\n", area); return 0; }
输出结果:
长方形的面积是:15.00
在这个例子中,程序按照顺序执行以下步骤:声明变量、赋值、计算面积、打印结果。每一步都依次执行,不忽略任何代码,也不重复任何代码。
2. 分支结构
在C语言中,我们可以设置一个条件,让程序根据不同的条件执行不同的代码块,这就是分支结构。分支结构就像岔路口,你可以往左走,也可以往右走;具体要怎么走,得根据给出的条件来判断。C语言有三种方式来实现分支结构,分别是 if else 语句、switch case 语句、三目运算符
? :
。下面的例子使用了 if else 分支结构,用来判断一个数是否是偶数:
#include <stdio.h> int main() { int number; printf("请输入一个整数:"); scanf("%d", &number); if (number % 2 == 0) { //这是第一个代码块 printf("%d 是偶数。\n", number); } else { //这是第二个代码块 printf("%d 是奇数。\n", number); } return 0; }
输出结果(假设输入为 7):
请输入一个整数:7↙ 7 是奇数。在这个例子中,程序根据「输入的数字是否能被 2 整除」来决定执行哪个代码块,也即
{ }
中的代码。if 语句检查条件number % 2 == 0
,如果它的结果为真,则执行第一个代码块,否则执行 else 后的代码块。
3. 循环结构
C语言循环结构允许程序重复地执行某个代码块,直到满足特定的条件才会终止。循环结构非常适合处理需要重复执行的任务,比如遍历数组、计算累加的和、分析每一条日志等。C语言提供了三种主要的循环结构,分别是 for 循环、while 循环和 do while 循环。
下面的例子使用 for 循环来计算从 1 加到 100 的和:
#include <stdio.h> int main() { int sum = 0; for (int i = 1; i <= 100; i++) { //这是重复执行的代码块 sum += i; } printf("1 到 100 的和是:%d\n", sum); return 0; }
输出结果:
1 到 100 的和是:5050在这个例子中,for 循环初始化变量 i 为 1,每次循环 i 增加 1,直到 i 大于 100 时停止。循环体内将每次的 i 值加到 sum 中,最终得到 1 到 100 的和。
4. 跳转结构
跳转结构通过 goto 语句实现,它允许程序无条件地跳转到代码中的任意位置,然后从此处开始执行。虽然 goto 语句用起来非常灵活,但是它往往使得程序的逻辑变得混乱难懂,所以现在已经不推荐使用了。下面的例子中,我们使用 goto 语句跳出嵌套循环:
#include <stdio.h> int main() { int i, j; for (i = 1; i < 5; i++) { for (j = 1; j < 5; j++) { if (i == 2 && j == 2) { goto end_loop; } printf("i = %d, j = %d\n", i, j); } } end_loop: printf("跳出循环\n"); return 0; }
输出结果:
i = 1, j = 1 i = 1, j = 2 i = 1, j = 3 i = 1, j = 4 i = 2, j = 1 跳出循环
在这个例子中,当 i 和 j 都等于 2 时,会执行 goto 语句,直接跳到 end_loop 标签处,然后执行它后面的代码。这意味着,整个循环被跳过了,不再执行了。
总结
本文介绍了C语言程序的三种基本结构(顺序结构、选择结构和循环结构),以及一种不常用、不推荐的结构(跳转结构);对于每种结构,笔者还提供了示例,让大家有一个更加直观的认识。
对于初学者来说,本文中的示例大概率看不懂,不过别着急,接下来的章节我会详细介绍它们的用法,let's go。