C语言程序控制流程

C语言程序控制流程前言 在程序中 程序运行的流程控制决定程序是如何执行的 是我们必需要掌握的 一 三大流程控制 1 顺序控制 2 分支控制 3 循环控制 二 顺序控制 2 1 程序从上到下逐行的执行 中间没有任何判断和跳转 2 2 顺序结构举例及注意事项 C 语言中定于变量是采用的是向前引用原则 即先声明在使用

大家好,我是讯享网,很高兴认识大家。

前言

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必需要掌握的。


一、三大流程控制

(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: 语句块1break; case 常量值2: 语句块2break; ... 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 跳转语句

  1. 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语言程序控制流程的小伙伴们能够提供到帮助,我相信,只要肯花时间去学习、去思考,我们都能学会,都会学好,相信自己,加油!

小讯
上一篇 2025-02-26 08:32
下一篇 2025-02-11 18:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38359.html