5、选择结构

article/2025/4/22 22:26:46

什么是选择结构

C程序的执行通常是按照顺序从上到下逐行执行。
而选择结构是根据某个变量或表达式的值来选择哪些语句执行,哪些语句不执行。
选择结构需要先进行条件判断(对表达式的值判断),根据表达式的值选择是否执行。
三木运算符(?:)就是一个简单的条件判断语句。

if语句

if语句是最常用的条件判断语句
if语句又分为单分支和多分支。
顾名思义,单分支只有一个分支(一次判断),多分支有多个分支(多个判断)。

单分支if语句
单分支if语句是判断表达式是否为真,为真时,执行花括号中的语句(复合语句),为假时跳过复合语句,继续执行后面的代码。
if语句中条件表达式的值只有真(0)、假(0)两个值。

单分支if语句执行流程
在这里插入图片描述

单分支if语句的一般形式
if(条件表达式)
{
语句序列
}

#include"stdio.h"
int main()
{int a=5;if(a>3)//4>3,表达式为真{//if后的表达式为真执行符合语句printf("a>3\n");}return 0;
}

if中的表达式值为真那么执行if语句后的第一条语句(或者说if语句的下一条语句)。

#include"stdio.h"
int main()
{int a=5;if(a>3)printf("a>3\n");//你也可以这样写if(a>3)printf("a>3\n");return 0;
}

如果在if表达式值为真后要执行多条语句就要用花括号括起来,这样多条语句就变成了一条复合语句。(你可以把符合语句看成一条语句)

#include"stdio.h"
int main()
{int a=5;if(a>4){//这条复合语句是if后的第一条语句 printf("a>4\n");printf("我在if中执行"); } return 0;
}

if中也可以直接放一个变量,在C语言的条件判断语句中不为0的值都为真。

#include"stdio.h"
int main()
{int a=5;if(a)//a不为0,表达式为真{printf("%d\n",a);}return 0;
}

我们之前讲的关系运算符和逻辑运算符大多在if中使用,用来判断运算符两边的关系是否为真。

#include"stdio.h"
int main()
{int a=5,b=3,c=100,d=4;if(a>b)//a是否大于b if(a>=b)//a是否大于或等于b if(a<b)//a是否小于b if(a<=b)//a是否小于或等于b if(a==b)//a是否等于b if(a!=b)//a是否不等于b if(a>=b&&a>=d)//a大于等于b并且a大于等于d(两个表达式必须同时满足)if(a>c||a>d)//a大于c或者a大于d(两个表达式满足一个就可)return 0;
}

如果有多个单分支if,那么每个if都要判断。

#include"stdio.h"
int main()
{int a=5,b=3;if(a>b){printf("a大于b\n"); }if(a>=b){printf("a小于或等于b\n");}if(a==b){printf("a等于b\n");}if(a!=b) {printf("a不等于b\n");}return 0;
}

在这里插入图片描述
多分支if语句
多分支if语句中如果表达式的值为假,那么继续判断下一个分支,如果某一个分支表达式为真,后面的所有分支都不执行(也就是说这个多分支if执行完了)。

多分支if语句的一般形式为:
if(条件表达式)
{
}
else if(条件表达式)
{
}
.
.
.
else
{
}

#include"stdio.h"
int main()
{int a=3,b=5;if(a>b){printf("a大于b\n"); }else if(a>=b)//第一个分支{printf("a小于或等于b\n");}else if(a<b)//第二个分支{printf("a小于b\n");}else if(a!=b) {printf("a不等于b\n");}else//可以没有{printf("都不满足\n");}printf("多分支if执行完了\n");return 0;
}

在这里插入图片描述
多分支if语句可以有多个else if,最后一个else是在所有分支的表达式都为假时执行。(也可以没有else)
嵌套
无论是单分支if还是多分支if,他们都都可以嵌套(相互嵌套)
单分支和单分支嵌套

#include"stdio.h"
int main()
{int a=3,b=5,c=4;if(a<b){if(a<c){}}return 0;
}

单分支和多分支嵌套

#include"stdio.h"
int main()
{int a=3,b=5,c=4;if(a<b){if(a>c){}else if(a<c){}else if(a==c){}}return 0;
}

多分支和单分支嵌套

#include"stdio.h"
int main()
{int a=3,b=5,c=2;if(a>b){if(a>c){	}}else if(a>c){if(b>c){}}return 0;
}

多分支值和多分支嵌套

#include"stdio.h"
int main()
{int a=3,b=5,c=2;if(a>b){if(c>b){}else if(a>c){}}else if(a>c){if(b>c){}else if(a>b){}}return 0;
}

多分支嵌套时,else总是于最近的if匹配。

switch语句

switch是一个多分支的选择结构,又称为开关语句。
switch语句的一般形式:
switch(表达式)
{
case 常量表达式1 : 语句1 break;
case 常量表达式2 : 语句2 break;
.
.
.
default : 语句n
}
执行流程:
先判断switch的表达式的值是否于第一个case的常量表达式相等,不相等判断是否等于下一个case的常量表达式,相等执行 : 后面的语句以及后面所有case :后的语句。(后面case的常量表达式不参与判断直接执行)
如果switch的表达式和所有case的常量表达式都不相等,那么执行default 后面的表达式。(default可以没有)

#include"stdio.h"
int main()
{int a=3;switch(a){case 5 :printf("5\n");case 4 :printf("4\n");case 3 :printf("3\n");//case执行后还会执行后面所有 : 后的语句。case 2 :printf("2\n");case 1 :printf("1\n");default :printf("哈哈\n");}return 0;
}

在这里插入图片描述
为避免这种情况发生要使用break语句。
break的作用是结束这个语句。由于switch后是一个复合语句,运行了break语句就是告诉程序这个语句执行结束,即使break后还有语句也不执行。

#include"stdio.h"
int main()
{int a=3;switch(a){case 5 :printf("5\n");break;case 4 :printf("4\n");break;case 3 :printf("3\n");break;//执行break后结束这个复合语句case 2 :printf("2\n");break;case 1 :printf("1\n");break;default :printf("哈哈\n");break;}return 0;
}

在这里插入图片描述
default这条语句后如果有break可以放在任何位置,不然执行default后所有 case都会执行一遍。(default语句即使有break也建议放最后)


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

相关文章

Python的选择结构

Python的选择结构—— if 语句 Python 中的选择结构就是判断真假。 Python 中的 if 语句就是选取要执行的结果&#xff0c;从一些备选的操作中进行要选择的语句。 if 语句后面跟着一个或多个可选的 elif &#xff08;“ else if ”&#xff09;&#xff0c;以及一个最终可选的…

初识C语言—— 选择结构程序设计

文章目录 一、if语句二、if语句的基本形式1.if语句形式2.if...else语句形式3.else if语句形式 三、if的嵌套形式四、条件运算符五、switch语句1switch语句的基本形式2.多路开关模式的switch语句 六、if...else语句和switch语句的区别七、总结 一、if语句 在C语言程序中&#x…

顺序结构 与 选择结构

1、顺序结构 流程&#xff1a;就是"程序代码的执行"顺序。 流程控制&#xff1a; 规定的语句&#xff0c;按照 哪几种方式 执行。&#xff08;这几种方式 指的是 顺序结构、选择结构、循环结构&#xff09; 顺序结构&#xff1a;按照程序&#xff08;自上而下&…

选择结构语句

if条件语句 ifelse的多层叠加 格式流程图代码console结论 ifelse ifelse语句 格式流程图代码console结论 if条件语句 1.if&#xff08;&#xff09;…else的多层叠加 格式 if&#xff08;判断语句&#xff09;{ 执行if语句1 }else{ 执行esle语句1} if&#xff08;判断语句…

C语言中的选择结构

C语言中的条件控制语句选择结构 在C语言中&#xff0c;一共有三种程序结构&#xff1a;顺序结构、选择结构&#xff08;分支结构&#xff09;和循环结构。顺序结构&#xff0c;从头到尾一句接着一句的执行下来&#xff0c;直到执行完最后一句&#xff1b;选择结构&#xff0c;…

顺序结构、选择结构

1、顺序结构 计算机执行程序的步骤是从上到下依次执行。 2、选择结构 选择结构也叫条件控制语句&#xff0c;主要有if语句、if…else语句、条件表达式exp1? exp2&#xff1a;exp3、switch语句。 1&#xff09;if语句、if…else语句 if语句主要有单分支、双分支和多分支三…

if选择结构

if选择结构一共有三种分别是 if 型 if else 型 if else if else型 第一种 if型 使用场景&#xff1a;需要进行判断时使用&#xff1b; int a 1, b 1; if (a b){System.out.println(&qu…

选择结构(一)

一 流程控制 1.有三种基本结构:顺序结构、选择结构、循环结构 顺序结构 选择结构 循环结构 2.流程控制语句是控制程序中各语句执行顺序的语句 二 选择结构 1.根据一定的条件有选择地执行或跳过特定的语句 2.选择结构可以分为单分支、双分支、多分支 3.语法:if ( 表达式 ) {…

C语言 选择结构

一.选择结构 1. 单分支选择结构 2. 双分支选择结构 3. 多分支选择结构 1. 单分支选择结构 1.1何为单分支选择结构&#xff1f; 从开始到结束之间只有一条路可供选择。 1.2何为双分支结构&#xff1f; 从开始到结束之间有两条路可供选择。 1.3何为多分支结构&#xff1f; 从开…

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关键帧类的剖析和拓展&…