C语言 选择结构

article/2025/4/23 3:46:38

一.选择结构

1. 单分支选择结构
2. 双分支选择结构
3. 多分支选择结构

1. 单分支选择结构
1.1何为单分支选择结构?
从开始到结束之间只有一条路可供选择。
1.2何为双分支结构?
从开始到结束之间有两条路可供选择。
1.3何为多分支结构
从开始到结束之间有三条及三条以上的路可供选择。

**接招看题004.**用单分支选择结构的条件语句编程,计算并输出两个整数的最大值
在这里插入图片描述

2. 双分支选择结构
2.1 如何使用双分支控制条件的语句?

if(表达式P) 语句1
else 语句2
使用if-else流程是:如果表达式P的值为真,就执行语句1,否则就执行语句2.

知识补丁

if-else语句跟简单的if语句的区别是?
使用简单的if语句,可供的选择是:要么执行一条语句;要么就不执行,跳过它。而if-else 语句可供的选择是:在两条语句中选择其中的一条来执行。
接题看招005:用双分支控制条件的语句编程,计算并输出两个整数的最大值。**
在这里插入图片描述
知识拓展:条件运算符和条件表达式
1.何为条件运算符?(关于条件运算符知多少?)
条件运算符是C语言中的唯一一个三元运算符,即参与运算时需要三个操作数。比如通过加减乘除运算符,将X,Y,Z(任意三个变量)进行相关的运算。
2.条件运算符跟if-else有何区别?
由条件运算符构成的条件表达式,会使程序变得更加简单,直观。
接招看题006:用条件运算符编程,计算并输出两个整数的最大值

在这里插入图片描述

知识补丁::

1. 记住这句话:程序是解决问题的一种算法。是使用代码(字符)来实现的。
因此,解题前,我们首先要知道解决问题的算法是什么,然后将算法转换成代码(字符)
本题算法:首先通过关系运算符,比较两个数的关系,即谁大谁小?
然后将最大值赋值给变量max,或者说将最大值存于变量max中。*
2.何为条件表达式?
表达式1?表达式2:表达式3
讲解说明:当表达式1的值为真,那么将表达式2的结果赋值给表达式1,否则将表达式3的结果赋值给表达式1.
现在讲解接招看题006是如何使用条件表达式的。
max=a>b?a:b;//注意运算符的优先级
运算符的优先级顺序,记住五个字:非术关逻赋。
非,!。优先级第一。最大。这是校长。
术,算数运算符,+,-,*,/,%。优先级第二。这是院长。
关,>,>=,<,<=,==,!=。优先级第三。这是班主任。
其中,>,>=,<,<=,四个关系运算符的优先级 要大于 ==,!=这两个关系运算符。
逻,!,&&,||。优先级第四。这是班长。
赋,=。优先级第五。最小。这是组长。

知识补丁:

这些专业知识你只需有个大概的了解就行,不需要死记硬背。只需要在用的过程中,你知道知识在哪儿,并且会用(当然少不了动手练习喽),就OK了。互联网时代,记忆交给存储器(U盘,云盘,移动硬盘),分析理解交给大脑(CPU)。

3. 多分支选择结构
3.1多分支选择结构
即else-if形式的条件语句。如下:
if(表达式1) 语句1
else if (表达式2) 语句2
else if (表达式n) 语句n
else 语句n+1
多分支选择结构流程图如下:
在这里插入图片描述

知识补丁:

条件语句语法规定,每个条件分支只能带一条语句。(这个缺点就产生了复合语句)但是实际中条件分支里往往会有多条语句才能完成这时就需要{}括起来。
知识总结归纳:
1.何为条件语句的三种形式?分别是怎么用的?
第一种单分支—if(表达式P) 语句A
第二种双分支—if(表达式P) 语句A
else 语句B
第三种多分支—if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式n) 语句n
else 语句n+1

2.何为复合语句?
用{}括起来的语句叫复合语句。
例如,max=a;
printf(“max=%d”,a);
以上为两条语句。但是若用{}括起来,就是一条复合语句。(复合语句是一个整体,可看作一条语句。)例如:
{
max=a;
printf(“max=%d”,a);
}
3.2用于多路选择的switch语句
使用条件:多分支选择。
举例:分类统计学生成绩;90分以上为A,80-90分之间为B;60-70分之间为C。常用于分类统计,菜单等问题。

语句格式:
switch(表达式)
{case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
case 常量表达式3:语句3;break;
*
*
*(至少有3个分支)
case 常量表达式n:语句n;break;
default: 语句n+1;
}

switch语句执行规律


首先计算表达式的值,并逐个与其后的常量表达式相比较,如果表达式的值与某个常量表达式的值相等,即执行该常量表达式后的语句;如果没有找到与表达式匹配的常量表达式,则执行defualt 语句。

知识补丁:

(1)在switch语句中,“case常量表达式”相当于一个语句标号,表达式的值和某标号相等就执行该标号后的语句,碰到break跳出本层switch。
(2)switch括号内表达式的值和case后面的常量的表达式的值只能是整型或字符型。读者注意记忆重点知识。
(3)同一个switch语句中,case后的各常量表达式的值不能相同。
(4)在case后允许有多个语句,可以不用{}括起来。
(5)各case和default语句的先后顺序可以变动,不会影响程序运行的结果。
(6)在需要用switch语句选择关系型运行条件的时候,应先用if进行判断。
接招看题007:从键盘接受一个数字,输出对应的星期几的英文单词。

没有break的结果
有break的结果

深入理解break和continue语句:

(1)结合接招看题007进行理解。注意没有break和有break的效果(这就是理解)
当case常量表达式没有break结尾,会导致连续输出case后面语句里的字符串。加上break结尾,会直接跳出本层switch,好处是避免输出不应有的结果。(显然连续输出不是我们想要的输出结果。我们想要的结果是“一对一”的逻辑关系,1—monday,7—sunday,而不是1—monday****fridaysunday)
(2)因为continue语句只用在for,while,do-while等循环体中,所以在后续循环结构会涉及到。

switch与if的比较

if语句只有2个分支—是 和 否;而switch语句至少有3个分支。


http://chatgpt.dhexx.cn/article/yMQhAO4w.shtml

相关文章

C语言——选择结构

选择结构和条件判断 &#xff08;一&#xff09;if语句——实现两个分支 if 语句可以写成不同形式 if &#xff08;表达式&#xff09; 语句1——可以没有else语句if &#xff08;表达式&#xff09; 语句 1 else 语句 2 ——————————有else语句if &#xff08;表达式…

c语言 选择结构例题

目录 1、if 语句的例题 2、switch 语句例题 前面我有一篇讲选择结构的文章&#xff0c;同学们可以先看一下&#xff0c;温习温习。 应该就在前面几篇&#xff0c;我复制不了链接了&#xff0c;尴尬了。 1、if 语句的例题 先来一张图&#xff0c;将if 语句步骤简单的走一下…

python选择结构

1.选择结构 1.1单分支结构 1.1.1 语法&#xff1a; if 表达式:语句块 1.1.2. 流程图 1.1.3 例&#xff1a;输入2个数&#xff0c;输出最大值&#xff1a; aint(input()) bint(input()) maxa if a<b:maxb print(max) 1.1.4.注意&#xff1a; 表达式&#xff1a;一般表…

C语言的选择结构

选择结构 C语言有两种选择语句:(1)if语句:用来实现两个分支的选择结构 (2)switch语句:用来实现多分支条件的选择结构 例子:计算ax^2 + bx + c = 0的方程的根。 流程图: 代码: #include<stdio.h>#include<math.h>//计算ax^2 + bx + c = 0的方程的根。…

二、选择结构

目录 1.JavaScript的组成 1.三大核心 2.window对象的常用方法 2.if选择结构 3.多重if选择结构 4.嵌套if选择结构 5.switch选择结构 6.三元表达式 1.JavaScript的组成 1.三大核心 ESMAScript 核心语法&#xff08;标准规范&#xff09;-> ES6BOM 浏览器对象模式&am…

选择结构的使用

一、掌握if结构语句 二、掌握switch分支结构 三、两种结构语句的比较 学习结构之前首先要明白为什么要学习结构&#xff0c;结构有什么作用&#xff0c;有哪些结构&#xff0c; 首先我们要明白java代码中&#xff0c;程序运行的原理是从上到下一行一行运行的&#xff0c;如果…

C语言-选择结构

目录 选择结构 一、if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 选择结构 选择结构用于判断给定的条件&#xff0c;根据判断的结果判断某些条件&#xff0c;根据判断的结果来控制程序的流程 一、if-else语句 1.单选择 单选择通过if语句就可以实现&#xff0c…

Insert keyframe giving keying set failed to insert any key frames问题(已解决)

Blender 2.81 beta 问题描述 骨骼动画&#xff0c;进入姿态模式以后&#xff0c;调整了姿势然后按I键尝试插入关键帧&#xff0c;但是报错&#xff0c;报错信息很费解 “插入关键帧的帧位置” 于是切换到英文版显示 “Insert keyframe giving keying set failed to insert any…

论文阅读笔记:(2015, ijrr) Keyframe-based visual–inertial odometry using nonlinear optimization

算是基于滑窗的VIO的必读文章吧&#xff0c;很详细地说了边缘化~ paper: http://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Visual-Inertial-Odometry-Using-Nonlinear-Optimization.pdfhttp://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Vis…

ORB-SLAM2源码笔记(4)——帧Frame和关键帧KeyFrame

Frame类中的相机参数为static类型&#xff0c;表示所有Frame对象共享一份相机参数 特征点提取ExtractORB 在Frame类构造函数中调用成员变量mpORBextractorLeft和mpORBextractorRight的()运算符进行特征点提取. 畸变矫正前的左目特征点是mvKeys[i]. 畸变矫正后的左目特征点是m…

《UnityAPI.Keyframe关键帧》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Keyframe+inTangent+outTangent+立钻哥哥++OK++)

《UnityAPI.Keyframe关键帧》 版本 作者 参与者 完成日期 备注 UnityAPI_Keyframe_V01_1.0 严立钻 2020.06.28 #《UnityAPI.Keyframe关键帧》发布说明&#xff1a; “UnityAPI.Keyframe关键帧”是对UnityAPI中Keyframe关键帧类的剖析和拓展&…

ORB-SLAM2算法10之图像关键帧KeyFrame

文章目录 0 引言1 KeyFrame类1.1 构造函数1.2 成员函数1.3 关键帧之间共视图1.3.1 AddConnection1.3.2 UpdateBestCovisibles1.3.3 UpdateConnections1.3.4 EraseConnection1.3.5 SetBadFlag 1.4 地图点1.5 生成树 2 KeyFrame用途 0 引言 ORB-SLAM2算法7详细了解了System主类和…

CSS3 @keyframe动画的基本用法与常见错误用法

前言 随着CSS3的推出与普及&#xff0c;其各种属性开始被广泛使用。尤其是其动画功能&#xff0c;对于一些简单的动画实现&#xff0c;实在没必要用Javascript去实现&#xff0c;这是keyframes动画就派上了用场。今天来讲一下keyframes的一些基本的用法和常见坑。 【本文志于…

【微信小程序】动画入门keyframe

【微信小程序—动画工坊】动画入门 前情 需要了解的前置知识&#xff1a; 子代选择器基本布局 分析 可以将任务进行一下拆分。 如何让小球跑动起来&#xff1f; 通过keyframe创造动画函数&#xff0c;然后再通过animation绑定创造动画函数 keyframe的百分比代表动画的进度…

ORB-SLAM2 --- KeyFrame::UpdateConnections 函数

目录 一、函数作用 二、函数流程 三、code 四、函数解析 一、函数作用 更新关键帧之间的连接图。 更新变量 mConnectedKeyFrameWeights&#xff1a;当前关键帧的共视信息&#xff0c;记录当前关键帧共视关键帧的信息&#xff08;哪一帧和当前关键帧有共视&#xff0c;共视…

三谈属性动画——Keyframe以及ViewPropertyAnimator

Android动画和Transition系列文章 初识属性动画——使用Animator创建动画再谈属性动画——介绍以及自定义Interpolator插值器三谈属性动画——Keyframe以及ViewPropertyAnimator让View具有减速效果的动画——FlingAnimation让View具有弹性效果的动画——SpringAnimation让View…

ORB-SLAM2 --- KeyFrame::SetBadFlag函数

目录 1.函数作用 2.code 3.函数解析 1.函数作用 真正地执行删除关键帧的操作。 需要删除的是该关键帧和其他所有帧、地图点之间的连接关系。 2.code void KeyFrame::SetBadFlag() { // Step 1 首先处理一下删除不了的特殊情况{unique_lock<mutex> lock(mMutexConn…

【视觉SLAM】Fast Relocalisation and Loop Closing in Keyframe-Based SLAM

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/263621033 Article in Proceedings - IEEE International Conference on Robotics and Automation June 2014 DOI: 10.1109/ICRA.2014.6906953 先读Abstrac…

Android属性动画 Keyframe

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/118963313 本文出自【赵彦军的博客】 文章目录 KeyFrame实战 KeyFrame KeyFrame 主要用于自定义控制动画速率&#xff0c;KeyFrame 直译过来就是关键帧。 而关键帧这个概念是从动画里学来的&…

ORB-SLAM2代码详解05: 关键帧KeyFrame

pdf版本笔记的下载地址: ORB-SLAM2代码详解05_关键帧KeyFrame,排版更美观一点,这个网站的默认排版太丑了&#xff08;访问密码&#xff1a;3834&#xff09; ORB-SLAM2代码详解05: 关键帧KeyFrame 各成员函数/变量共视图: mConnectedKeyFrameWeights基于对地图点的观测重新构造…