10、流程控制语句

1、流程控制语句介绍

流程控制语句可以控制程序的执行过程,流程控制语句可以分为4种结构:

       a、顺序结构

       b、选择结构

       c、循环结构

       d、跳转结构

2、顺序结构

        程序是从main的第一句执行到最后一句

        上一句执行完后才能执行下一句

        顺序结构没有语句,是程序的一种自然而然的执行流程。

3、选择结构

        两类:if-else组合  switch-case

        

3.1、if-else组合

        3类:单个if    二选一if-else  多选一 if - else if... - else

        a、单个if

        if(条件表达式)

        {

                // 条件表达式为真执行的语句块

        }

        例:          ·

#include<stdio.h>int main(void)
{int a; printf("------前-------\n"); scanf("%d",&a);if(!a)  // a == 0{printf("---条件为真----\n");} printf("------后-------\n"); return 0;
}

        b、二选一if-else

        if(条件表达式)

        {

                // 语句块1  --- 条件表达式为真执行

        }

        else

        {

                // 语句块2 ---- 条件表达式为假执行

        }

        例:

                需求:输入判断是偶数还是奇数

                思路:

                        输入一个数

                        如果 数 % 2 == 0

                        {

                                输出 偶数

                        }

                        否则

                        {

                                输出 奇数

                        }

                代码1:

#include<stdio.h>int main(void)
{int a;printf("请输入一个数据:");scanf("%d",&a);if(a % 2 == 0){printf("偶数");}else{printf("奇数");}return 0;
}

        c、多选一 if - else if... - else

        if(条件表达式1)

        {

                // 语句块1  --- 条件表达式1为真的时候执行

        }

        else if(条件表达式2)

        {

                // 语句块2 ---- 条件表达式1为假,条件表达式2为真的时候执行

        }

        // ...

        else if(条件表达式n)

        {

                // 语句块n ---- 条件表达式1-n-1为假,条件表达式n为真的时候执行

        }

        else

        {

                // 语句块n+1  ---- 前面所有的表达式都为假的时候执行语句

        }

        例:

               需求: 输入星期数字,输出对应的星期中文        

#include<stdio.h>int main(void)
{int a;scanf("%d",&a);if(a==1){printf("星期一"); }else if(a==2){printf("星期二"); }else if(a==3){printf("星期三"); }else if(a==4){printf("星期四"); }else if(a==5){printf("星期五"); }else if(a==6){printf("星期六"); }else if(a==7) {printf("星期日"); }else{printf("输入错误"); } return 0;
}
3.2、switch-case

---- 等值判断 不适合表达范围 

   

格式:

        switch(表达式)

        {

                case 常量1:

                        语句块1;

                        break;  // 结束匹配

                case 常量2:

                        语句块2;

                        break;  // 结束匹配

                // 。。。

                default:

                        语句块n;

                        break;   // default里面的break可加可不加

        }

执行流程:

        计算表达式的是和常量进行判断是否相等,如果相等就执行后面的语句块,直到break;

                                                                          如果不相等就继续向下匹配..

                                                                           匹配了所有都不想等,就执行default后面的语句。

  

例:

    需求:输入星期数字,输出对应的星期中文

  

#include<stdio.h>int main(void)
{int a;printf("输入一个数据:");scanf("%d",&a);switch(a){case 1:printf("星期一");break;case 2:printf("星期二");break;case 3:printf("星期三");break;case 4:printf("星期四");break;case 5:printf("星期五");break;case 6:printf("星期六");break;case 7:printf("星期日");break;					default:printf("输入有误");break;}return 0;
}

拓展:

        break在switch-case里面的作用:结束匹配

        switch-case 某些case后面如果没有break的时候,会从匹配的case开始执行直到遇到break结束。

        多个case数值可以共用同一段代码

        

        例:

                需求:求一个月的总天数 --- 输入月份和年份

                分析:

                        1 3 5 7 8 10 12 -- 31天

                         4 6 9 11 --- 30天

                        2

                                年份 -- 闰年 -- 29天

                                年份 -- 闰年 -- 28天

                

#include<stdio.h>int main(void)
{int year,month;printf("请输入年份和月份");scanf("%d %d",&year,&month); switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31"); break;case 4:case 6:case 9:case 11:printf("30"); break;case 2:if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){printf("29"); }else{printf("28"); }break;default:printf("输入有误");  }return 0;
}

4、循环结构

        循环结构用于重复执行一段代码

        循环结构分为:for  while  do-while   

4.1、for循环

定义一个循环变量 -- 循环的数据或者循环的次数

for(变量赋初值;循环条件;变量的改变)

{

        // 循环体

}

练习:

        输出1~10中的每一个数

#include<stdio.h>int main(void)
{int i;for(i=1;i<=10;i++){printf("%d ",i);}return 0;
}

练习:

        计算1+2+3...+10

#include<stdio.h>int main(void)
{int i;// 求和int sum = 0;	 for(i=1;i<=10;i++){// i值数据// printf("%d ",i);sum = sum + i; }printf("%d",sum);return 0;
}
4.2、while循环

while(条件表达式)

{

        // 循环体

}

练习:

        需求:输出所有小写字母  ‘a’ ~ 'z'

        分析:

                设置什么变量存储字符 char

                起始填充'a'

                循环执行的是

                输出 变量里面的字符

                变量 = 变量 + 1

                循环条件: 变量 <= 'z'

#include<stdio.h>int main(void)
{char ch = 'a';while(ch <= 'z'){printf("%c ",ch);ch++;}return 0;
}
4.3、do-while循环

do

{

        // 循环体

}while(条件表达式);

执行流程:

        先执行循环体 判断条件表达式,如果为真继续执行,执行后再判断

        如果为假结束循环

        例:输出 1~ 10;

        

#include<stdio.h>int main(void)
{int i = 1;do{printf("%d",i);i++;}while(i<=10);return 0;
}
4.4、for、while、do-while区别

for和while

        for循环一般适用于知道次数 ,知道开始数值和结束数值

        while循环知道结束条件

while和do-while

        while 先判断表达式 如果为真执行语句,如果为假结束循环                                         >=0

        do-while 先执行一遍循环体,然后再判断表达式,如果为真继续执行,如果为假结束 >=1

5、跳转结构

        跳转结构有:break;  continue;   goto; return;

5.1、break

        break:跳出离它最近的一层循环

        

#include<stdio.h>int main(void)
{int i;for(i=1;i<10;i++){if(i % 3 == 0){break;}printf("%d ",i);	// 1 2 }	return 0;
}
5.1、continue

        continue:跳出本次循环,循环还在继续

#include<stdio.h>int main(void)
{int i;for(i=1;i<10;i++){if(i % 3 == 0){continue;}printf("%d ",i);	// 1 2 4 5 7 8  --- 除了3的倍数都会输出		}return 0;
}
5.3、goto

        goto:无条件跳转

        执行goto要跳转到哪一个标识符就跳到对应标识符定义的位置。

        标识符:标记符号 -- 自定义  -- 建议大写

                标识符定义:标识符名:

                使用标识符跳转:goto 标识符名;

                注意:标识符定义和goto跳转语句必须在一个函数内。

        例:

        

#include<stdio.h>int main(void)
{	int count = 0; A:printf("-----goto语句之前-------\n");count++;if(count < 3){goto A;}printf("-----goto语句之后-------\n");printf("------最后一条语句-------\n"); return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

005 MATLAB符号微积分

前言&#xff1a; 在MATLAB中&#xff0c;数值与符号的主要区别在于它们的处理方式和应用场景 数值计算适用于实际的数值计算问题&#xff0c;如矩阵运算、数据分析等。符号计算适用于符号推导、公式化简和符号解析&#xff0c;如理论物理和工程计算。 01 符号对象 1.基本符…

“岗位复合化、技能层次化” 高职大数据技术专业人才培养实践

在全球数字化浪潮的推动下&#xff0c;大数据技术已经成为引领社会进步和经济发展的核心动力。随着《关于深化现代职业教育体系建设改革的意见》等系列指导问文件的发布&#xff0c;我国高职大数据技术专业的教育正迎来全新机遇与挑战。这些政策不仅明确了职业教育改革的方向&a…

51c自动驾驶~合集38

我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示&#xff01;爆拉3D检测、Occ、高精地图等四大任务&#xff01; 受Tesla的技术的推动&#xff0c;越来越多的厂商开始走"纯视觉"的路线&#xff0c;多数方案还…

MongoDB集群分片安装部署手册

文章目录 一、集群规划1.1 集群安装规划1.2 端口规划1.3 目录创建 二、mongodb安装&#xff08;三台均需要操作&#xff09;2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …

AIGC--------AIGC在医疗健康领域的潜力

AIGC在医疗健康领域的潜力 引言 AIGC&#xff08;Artificial Intelligence Generated Content&#xff0c;人工智能生成内容&#xff09;是一种通过深度学习和自然语言处理&#xff08;NLP&#xff09;等技术生成内容的方式。近年来&#xff0c;AIGC在医疗健康领域展现出了极…

数据结构 (18)数的定义与基本术语

前言 数据结构是计算机科学中的一个核心概念&#xff0c;它描述了数据元素之间的关系以及这些元素在计算机中的存储方式。 一、数的定义 在计算机科学中&#xff0c;“数”通常指的是树形数据结构&#xff0c;它是一种非线性的数据结构&#xff0c;由节点&#xff08;或称为元素…

基于PoE交换机的智慧停车场监控组网应用

伴随城市发展快速&#xff0c;汽车保有量也不断增长&#xff0c;导致停车管理问题也愈发凸显。针对包括路侧停车位、地面停车场、地下停车场等场景的停车管理需求&#xff0c;通常会部署监控设备进行车位监测、现场安全监测等&#xff0c;助力构建智能化停车管理。因此如何为分…

【RocketMQ事务消息如何实现】

贴上一段实现代码, 业务中可以参考使用 Component public class TestIdpSender {public void sendInTransaction(String topic, String tag, String message){Message<String> msg MessageBuilder.withPayload(message).build();String dt topic ":" tag;…

ENSP IPV6-over-IPV4

IPv6是网络层协议的第二代标准协议&#xff0c;一个IPv6地址同样可以分为网络前缀和主机ID两个部分。 可以将IPV4的网络看成IPV6的承载网&#xff0c;只有IPv4网络是连通的&#xff0c;则IPv6网络才有可能连通。所以配置的时候需要先配置IPv4网络的路由功能&#xff0c;再配IP…

vue3透传Attributes

vue3透传Attributes,组件名称上写的事件、style、类名也会生效&#xff1b; 如果是透传事件&#xff0c;点击子组件内部按钮&#xff0c;会执行组件内部&#xff0c;再执行组件名上的 父组件 <script setup> import ChildView from ./ChildView.vuefunction onClick()…

18. C++STL 4(vector的使用, 空间增长, 迭代器失效详解)

⭐本篇重点&#xff1a;vector容器的使用详解 ⭐本篇代码&#xff1a;c学习/08.vector_test 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. vector的介绍 二. vector的使用 2.1 vector的定义 * 2.2 vector的迭代器和遍历 a operator[]访问 b vect…

深入探索机器学习性能优化的关键路径——《特征工程训练营》

通过“特征工程”技术&#xff0c;可优化训练数据&#xff0c;提升机器学习流程的输出效果&#xff01;“特征工程”基于现有数据设计相关的输入变量&#xff0c;由此简化训练过程&#xff0c;增强模型性能。调整超参数或模型的效果都不如特征工程&#xff1b;特征工程通过改变…

吉他初学者学习网站搭建系列(8)——如何练习音阶

文章目录 背景实现吉他面板音阶位置音阶识别 结语 背景 大家好&#xff0c;我是一个爱好音乐的非典型程序员&#xff01;我最近又往自己的网站中集成了一个模块——音阶。下面介绍一下背景。 很多吉他初学者在掌握了一些音阶知识后&#xff0c;可能不知道怎么训练自己的对音阶…

15.三数之和 python

三数之和 题目题目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;题目链接 题解Python 实现解释提交结果 题目 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满…

tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录

这些error的坑&#xff0c;肯定是很多人不想看到的&#xff0c;我的开源软件PakePlus是使用tauri开发的&#xff0c;PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序&#xff0c;利用Tauri轻松构建轻量级多端桌面应用和多端手机应用&#xff0c;为了实现发布的时候…

Android 12.0 DocumentsUI文件管理器首次进入默认显示内部存储文件功能实现

1.前言 在12.0的系统rom定制化开发中,在关于文件管理器的某些功能中,在首次进入文件管理器的时候默认进入下载 文件夹,点击菜单选择内部存储的时候,会显示内部存储的内容,客户开发需要要求默认显示内部存储的文件 接下来分析下功能的实现 如图: 2.DocumentsUI文件管理器首…

抓包之wireshark基础用法介绍

写在前面 wireshark作为最优秀的抓包工具&#xff0c;有必要详细的看下其基本用法&#xff0c;所以本文就一起来做这件事吧&#xff01; 1&#xff1a;初步介绍 打开wireshark首先会进入如下的界面&#xff1a; 想要开始抓包&#xff0c;需要进行如下操作&#xff1a; 接着…

【Java基础入门篇】二、控制语句和递归算法

Java基础入门篇 二、控制语句和递归算法 2.1 switch-case多分支选择语句 switch执行case语句块时&#xff0c;若没有遇到break&#xff0c;则运行下一个case直到遇到break&#xff0c;最后的default表示当没有case与之匹配时&#xff0c;默认执行的内容&#xff0c;代码示例如…

【人工智能学习之STGCN训练自己的数据集】

STGCN训练自己的数据集 准备事项数据集制作视频转jsonjsons转jsonjson转npy&pkl 训练STGCN添加图结构修改训练参数开始训练测试 准备事项 st-gcn代码下载与环境配置 git clone https://github.com/yysijie/st-gcn.git cd st-gcn pip install -r requirements.txt cd torc…

Dify+Docker

1. 获取代码 直接下载 &#xff08;1&#xff09;访问 langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, …