当前课程知识点:C/C++:从基础语法到优化策略 >  Final Exam >  Final exam >  3.4 while loop

返回《C/C++:从基础语法到优化策略》慕课在线视频课程列表

3.4 while loop在线视频

返回《C/C++:从基础语法到优化策略》慕课在线视频列表

3.4 while loop课程教案、知识点、字幕

现在我们来说一说while循环

while循环给for循环类似

他们完成的功能都是对某一段代码进行循环执行

那么不同的地方在于while循环只有一个测试条件

然后由这个测试条件来决定是不是进行这个

这个body就是他这个循环执行

如果满足条件就执行 不满足就不执行

那么在这儿呢我们来看这个代码

在这个代码里面首先我们定义了个变量数组变量

然后我们从标准输入里面输入一个字符串 输入一个字符串

输入之后其实就是我们这个例子循环了

首先我们定义了一个变量 i

i 的初始值是1 然后我们就开始循环while name

第 i个字符就是里面的不等于零

这个零指的是字符零也就是他的ASCII码

也是0 就是他真实的整数编码也是零

那就说 那就可以 然后如果不是零的话

也就是说是一个字符的话

那我们就可以把这个字符打印出来 然后冒号

再打印出它的编码值 编码值

然后 i++ 就是把 i 加一再来一次循环看看

下一个字符是不是满足这个条件 然后依此类推

然后我们来运行一下这个程序

他说 我们要输入your first name 我输了

那么他就说 s 是 83 h是104 i是105

q是113 i 是105

这样话把这个编码值都打印出来了

然后最后一个字符实际上是0

最后个字符是零那么就不用打印了

因为字符串都是以零结尾的 这个地方就不会执行 然后就跳出来

同样的这个循环 可以我们也可以这样来来写 为什么呢

这两个是等价的

下面这个注释掉的这个如果他不等于零 不等于零

那么这个字符斜杠零其实它的值就是零

那么 同样的 如果它是零的话 那就会变成false

然后这个循环也会被终止 所以说这个是 我们来看一下

一样的 结果也是这个结果那么这个就是

这个大家如果没想明白为什么这样这两个while是等价的

那么回去大家可以再去查一查资料 再仔细想一想

好 其实for循环和while循环是可以相互转换的

比如说我们for循环 有三个表达式在这里面

那么如果我们想要把它转成while循环 怎么转

首先 把初始化的这个表达式放在while循环外面

在他循环之前进行 这个执行

然后把这个test-expression就是把这个test的条件就测试条件放到wile这个条件里面

那还有一个update 就是一个修改 那么我们就可以放到wile这个循环体的最后一行

那么就相当于他做完这件事情最后

那么通过这个 你也可以理解for循环 他的运行顺序是什么

同样的 反过来也是可以的 反过来如果有个while循环

他只有一个测试条件 那么我们可以怎么样呢

我们可以把这个这是他的body写上for循环 我们其实就可以这样写

for 这是空的 什么都没有

分号 然后把这个test-expression写在这里

第三项依然是空的

然后呢 body写在这里

for的这种写法是在语法上完全正确的

在逻辑上是正确的 没有任何问题的

但是一般我们不会这么用 因为什么呢

因为如果你写成这个样子 那你为什么不写成while呢

while更容易让人更容易理解 你写成这样会让看代码的人

觉着有点奇怪 你为什么不用while

你是不是有一些特殊的原因 等等

他就会思想连篇 不利于代码的阅读

除了while之外呢 我们的while循环还有一种写法是do while

do while 跟 while 非常类似 不同的是他先do先去运行

也就是说他先不管三七二十一他先执行一次这个函数 这个循环体

然后再来用条件判断符不符合

我们来看一个例子 do while例子

这是do while 例子

我们来看这个例子里面 我们先打印了 然后再不管他

然后 do 这前面只是输出一些逻辑们

do cin到n 他就是说从标准输入输出一个整数到n这个变量里面来

这件事情不管什么发生什么情况 他就先去执行

先去执行了他 然后再去判断while n不等于7

也就是说如果n不等于七

他就满足这个条件的话 那就是

如果是不等于7 那他再来读一个 读一个 读一个 读一个

直到读到七当他n等于七的时候 这个

这个表达式的值就是false循环终止 然后打印出来

也就是说 你不管输什么 他都不响应

直到你输7 他会跳出循环来响应

你不输7 那么他就在这循环里一直循环 就是这样

所以说他这个跟while不同 是先做再判断

那么这个我们来看一下

do while我们来看 然后我们来输一个值 输一个值

然后比如9 不反应 3 5 6 7

如果你输到7 他就停下了 这个就是do while 循环这个意思

还有一个例子就是我们通过这个例子来跟大家介绍一下

如何通过cin去逐个去读字符去逐个读字符

从cin里面读字符前面的例子里面我们可以看到用两个大于号

可以把内容读到一个变量里面去

这种读法一般来说 它是会忽略空格 忽略空格 然后呢

这个 我们来看看这个例子

这个例子里面 这个例子里面我们来看

我们有一个count 定义一个char 一个count

char的话 就是来保存你刚读进去那个字符是什么

count是保存你一共读了多少字符统计的

那么我们写个while循环 在while之前我们先读一个

先读一个 进来cin 读到ch里面去 一个字符只能读一个

如果这个字符不等于#号 那就循环循环循环

如果等于#号 循环终止就表示这个循环就不做了

就是说#号作为我们的停止符

那么如果不等于#号来做什么呢

他就把这个ch打印出来

我在前面加了一个单引号

在这个后面加了个单引号加逗号

再加一个空格 这样来区分

因为这个是一个字符 一个字符的读的

如果你不加这个分格符 你会感觉好像是一行一行的读的 其实不是

然后加count 就是每读一个我就count加一

然后 再读一个 再读一个

这样循环 因为循环之前读一个 统计完之后再读一个再循环

这时候这个ch就是这个里面的这个读进来的ch

然后一直循环 最后打印出来 如果循环终止 就打印出来有多少个字符

先打一个换行 然后有多少个字符 我们来看一看

我们输个东西 他说输入字符 enter # to quit

那么我们输个什么呢

helloworld回车

他会说 h 第一个字符

他是一个个的读的 虽然我们输了这一长串做了个回车

但我们一回车之后呢 他整个这个流就发给了这个cin

然后 一个个的去去读h e l l o

w 下一个就是w 这中间有个空格

我们可以看到他直接跳过去了

就是他不去处理空格

直接跳过去直接处理w 然后到下面

回车 回车 回车 我敲了回车 他也没响应

那我敲个2 敲个字符2

只有我输入一个#号 他说11个字符 读了 读了11个字符然后跳出来了

那么我们再来看看 这是第一种读法

还有一种读法 实际上是跟前面这个代码都是一样的 唯一不同的是

用cin.get()函数来读字符

这个get()的话 跟刚才的不同处在于

他会读空格 读空格 我们来

这个代码都是一样的 除了这个get不一样的 其他跟刚才一样

我们再来编译一下这个

然后运行一下看

刚才我们输了个hello word 回车 我们来看h e l l o 空格

这是有个空格的 刚才是没有的 然后world

奇怪 他这个地方怎么到了 这个地方换了一个新行 看到没有

为什么这儿到了下面来了

后面结束之后我再输一个 输一个cpp空格abc

大家看这个单引号是个开始符

后面单引号+逗号是个结束的符 我们发现

那也就是说 他不仅把空格读进去了 还把我们刚才的这个换行符给读进去了

然后打印了出来 然后打印了出来

我们看 我按一个回车 现在

他会说 我输入的是这个字符 那是我输入的是这个字符

后面这个单引号 前面单引号加一个换行 再加后面的单引号再加逗号

所以说 这个是他捕获键盘的每一个输入

我们同样的一个#号结束 这个是他们的不同之处

C/C++:从基础语法到优化策略课程列表:

Week 1 Quick start

-1.1 Basic knowledges

-1.2 Setting Out to C++

-Lecture notes

-Example code

-Quiz 1

Week 2 Data types

-2.1 Compile and link

-2.2 Integers

-2.3 Floating-point numbers

-2.4 C++ Arithmetic Operators

-Lecture notes

-Example code

-Quiz 2

Week 3 Expressions and statements

-3.1 Some operators

-3.2 for loop

-3.3 Relational expressions (> < ==)

-3.4 while loop

-3.5 Branching statements (if else)

-3.6 Logical expressions

-3.7 switch statement

-3.8 break and continue statements

-3.9 File input and output

-Lecture notes

-Example code

-Quiz 3

Week 4 Array, string and structures

-4.1 Array

-4.2 Array strings

-4.3 string class strings

-4.4 Structures, Unions and Enumerations

-Lecture notes

-Example code

-Quiz 4

Week 5 Pointers and memory management

-5.1 Pointers

-5.2 Allocate memory: C style

-5.3 Allocate memory: C++ style

-5.4 Managing memory for data

-Lecture notes

-Example code

-Quiz 5

Week 6 Functions

-6.1 Function review

-6.2 Various functions

-6.3 Recursion and pointer to functions

-6.4 Reference and const

-Lecture notes

-Example code

-Quiz 6

Week 7 Functions and optimization

-7.1 Adventures in functions

-7.2 Speedup your program

-Lecture notes

-Example code

-Quiz 7

Week 8 ARM and OpenCV

-8.1 C/C++ with ARM development board

-8.2 Some tricks in OpenCV

-Lecture notes

-Example code

-Quiz 8

Week 9 Class

-9.1 Classes in C++

-9.2 Constructors and destructors

-9.3 this pointer

-Lecture notes

-Example code

-Quiz 9

Week 10 Operator overloading and type casts

-10.1 Operators in cv::Mat in OpenCV

-10.2 Operator overloading

-10.3 Friend functions

-10.4 Automatic conversions and type casts for classes

-Lecture notes

-Example code

-Quiz 10

Week 11 Dynamic memory management and classes

-11.1 Dynamic memory and classes

-11.2 New and improved String class

-11.3 Using pointers to objects

-Lecture notes

-Example code

-Quiz 11

Week 12 Class inheritance and memory management

-12.1 Class inheritance

-12.2 Static and dynamic binding

-12.3 Access control: protected

-12.4 Inheritance and dynamic memory allocation

-Lecture notes

-Example code

-Quiz 12

Week 13 Constructor, assignment and class templates

-13.1 Constructor and assignment

-13.2 Classes with object members

-13.3 Private inheritance

-13.4 Class templates

-Lecture notes

-Example code

-Quiz 13

Week 14 CNN, exceptions in C++

-14.1 CNN for image classification

-14.2 Exceptions

-Lecture notes

-Example code

-Quiz 14

Week 15 Friends, nested classes, RTTI and type cast

-15.1 Friends

-15.2 Nested classes

-15.3 RTTI and type cast operators

-Lecture notes

-Example code

-Quiz 15

Final Exam

-Final exam

3.4 while loop笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。