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

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

4.2.1至少要执行一次的循环在线视频

4.2.1至少要执行一次的循环

下一节:4.2.2-do-while循环应用

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

4.2.1至少要执行一次的循环课程教案、知识点、字幕

大家好

我们接下来讨论

至少要执行一次的循环

什么样的循环是这样呢

我们前面讨论过while

while说当条件满足的时候执行循环

也就是说不满足的时候

循环一次都不执行

那是while

至少要执行一次的这样的循环呢

do while

先做

做完这个循环体

再判断

流程是这样

先做循环体 做

入口处没有任何关卡

进来 到出口处

条件满足吗

注意 这时候是yes的时候

无条件的go to的入口处

条件否则的时候

下来

也就是说一开始先做

直到条件为假的时候为止

所以呢

所以我们把这种循环叫

直到型循环

c给的构建的方式是这样

里边是循环体

在哪里判断呢

花括号的外边

出口处

循环的出口处 while

来判断这个条件

yes的时候回到do

no的时候顺序往下走

我们看一个例题

成绩录入并计算平均分

比如我们还说这班上是30个人

或者我们拿少一点 10个人 来说

把这10个数

一个一个录进去

平且算它最后的平均分

大家想这个流程里边要做什么呢

是不是每次需要scanf

键盘敲入这个成绩

然后给它什么呢

求和

最后呢

把这个事情做多少次呢

你给多少人 一千人咱就做一千次

一百人就做一百次

做完了

一百次做够了吗

没做够我们再回去继续做

直到做够了为止

我们就出来

出来的时候

求平均分不就是你的和

除上谁呢

除上你的循环控制变量

你做了多少次循环你就除上多少

就是多少人

我们这里边稍微考虑一个事情

是什么事情呢

成绩的有效性

这个是在讲什么呢

大家现在开始做题了

看到你做程序的时候总有

在调试程序的时候

model的环境里给了大家

红的一条绿的一条

你在提交的时候

会看到这样的问题

那个红的绿的我们说过

它是测试用例

那测试用例 比如说

这道题目里边的测试用例应该是什么呢

大家想一想

其实每道题里边

大家可以想

它的测试用例会是什么

这道题里的测试用例会是什么呢

我想的应该是说

比如说你不小心

你想录80分

你却把减号碰进去了

你是一个负分

这是不符合常情的

这是一个无效的分数

比如说

你本来录

20

你却录成了200

也不符合常理

你这个循环里边对什么样的录入

你认为是有效的呢

如果对分数来说

假如说咱是百分制

那它一定是在0到100分

这个区间你的成绩才是有效的

所以呢我们要考虑到

成绩的有效性检验的话

我们在程序里边

你每录入一个成绩

我还要先问你一次

你这成绩有效吗

刚才的录入有效吗

无效的话我会提示你

你重新录入

这个成绩我不获取

那这一块

如果说 你什么样的情况下

程序不能检测出来呢

你小心翼翼的再录

20分就是20分

80分就是80分

这时候程序是

没有这个有效性检验它也一路畅通

没有问题

但是

这个程序

不兼顾

就是说它不能屏蔽

用户的一些不合理的输入

我们通常要求大家做的程序

是兼顾的

是对一些

非法的 不合理的数据

能够排除在外的

这就是我们测试用例

通常要考虑的问题

比如说我们要打一个图形

你考虑没考虑我这图形打0行

考虑没考虑我的一些边界值

比如说 我是

60分以下是

不及格

我60分你能判断的是

及格还是不及格呢

在这个临界点上

边界值上

这都是我们测试用例

要检测的东西

所以这道题我们专门给了一个

考虑成绩的有效性检验

是为了提示大家

当你的提交程序

你在你的环境下

你的程序一路畅通

没有问题

可是拿到我们这提交的时候呢

总说你的程序通不过

是什么原因呢

可能就是这些测试用例

没有通过

比如说

被零除你们有没有考虑

你要让它通过的话

你自己会说不被零除

但是我们一定要测这个程序

被零除你有没有考虑

所以呢大家在这一块

我们拿这个

程序

正好给大家做个例子

我们看一下这是用 while

我们回到这

这是单行循环用while

当条件满足的时候

执行下边的循环

下面的循环做什么事呢

先索取一个分数

scanf

然后我们看蓝颜色的这一块

就是我们刚才说的

做了一个成绩有效性的判断

我问

你读进来的这个s

s是我们现在要的

放成绩的

s是比0还小吗

或者是s比100还大吗

如果你是这两个里边的任意一个

我给你显示一个printf

成绩无效请你重新输入

那这时候一定到了哪了呢

到了

else底下的花括号这

这个成绩我们就无效了

就到了这个底下

这块

应该是到了什么地方呢

循环的出口处

循环的出口处在花括号的这块

那出口处应该

再回来

再到了下一个

n的这块

那么我们看

大家在这个蓝颜色的if处

n有计数吗

我们只记有效的

成绩

无效的成绩不计数

就直接到了循环的入口处

再去取一个分数

如果成绩有效我们进了else块

累加

并且 计数

累加并且计数

这是用while做的

我们把这件事用do while做

它的不同只有在这

这没有判断了

一上来先做 do

底下同样

蓝颜色判断成绩是不是有效

如果

不是无效数据

else

我们就到了累加 计数

然后在出口处

while

n小于等于10吗

如果小于等于10 yes

我们再回来 再do

再do

直到

它是

11

我就不做了

就不回去了

那个11

第11个数我是不去相加的

大家再看一下

我们在出来的时候做的

出了这个循环里边

你把这个成绩给我打印出来

是拿什么呢

拿t

t是我们求的和

除上谁呢

n-1

为什么要n-1呢

是因为我们在这n++的时候

什么时候才会

条件不满足了呢

一定不是10而是11

而我们实地上的人数

我循环了几次呢

10次啊

第11次我没有循环了

我不要了 我只要10个

我们前面说了 我们只要10个

循环的这块是10

终值是10

所以呢

你在循环跳出来的时候

n里边是10还是11呢

一定是11循环才能结束

所以出来的时候是11

我们一定要把1减掉

才能得到一个正确的平均分

我们

用do while实现了这样

直到型的循环

我们也在边映环境下

调一下这个程序

我们大家看一下这个程序

在这个程序里边大家刚才

我们讲到了

在这个循环体

do 进来先做

做的时候呢

scanf了这个s以后

我们要先判断程序的有效性

然后 如果有效

我们才去做这个

输出

并且做计数

在出口处判断

n小于等于2吗

我们现在是说

咱这个事情做

只做两次

咱换一个 做3次

运行一下这个程序

运行第一个程序

70

以录入成功

输入第二个 90

输入第三个 30

现在是说

你的3个数据都给了

我们在这里边

做的事情是什么呢

仅仅是说

把你录入的成绩显示

如果说要求平均

求平均我们在这里边

应该加入什么呢

看这

我们在这里边要加入一个

比如说

现在咱是 t

给它的初值是0

我t是一个求和

那我求和应该在哪里做呢

是在

录入成功的有效数据这样做

t等于

加上我们读进来s

然后呢

在出了

判断这个条件

还要不要做

不做了 出来以后

我们平均分怎么得到的呢

就是

在这我们需要做一个

printf

输出一个平均分

这个平均分是什么呢

是我们

给一个

百分号d的一个格式

那我们现在的平均分是什么呢

t

大家看要除上的是多少呢

n

是除n还是除以n++

是在于

我们这里边循环是执行了

多少次

在循环结束的时候

我们n是

3还是4

是加加在前判断在后

那我们现在n就是要的这个数

运行一下看看

我们的平均分是

对吗

看一下

咱再输出显然是不对

我们刚才输出的那个数

那咱们

把n输出一下

然后再输出平均分

看我们的n是多少呢

应该是说

小于等于3

我们希望的n是

输入了3个数是除以3的

n这时候如果是4

小于等于3的时候它就回去了再做

那它能出来的时候一定是4

对不对

那这样 我们回去看一下

平均分一定是及格的

但是现在不及格

为什么呢

是4

那现在是说循环的出口处

n一定是小于等于3的

n的小于等于3循环是出不来的

必须它是n等于4

所以我们这一块

应该做的是什么呢

这除以谁呢

n-1

这样才是对的

现在平均分是61

你的n是4

但是实地上我们是

输入了3个成绩

大家看

在循环体里边

现在实地上有效数据

是在else里边完成的

那么如果走了这是无效

无效以后直接就出来了

就跳出这个循环了

跳出的循环并不是跳出循环

就到循环的出口处

然后呢

并没有计数

它回去再读一个有效数据

所以有效数据一定要拿到的是

三个

所以大家不用担心说

无效以后就跳出循环了

而是到了循环出口处

这个结构完成了这么一个流程

大家下去可以把这个程序

在自己的环境下运行一遍

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.1至少要执行一次的循环笔记与讨论

也许你还感兴趣的课程:

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