流程控制
- 🚀前言
- 🦜顺序结构
- 💯 定义
- 💯执行规则
- 🌟选择结构
- 💯if语句
- 💯switch语句
- 💯case穿透规则
- 🤔循环结构
- 💯for循环
- 💯while循环
- 💯do - while循环
- 🖊️总结
🚀前言
大家好!我是EnigmaCoder。本文收录于我的专栏 C,感谢您的支持!
- 前文我们介绍了C语言中一些简单语法。
链接: C语言【基础篇】之简单语法——构建程序大厦的基石解析- 本文我们介绍C语言中三大流程控制结构,分别为顺序结构、选择结构和循环结构。
🦜顺序结构
💯 定义
顺序结构是最简单的程序结构。在顺序结构程序中,程序按照代码书写的顺序依次执行。就好比一个人走在直路上,并且一条路走到黑。C语言中,程序由主函数入口开始执行, 然后逐条语句执行,直到程序结束。
#include<stdio.h>
int main()
{
int a=1;//语句1
int b=2;//语句2
int c=a+b;//语句3
printf("%d",c);//语句4
return 0;
}
- 程序从语句1开始,定义一个整型变量a,再将1赋值给a。
- 语句2同理,将2赋值给b。
- 语句3将a和b相加并赋值给c。
- 语句4打印c的值。
可见,顺序结构程序的执行路径是线性的,其执行顺序完全由代码的书写顺序决定。
💯执行规则
- 计算机从程序的第一条语句开始,逐句执行后续语句,直到遇到程序结束的标志(return或程序自然结束)。
- 每条语句在执行时,必须保证语句完整(
;
)以及语句符合逻辑。
接下来,我们介绍选择结构。
🌟选择结构
在C语言中,选择结构主要有if语句和switch语句。
💯if语句
- 基本if语句:形式为
if(条件表达式) { 语句块; }
。当条件表达式的值为真(非0)时,就会执行语句块中的内容。例如if (a > 10) { printf("a大于10"); }
,这里如果变量 a 的值大于10,就会输出相应的文字。 - if - else语句:格式是
if(条件表达式) { 语句块1; } else { 语句块2; }
。条件表达式为真时执行语句块1,为假(0)时执行语句块2。比如比较两个数大小,if (a > b) { printf("a大"); } else { printf("b大"); }
。 - if - else if - else语句:用于多条件判断,像
if(条件表达式1) { 语句块1; } else if(条件表达式2) { 语句块2; } else { 语句块3; }
。会按顺序判断条件表达式,当某个条件为真时,执行对应的语句块,若都不满足则执行else中的语句块。例如,根据分数划分等级:
if (score >= 90) {
printf("A");
} else if (score >= 80) {
printf("B");
} else if (score >= 70) {
printf("C");
} else if (score >= 60) {
printf("D");
} else {
printf("E");
}
💯switch语句
- 基本形式是 :
switch(表达式) { case 常量表达式1: 语句块1; break;
case 常量表达式2: 语句块2; break;
... default: 语句块n; }
- 首先计算表达式的值,然后与case后的常量表达式的值进行匹配。如果匹配成功,就执行对应的语句块,直到遇到break语句跳出switch结构。如果没有匹配的case,则执行default中的语句块。例如:
switch (day) {
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
// 其他cases...
default:
printf("输入错误");
}
注意,在使用选择结构时,要注意条件表达式的书写正确,并且在switch语句中不要遗漏break语句(除非有意让程序继续执行下一个case),否则可能会出现不符合预期的结果。
💯case穿透规则
- 在C语言的switch语句中,“case穿透”是一个重要特性。
当switch表达式的值与某个case后的常量表达式匹配成功后,就会执行这个case后的语句块。如果这个语句块中没有break语句,程序就不会跳出switch结构,而是继续执行下一个case中的语句,这就是“case穿透”。
- 例如:
switch (num) {
case 1:
printf("One");
case 2:
printf("Two");
break;
case 3:
printf("Three");
break;
default:
printf("Other");
}
-
如果 num 的值是1,会先输出 One ,由于没有遇到break,接着会输出 Two 。如果 num 的值是2,只会输出 Two ,因为这个case中有break,执行完后就跳出了switch语句。
-
这种规则在某些情况下很有用,比如多个case需要执行相同的操作时,可以有意利用case穿透来减少代码量。不过,在大多数情况下,为了保证程序执行逻辑符合预期,每个case执行完后都要加上break语句。
🤔循环结构
在C语言中,循环结构主要有三种:for循环、while循环和do - while循环。
💯for循环
- 基本语法是
for(初始化表达式; 条件表达式; 更新表达式) { 循环体语句; }
。初始化表达式用于初始化循环变量,条件表达式用于判断是否继续循环,更新表达式用于更新循环变量。 - 例如,计算1到100的整数和:
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
}
printf("1到100的和为:%d", sum);
在这个例子中, int i = 1 是初始化表达式, i <= 100 是条件表达式, i++ 是更新表达式, sum += i 是循环体语句。
💯while循环
- 语法为
while(条件表达式) { 循环体语句; }
。只要条件表达式的值为真(非0),就会一直执行循环体语句。 - 例如,打印出小于10的正整数:
int num = 1;
while(num < 10) {
printf("%d ", num);
num++;
}
这里 num < 10 是条件表达式, printf("%d ", num); 和 num++;
是循环体语句。
💯do - while循环
- 语法是
do { 循环体语句; } while(条件表达式);
。它先执行一次循环体,然后再判断条件表达式是否为真,为真则继续循环,为假则结束循环。 - 例如:
int count = 0;
do {
printf("Hello\n");
count++;
} while(count < 3);
此代码会先打印一次 Hello ,然后因为 count < 3 为真,再循环两次,一共打印三次 Hello 。这种循环保证了循环体至少被执行一次。
🖊️总结
本文我们主要介绍了C语言中的流程控制结构,分别为顺序结构、选择结构以及循环结构。希望能帮助到您。