当前课程知识点:C语言程序设计(上) >  循环结构的程序设计(一) >  4.2 至少要执行一次的循环 >  4.2.2-do-while循环应用

返回《C语言程序设计(上)》慕课在线视频课程列表

4.2.2-do-while循环应用在线视频

4.2.2-do-while循环应用

下一节:成绩录入_do while实现.c

返回《C语言程序设计(上)》慕课在线视频列表

4.2.2-do-while循环应用课程教案、知识点、字幕

下来我们看用do while

实现

循环的程序设计的两个例子

第一个是n的阶乘

我们知道

n的阶乘就是你输入n

你的n多大 然后

下边你要做的事情就是

我们直接看一下程序

大家看一下

前面的这些都一样

先scanf拿到你这个n

如果我n给的是10

那咱就是1乘以2 一直乘到10

如果给的是一万

那咱就乘到一万

那在入口处我们看一下

这有一个判断

如果n大于0的话

做下边的这个

红颜色的

这件事

到了这才做do

那可见

if(n>0)不是循环的入口

而循环的入口在哪呢

在do

do那呢

我们看

if(n>0)是做什么呢

就是我们前面已经

两次的讨论过的

测试用例

这个程序的兼顾性

也就是说我这块防止

大家在输入n的时候

你不小心输入了一个

不合理的数据

比如说你不小心碰了一个a进去了

或者是你不小心给了一个

你不需要的一个数据

那么这时候你的 n

咱现在n的阶乘里边要求的是

n必须是大于0的

所以

当n大于0的时候

我再做下边的这些事情

否则

我就直接到了循环的出口

循环外边

就直接printf了

那大家说 你一次都没做

到printf这块输出的是什么呢

我们看

累乘

我事先给它置1的

置的1

那这时候一定数

如果你是一个不合法的数据

那输出的累乘器里边就是1

如果在这个程序里边设计

测试用例的话

那累乘器里边这个是不是1

就是一个测试用例

那我们这块

先说如果是一个合法的数据

我们进来先做

做在这里边累乘

然后做什么呢

n不是加加了

n减减

为什么呢

我要让它接近于谁呢

下边的循环出口处是

while n

什么意思啊

我们没有说

n里边没有给一个

关系运算

直接给的是n

这个问题是不是判断说

n非0吗

n不是0吗

就你还没做完吗

你没做完

你就继续做

直到你做完的时候为止

那大家现在看

这个事情里边实地上做的是什么呢

从最大的数开始乘的

比如说你给的n是10

那一定是10*9*8*7

这样一直乘到

n

非0的时候是1

最后那个数是1

如果是0的时候

还做吗

不能乘以0

乘了0就前功尽弃了

是0的时候

咱就跳出来

n非0的时候

条件满足的 回去

这个例子里边有两个点

提醒大家注意

其实没有新的句子

都是do while

先做 后判断

一个是说

在给一个输入数据的合法性的检验

这是一个

第二个是说

我们while里边的这个条件

可以是一个变量

可以是一个表达式

我们这块给的是一个变量

因为

逻辑判断的时候

我们判断的仅仅是说

如果你给的是一个式子

是计算这个式子的值

然后判断它是非0吗

非0则满足

否则

为假

非0则真

否则为假

所以这里边就给一个变量

只看变量里边的值

这样判断也是一个

合理的

一个do while的形式

我们再看

下一道题

下一个是字符分类的统计

这一块是说

我们从键盘上敲字符

敲的字符

假如说我们给的分类是这样

这样分类

第一类

你把数字归为一类

然后呢你把

加减乘除

和求余 和等号

给它分为一类

那就是加减乘除

求余 等号是六个

第一类里边有十个字符

十组

第二类里边有六种

剩下的其它的所有的

都归为第三类

那什么时候就结束了呢

当输入斜杠的时候

我们就结束了

那这时候

这个程序运行起来

你不停地从键盘上

敲数字

敲键盘

敲进去以后

它自然把你敲的东西分成这三类

三类里边

每一类得去判断

是哪一个呀

属于哪一个

哪一个里边计数

最后把三类里边

分别的东西输出

我们在边映环境下看一下

调试一下这个程序

我们看一下这程序

int用了三个计数器

分别做三个分类里边的计数

怎么获取到字符呢

我们用的是getchar

这个函数

把获得的字符送到ch

那么ch就成了

switch

我们这里边用了一个switch的结构

是 开关选择

ch成了switch的一个

条件

switch里边

这个ch里边如果是数字

入口在这

这十个数字

是同一个入口

都走这进来

如果是这里边的任意一个

class1计数

如果是

这六个符号里边的任意一个

它们是同一个入口

剩下的 default

是另外一个

其余的所有字符的入口

那么这种设置

switch

我们知道

不可能有一个字符没有归宿

不是数字

也不是这六个符号里边的一个

一定就走了default

不会有我们敲进来的哪个字符

没有归宿

那这样

在出口处判断

ch

不是结束标记吗

yes

那一定就是返回来的

继续做这个循环

直到

它是这个反斜杠

我们大家有没有注意到这一块

单引号里边引了两个斜杠

还记不记得

第一个斜杠是什么意思呢

是我们的结束标记吗

当然不是啦

第一个斜杠是

转义字符的一个标记

而第二个斜杠才是

你真正要的

那个结束标记

那这块的有条件是

不是结束标记吗

咱就返回来

否则

我们就继续往下执行

循环结束

出口输出

我们运行一下它看看

再给asd

三个 三个

这是三个是什么呢

三个其它了

因为我们

第一类 数字

第二类 符号

好啦

给了四个符号

然后呢

刚才给了一个回车

注意我们回车才到了这

再给一个斜杠 结束

那么现在

不要忘了回车也是一个字符

那就是说其它里边

除过asd还有一个回车

还有一个结束标记

来看一下

数字三个

没有问题

符号

四个

怎么成七个了呢

这个其它的

是几个呢

我们刚才说

asd三个

刚才这还有一个回车

四个

再这个斜杠

五个

也没有问题

那现在这有问题

七个

实际上应该是三个

怎么是七个了呢

我们看一下

就是

符号

我们刚才说这块的符号是

符号我们刚才输入了是四个

但是看见是七个

为什么呢

看一下这块

少了一个break

少了一个break

流程怎么走了呢

流程是说

你给了三个数字的时候

任何那三个数字都走了这一块

而走完了这一块

计数

下来 顺序执行下边的

无论你是数字

还是符号

因为没有break这块不会被中断

流程继续走到

下边来了

这是我们在讲

前边

上一章

讨论switch的时候的它的一个功能

在这一块不要忽略了

我们把它加上再来看

还有我们刚才给的是一个

然后刚才给了一个回车

再给一个

反斜杠 结束

这下没有问题了

数字 三个

符号呢

然后

其它的是

asd三个

一个回车 一个反斜杠

五个

没有问题

这里边我们构建的是

哪个呢 用

直到型循环

执行循环

再做判断

这是一个

分类统计的在用

直到型循环构建的

这么一个流程

在这个流程里边

嵌进去的是什么呢

这个循环体里边用

switch

来进行的分类

这种应用其实在平常也是很多的

它基本上是用

do while构建的循环

适合

这个循环

不会是连一次都不做

那么这种情况就是先上来先做

在出口处再判断

这道题目大家也可以下去运行一下

尤其是

大家可以用跟踪的方式看一下

有break的情况下

以及

在出口处判断的流程的走向

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

4.2.2-do-while循环应用笔记与讨论

也许你还感兴趣的课程:

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