当前课程知识点:C/C++:从基础语法到优化策略 > Final Exam > Final exam > 3.5 Branching statements (if else)
返回《C/C++:从基础语法到优化策略》慕课在线视频课程列表
我们现在来聊一下分支
什么是分支呢 我们说
一个程序要表现得智能
那主要的一个特点就是它能根据不同的情况去决策
决策一般来说 就是可以分为两部分
一个是他可以looping 就会做事情 重复不停的做 一直在工作
if statement就说他可以根据不同的情况做不同的抉择 做不同的事情
也是根据输入不同做出不同的响应
这样就看上去像很智能 我们说人工智能可能就是这个样子吧
那么我们来看一个最简单的人工智能程序
if这个程序呢 if这个程序我们来看
这边我们先定义一个ch
然后又定义了两个变量 spaces和total
然后下一个就是
用cin读一个字符从标准输入读一个字符 while如果这个字符不是点
那我就一直不停的去循环 直到是个点为止
那循环什么呢 我们来看这里面
那每个循环里面 他都看一下 如果ch等于空格 空格字符
那么spaces就加一
也就是说 从这里看 spaces 这个变量是用来统计你输入了多少个空格 这是if
total total这个地方也是++
这个并不受 if 的约束
每一次循环 每一次while循环 他都会+1 都会+1
这个就是用来描述你输入了多少个字符 输入多少字符
做完这件事 然后再读一个字符进来 再循环 循环之后判断是不是空格
然后总数+1
直到你输入一个点把它终止了 把这个循环终止了
然后我们就可以把spaces多少个空格和多少个字符全打印出来
这里面就是一个很简单的if判断
如果条件怎么样 if和后面就会跟一个条件跟一个条件
我们来看一下这个程序
if cpp 然后运行 运行的时候 我们想输点什么呢
那就hello world . 直接结束它
那这么 他就说有一个空格 11个字符 11个字符
如果我们再运行一次 hello world 回车 点
他会说有一个空格 12个字符 因为我们多出入了一个换行符 才回车
所以说这个是这个例子
从这个例子我们就可以看到 if 怎么样这个地方就执行这个
当然了 这个地方是一行代码 你可以这儿加个花括号
把一个代码块全放进来 它可以执行很长的代码 这是 if
当然 if 还有更复杂的 if 有 if 就有 else
他就分两种条件 如果满足这个条件就干什么
不满足了这个就干什么 所以这是if else
那么还有if else if else
意思就说这是如果怎么样 else if 怎么样 else怎么样
那这样话就是分三支 前面是有两个分支 这个有三个分支
甚至可以更多 我们来看这个例子 if else if这个例子来解释
我们来看这个例子里面也是跟刚才一样我们定义一个变量n 然后do
先去做一个 做的时候先读一个字符到n里面去
如果这个字符小于Fave Fave是什么
我们可以看到它是一个常量的整数27
如果他比他小 if 他就会打印 Too low -- guess again
else if 如果比他大那 Too hign -- guess again
else else的话就属于既不大又不小那就等于的情况了
那你说Fave is right
这样话就有三种情况 就是这是一个循环
循环循环的时候 每次循环进来就读一个数
然后 跟27这个常量27 比一下是大是小 还是相等 这是三种情况
因为每一个这个条件题里面只有一行代码
所以我们这没有加花括号
如果你有多行 你需要加花括号
这循环的停止条件是 n不等于 Fave 就不等于27
那么如果等于27的话 那首先打印这一条出来
然后 再去用这个条件一判断等于
等于 那就意味着这个值是false 循环结束 循环结束
这是整个程序 我们来运行一下看看
if else if
好输一个1到100的值
虽然这提示让你输的1到100但实际上你输个1000也没关系
他说 Too high 那20 这是Too low
这个值猜数嘛 我们是猜数游戏
这个值应该是在20-1000之间 那我们输个100他说太大
输个50他说太大那我们再输个 30
还是太大了 那么输25 二分法查找 太低 26或者是27就出来了
这个就是一个if else if的
这边是可以说的是
这一段你可以拷贝一下再加一个条件
你可以有多个条件多个条件
然后来判断它
这有一个小思考题 有一个小思考题
如果多个条件
那么是长什么样子的 如果我这边写成 这个样子
else if 它大于这个开始 这个是大于它加一
加一那么我的问题是 他要跟27进行对比
那么那比较的时候 如果我输一个30这个条件不满足
那他这个天是满足的 这个条件也是满足的那么
他是执行哪个呢 执行第一个 还是执行第二个 还是执行两个都执行呢
这两个都执行呢
这个作为一个思考题 大家去自己试一试这个例子
这个先不管他了
好这部分就这些内容
-Quiz 1
-Quiz 2
-3.3 Relational expressions (> < ==)
-3.5 Branching statements (if else)
-3.8 break and continue statements
-Quiz 3
-4.4 Structures, Unions and Enumerations
-Quiz 4
-5.3 Allocate memory: C++ style
-Quiz 5
-6.3 Recursion and pointer to functions
-Quiz 6
-Quiz 7
-8.1 C/C++ with ARM development board
-Quiz 8
-9.2 Constructors and destructors
-Quiz 9
-10.1 Operators in cv::Mat in OpenCV
-10.4 Automatic conversions and type casts for classes
-Quiz 10
-11.1 Dynamic memory and classes
-11.2 New and improved String class
-11.3 Using pointers to objects
-Quiz 11
-12.2 Static and dynamic binding
-12.3 Access control: protected
-12.4 Inheritance and dynamic memory allocation
-Quiz 12
-13.1 Constructor and assignment
-13.2 Classes with object members
-Quiz 13
-14.1 CNN for image classification
-Quiz 14
-15.3 RTTI and type cast operators
-Quiz 15
-Final exam





