前言
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必需要掌握的。
一、三大流程控制
(1) 顺序控制
(2) 分支控制
(3) 循环控制
二、 顺序控制
2.1 程序从上到下逐行的执行,中间没有任何判断和跳转

讯享网
2.2 顺序结构举例及注意事项
C语言中定于变量是采用的是向前引用原则(即先声明在使用)
#include<stdio.h> int main() {
int num1 = 10; int num2 = num1 + 20; return 0; } //错误写法 #include<stdio.h> int main() {
int num2 = num1 + 20; //报错: 为识别标识符num1 int num1 = 10; return 0; }
讯享网
三、分支控制
作用:让程序能够有选择的执行
3.1 有三种分支控制:
(1) 单分支 if()
(2) 双分支 if()… else…
(3) 多分支 if()… else if … else…
3.2 单分支
基本语法
if (条件表达式) {
代码块;
}
说明: 当条件表达式为真时(非0),则执行{ }中的代码块,当条件表达式为假时(0),则不执行{ }中的代码块。
代码如下(示例):
讯享网#include<stdio.h> int main() {
int num = 10; //定义变量num并赋值为10 if (num > 5){
//判断num是否大于5,条件成立则执行{} 里面的printf输出语句 printf("%d", num); //输出10 } return 0; }
单分支对应的流程图

3.3 双分支
基本语法
if (条件表达式) {
代码块1;
}
else {
代码块2;
}
说明: 当条件表达式为真,就会执行代码块1,否则执行代码块2。
代码示例
#include<stdio.h> int main() {
int age = 0; scanf("%d", &age); //输入年龄 if (age >= 18){
//如果输入的年龄大于等于18,则输出成年 printf("成年"); } else{
// 如果输入的年龄小于18,输出未成年 printf("未成年"); } return; }
双分支对应的流程图

3.4 多分支
基本语法
if (条件表达式1) {
代码块1;
}
else if (条件表达式2) {
代码块2;
}
else if (条件表达式3) {
代码块3;
}
…
else {
代码块n;
}
说明:
(1) 当条件表达式1成立时(为真),执行代码块1;
(2) 如果条件表达式1不成立时(为假),才去判断条件表达式2是否成立;
(3) 如果条件表达式2成立时(为真),执行代码块2;否则去判断条件表达式3是否成立;
(4) 依此类推,当所有的条件表达式都不成立,则执行else分支的代码块n。
讯享网代码示例 #include<stdio.h> int main() {
//输入一个成绩: 成绩在90-100分为优秀, // 在75-89为良好,在60-74为及格,在60分以下为不及格 float score = 0.0f; printf("请输入成绩: "); scanf("%f", &score); if (score >= 90 && score <= 100){
printf("%.1f为优秀\n",score); } else if (score >= 75 && score < 90){
printf("%.1f为良好\n",score); } else if (score >= 60 && score < 75) {
printf("%.1f为及格\n",score); } else{
printf("%.1f为不及格", score); } return 0; }
多分支对应的流程图

注意:只能有一个执行入口
3.5 嵌套分支
int main() {
if (条件表达式1) {
//注意:条件表达式1成立时,才会执行到里面的嵌套分支语句再进行分支判断 //包含的可以是单分支、双分支、多分支 if (条件表达式2) {
} else {
} } return 0; }
建议:嵌套最好不要超过3层,否则里面的逻辑容易让自己混乱。
3.6 switch分支结构
介绍:在编程中,一个常见的问题就是检测一个变量是否符合某种条件,如果不符合,再用另一个值来检测,以此类推。
基本语法:
讯享网switch(表达式) {
case 常量值1: 语句块1; break; case 常量值2: 语句块2; break; ... case 常量值n: 语句块n; break; default: 语句块n+1; break; }
switch分支结构的流程图

说明:
(1) switch 语句中的表达式值必须是整型、字符型或者枚举类型;
(2) 当表达式的值与某个常量值相等,则执行该case语句后的若干个语句,直到遇break语句为止;
(3) 如果该case语句中没有break语句,将继续执行后面case中的若干个语句,直到遇break为止(穿透)
(4) 若没有一个常量值与表达式的值相同,则执行default后面的语句。
(5) default语句为可选的,如果它不存在,且switch语句中表达式的值与任何case的常量值相同,switch语句则不做任何处理。
注意:同一个switch语句,case的常量值必须互不相同,且case中的常量值必须为常量,不能是变量。
四、循环控制
说明:循环语句就是在满足一定条件的情况下反复执行某一个操作的语句。C中提供了3中常用的循环语句,分别是while循环语句、do…while循环语句和 for循环语句。
4.1 while循环语句
介绍:while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。语法如下:

循环变量初始化; while (循环条件) {
语句; 循环变量迭代; }
while语句执行流程图

说明:当循环条件的返回值为真时,则执行"{}" 中的语句,当执行完"{}" 中的语句后,重新判断循环条件的返回值,直到循环条件返回的结果为假时,退出循环。
代码示例
讯享网#include<stdio.h> int main() {
//计算1 - 100的和 int x = 1; int sum = 0; while (x <= 100) {
sum += x; x++; } printf("1-100的和 = %d", sum); return 0; }
运行结果:

注意:不要在while表达式的括号后加 “;”。如:
while(x == 10); printf("x的值为%d", x);
这时程序会认为要执行一条空语句,而进入无限循环(死循环)。
4.2 do…while循环语句
介绍:do…while 循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立,再执行循环体,而do…while循环语句则先执行一次循环后,再判断条件是否成立。也就是说,do…while循环语句 “{}” 中的程序段至少要被执行一次。语句如下:
讯享网循环变量初始化; do {
循环体; 循环变量迭代; }while(循环条件);
注意:do…while 语句在结尾处有一个分号 ;
do…while 语句执行流程图:

代码示例:
#include<stdio.h> int main() {
//用户密码验证 int password = 0; do {
printf("请输入6位数密码: \n"); scanf("%d", &password); //输入密码 } while ( != password); //如果输入的密码不等于,就继续输入,直到密码输入成功,就会结束do...while语句 printf("登录成功"); return 0; }
运行结果:

4.3 for循环语句
讯享网 for (循环变量初始化; 循环条件; 循环变量迭代) {
循环体; }
执行流程:
在执行for循环时,首先执行循环变量初始化,下一步判断循环条件的值,若循环条件的值为true,则进入循环体;在执行完循环体后紧接着计算循环变量迭代。这样一轮循环就结束了。第二轮循环从判断循环条件开始,若循环条件返回true,则继续循环,否则跳出整个for循环语句。
for循环语句执行流程图:

代码示例:
#include<stdio.h> int main() {
//计算1-100的和 int sum = 0; for (int i = 1; i <= 100; i++) {
sum += i; } printf("1-100的和 = %d", sum); return 0; }
运行结果:

4.4 多重循环控制
讯享网#include<stdio.h> int main() {
for (int i = 1; i <= 4; i++) {
// 第一层循环 4次 for (int j = 1; j <= 3; j++) {
// 第二层循环 3次 printf("好好学习,天天向上\n"); // 最终输出 4*3 句 好好学习,天天向上 } } return 0; }
运行结果:

代码示例:打印九九乘法表
#include<stdio.h> int main() {
//打印九九乘法表 for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
int plus = i * j; //计算乘积 printf("%d*%d=%d\t", j, i, plus); } printf("\n"); //每执行完一层循环换行输出 } }
运行效果:

4.5 跳转语句
- break语句
介绍:break 语句用于终止某个语句块的执行,一般使用在 switch 或者循环语句中。
代码演示:
讯享网#include<stdio.h> int main() {
//输出1 - 10 出现的第一个偶数 for (int i = 1; i <= 10; i++){
if (i % 2 == 0){
//如果i是偶数 printf("%d\n", i); //输出i的值 break; //结束循环 } } printf("---end---"); //结束时输出end return 0; }
运行结果:

注意:
多重循环(循环嵌套)情况下,break语句将只会使程序流程跳出包含它的最内层的循环结构。
2.continue 语句
介绍:continue语句不是立即跳出循环体,而是跳出本次循环,回到循环的条件测试部分,重新开始执行循环。
代码演示:
#include<stdio.h> int main() {
for (int i = 1; i <= 5; i++){
if (i % 2 == 0) {
//如果i是偶数 continue; //跳到下一循环 } printf("%d\n", i); //输出i的值 } return 0; }
运行效果:

注意:
continue语句,只能配合循环语言使用,不能单独和switch/if使用。
总结
流程控制这一基础部分都是要我们必须掌握的,并且也不难,希望这一篇文章对刚接触到C语言程序控制流程的小伙伴们能够提供到帮助,我相信,只要肯花时间去学习、去思考,我们都能学会,都会学好,相信自己,加油!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38359.html