04:C语言流程控制

C语言流程控制

  • 1、选择结构
    • 1.1、第一种:if ...else / if ...else if...else
    • 1.2、第二种:switch case
  • 2、循环结构
    • 2.1、第一种:for循环
    • 2.1、第二种:while循环
    • 2.2、第三种:do...while循环

在C语言程序里,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构

1、选择结构

逻辑上有一种类型,叫bool类型(又写作boolean类型,中文叫布尔类型)。布尔类型只有两个值,真和假。

C语言中选择结构一共有两种:

1.1、第一种:if …else / if …else if…else

if (bool值)				// 如果bool值为真,则执行代码段1,否则执行代码段2
{
	代码段1
}
else
{
	代码段2
}
***********************************************************************
if (bool值1)				// 如果bool值1为真,则执行代码段1
{							// 否则则判断bool值2是否为真,若为真则执行代码段2
	代码段1					// 否则直接执行代码段3
}
else if (bool值2)			// 开头的if和结尾的else都只能有一个,但是中间的
{							// else if可以有好多个。
	代码段2
}
else
{
	代码段3
}

只要执行了其中的一个代码段就会立马跳出判断语句。不再会进行判断,执行下面的语句

1.2、第二种:switch case

涉及到的C语言关键字:switch case break default

switch (变量)				// 执行到这一句时,变量的值已经知道了
{							// switch case语句执行时,会用该变量的值一次与各个
case 常数1:			    	// case后的常数去对比,试图找到第一个匹配项。
	代码段1;			        // 找到匹配的项目后,就去执行该case对应的代码段
	break;				    // 如果没找到则继续下一个case,直到default。
case 常数2:				    // 如果前面的case都未匹配,则default匹配。
	代码段2;
	break;
	
.....

default:
	代码段n;
	break;
}

【注】
1、case中必须是常数,而且必须是整形(不能是float double,可以是int char)
2、一般来说,每个case中代码段后都必须有一个break;如果没有,结果可能会让你大吃一惊
3、case之后一般都会有default。语法上允许没有default,但是建议写代码时一定要写。

switch case和if else对比:
1、if else适合对比条件比较复杂,但是分支比较少的情况;switch case适合那种对比条件
不复杂,但是分支数很多的情况。
2、所有的选择结构,其实都可以用if else来实现。但是只有部分才可以用switch case实现。
一般的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合使用switch case,则不得不使用if else。

代码示例可以参考郝斌版C语言。

2、循环结构

C语言中常用的循环结构有三个:for循环、while循环、do while循环。

2.1、第一种:for循环

for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)
{ 
 	循环体 
}
 ******************************************
eg:for(i=0;i<=4;i++)
{
 	nihao;
}//循环次数 = 4 - 0 + 1

for循环的执行步骤:
1、先进行循环控制变量初始化
2、执行循环终止条件,如果判断结果为真,则进入第3步;如果为假则循环终止,退出。
3、执行循环体。
4、执行循环控制变量增量,转入第2步。
以例子位例:由此可见,i = 0只执行一次,进入循环后,就不在执行i = 0了,执行完循环后i的值位5

int i = 0;                 int i = 0;
for(;i<=4;i++)             for( ;i<=4;)
{						   {			
	nihao;                     nihao;
	                           i++;
}                          }
//这2段代码和上面的例子代码等价的

【注】

for(; ;);//此乃死循环

2.1、第二种:while循环

i = 1;
sum = 0;					// 循环初始化
while (i < 100)				// 终止条件
{
	printf("i = %d.\n", i);
	sum += i;				// 循环体
	i += 2;					// 循环控制增量,属于循环体的一部分
}

while循环的执行步骤:
1、首先是循环初始化。这一部分其实不属于while循环本身。
2、先判断终止条件是否满足。如果是真,则进入第2步;否则直接退出。
3、执行循环体,然后转入第2步。

while(1)
	;//死循环

2.2、第三种:do…while循环

i = 1; sum = 0;					// 初始化条件
do
{ 	printf("i = %d.\n", i); 	
       	sum += i;
		i += 2;					// 增量,循环体的一部分
}
while (i < 100);			// 终止条件,记住这里有个;号

do while循环的执行步骤:
1、首先是循环初始化。这一部分其实不属于do while循环本身。
2、执行循环体(循环控制变量的增量是循环体的一部分)
3、判断终止条件。若成立,则转入2;若不成立则退出

while循环和do while循环哪里不同?while循环是先判断后执行,do while循环是先执行后判断等循环开始转了之后,其实是一样的。do…while循环中循环体一定会执行一次。

代码示例可以参考郝斌版C语言。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】09.树与二叉树

一、树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 根结点&#xff1a;根…

webGL可用的14种3D文件格式,但要具体问题具体分析。

hello&#xff0c;我威斯数据&#xff0c;你在网上看到的各种炫酷的3d交互效果&#xff0c;背后都必须有三维文件支撑&#xff0c;就好比你网页的时候&#xff0c;得有设计稿源文件一样。WebGL是一种基于OpenGL ES 2.0标准的3D图形库&#xff0c;可以在网页上实现硬件加速的3D图…

阶段三:项目开发---大数据开发运行环境搭建:任务2:安装配置ZooKeeper

任务描述 知识点&#xff1a;安装配置ZooKeeper 重 点&#xff1a; 安装配置ZooKeeper 难 点&#xff1a;无 内 容&#xff1a; ZooKeeper是一个开源分布式协调服务&#xff0c;其独特的Leader-Follower集群结构&#xff0c;很好的解决了分布式单点问题。目前主要用于诸…

IT之家最新科技热点 | 小米 AI 研究院开创多模态通用模型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

一.2.(3)放大电路的图解分析方法和微变等效电路分析方法;

放大电路的主要分析方法:图解法、微变等效电路法 这里以共射放大电路为例 (1) 图解法: 1.静态分析 首先确定静态工作点Q,然后根据电路的特点,做出直流负载线,进而画出交流负载线,最后,画出各极电流电压的波形。求出最大不失真输出电压。 估算IBQ&#xff0c;然后根据数据手册里…

二分查找2

1. 山脉数组的峰顶索引&#xff08;852&#xff09; 题目描述&#xff1a; 算法原理&#xff1a; 根据题意我们可以将数组分为两个部分&#xff0c;一个部分是arr[mid-1]<arr[mid]&#xff0c;另一个部分为arr[mid-1]>arr[mid]&#xff0c;此时不难发现我们可以将二分…

U.S.News发布全美最佳本科AI专业排名

10 加州大学圣迭戈分校 University of California, San Diego UCSD的人工智能项目从事广泛的理论和实验研究&#xff0c;学校的优势领域包括机器学习、不确定性下的推理和认知建模。除了理论学习&#xff0c;UCSD教授非常注重把计算机知识运用到自然语言处理、数据挖掘、计算…

从模拟到预测,从智能到智慧:数字孪生技术在水库管理中的应用演变,推动水利行业向更高层次的智慧化迈进

目录 引言 一、数字孪生技术概述 二、数字孪生技术在水库管理中的应用演变 1. 从模拟到预测&#xff1a;构建精准的数字孪生模型 2. 从智能到智慧&#xff1a;实现全面感知与精准控制 3. 推动公众参与与透明化管理 三、数字孪生技术推动水利行业向更高层次的智慧化迈进 …

密室逃脱——收集版修改测试

一、原版修改 1、导入资源 Unity Learn | 3D Beginner: Complete Project | URP 2、设置Scene 删除SampleScene&#xff0c;打开UnityTechnologies-3DBeginnerComplete下的MainScene 3、降低音量 (1) 打开Hierarchy面板上的Audio降低音量 (2) 打开Prefabs文件夹&#xf…

推荐3款【王炸级别】的效率软件,免费无广告,你一定要收藏

Temp Cleaner Temp Cleaner 是一款专为 Windows 操作系统设计的临时文件清理工具。它的主要功能是安全且快速地清理磁盘上的临时文件和系统缓存&#xff0c;从而释放磁盘空间。该软件体积小巧&#xff08;仅有826KB&#xff09;&#xff0c;并且是无广告的绿色软件&#xff0c;…

智能交通(3)——Learning Phase Competition for Traffic Signal Control

论文分享 https://dl.acm.org/doi/pdf/10.1145/3357384.3357900https://dl.acm.org/doi/pdf/10.1145/3357384.3357900 论文代码 https://github.com/gjzheng93/frap-pubhttps://github.com/gjzheng93/frap-pub 摘要 越来越多可用的城市数据和先进的学习技术使人们能够提…

初学Spring之 AOP 面向切面编程

AOP&#xff08;Aspect Oriented Programming&#xff09;面向切面编程 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 是面向对象&#xff08;OOP&#xff09;的延续 AOP 在 Spring 中的作用&#xff1a; 1.提供声明式事务 2.允许用户自定义切面 导…

Java 基础--File - IO流(2)

I/O流 定义 数据从硬盘流向内存为输入流&#xff0c;数据从内存流向硬盘为输出流。输入也叫读取数据&#xff0c;输出也叫写出数据。 IO分类 1.按照数据的流向分为&#xff1a;输入流和输出流 ①输入流&#xff1a;把数据从其他设备上读取到内存中的流 ②输出流&#xff1…

pdf怎么转换成图片格式文件,pdf文档怎么转换成图片格式

在数字化时代&#xff0c;pdf文件转换成图片格式是一种常见的操作&#xff0c;无论是在工作还是日常生活中&#xff0c;我们总会遇到需要将pdf文件转换为图片的需求。这可能是因为图片格式更易于分享、展示或编辑。那么&#xff0c;如何高效地将pdf转换成图片呢&#xff1f;本文…

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT对话情绪识别 近期确实太忙&#xff0c;此处仅作简单记录&#xff1a; 模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c…

#数据结构 顺序表

线性表 顺序表 每种结构都有它存在意义 线性表的顺序存储实现指的是用一组连续的存储单元存储线性表的数据元素。 概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性表&#xff0c;一般情况下采用数组存储。在数组上完成数据的增查改删。 逻辑结构&#…

阶段三:项目开发---大数据开发运行环境搭建:任务8:安装配置Redis

任务描述 知识点&#xff1a;安装配置Redis 重 点&#xff1a; 安装配置Redis 难 点&#xff1a;无 内 容&#xff1a; Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可…

数据结构1:C++实现变长数组

数组作为线性表的一种&#xff0c;具有内存连续这一特点&#xff0c;可以通过下标访问元素&#xff0c;并且下标访问的时间复杂的是O(1)&#xff0c;在数组的末尾插入和删除元素的时间复杂度同样是O(1)&#xff0c;我们使用C实现一个简单的边长数组。 数据结构定义 class Arr…

【手写数据库内核组件】01 解析树的结构,不同类型的数据结构组多层的链表树,抽象类型统一引用格式

不同类型的链表 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 不同类型…

图像基础知识

图像卷积 卷积(convolution)是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。 卷积概念是两个变量在某范围内相乘后求和的结果。图像处理中的卷积概念:数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用卷积…