当前课程知识点:C语言程序设计(上) > 循环结构的程序设计(一) > 4.1 需要重复执行的程序 > 4.1.2---while实现先判断后循环~1
大家好 我们接下来讨论
c里边用什么样的方式
来支持构建这样的循环呢
c给了
一共给了三个语句
再多也没有了
一个是while
一个是do while 还有for
就这三个语句
构建所有我们想要的循环
我们先看第一个 while
用while实现的是什么呢
先判断 入口处判断
然后再循环 是这样的结构
while 条件
条件下来呢 是语句组
一组语句
你要做的那个循环体
我们花括弧括起来的这就是
咱们说的循环体
那在对应的 我们的流程里边
大家看 条件 内块的条件
是什么呢 进入循环的入口
判断 下边的循环要做吗
条件满足yes 就做循环体
否则我们就出口
所以 判断的地方是循环的入口
那循环的出口是在哪里呢
出口一定是在no
不满足条件的这个部分
那这个结构
while提供的它特点是什么呢
就是我们刚才已经说到的
在入口处 在这判断
循环的入口处判断
当条件为真的时候就执行这个循环
那么大家是不是看出来
我入口处判断的一个特点是
如果条件不为真
那我这个循环体一次都不执行
这就是while的特点
当这个条件不为真
这个循环体一次都不执行
跳过这一段流程了
比如说我们Σ求和
从1加到 100这件事
我们把程序给出来 大家看
main底下 看这个花括弧
在这呢
循环的入口在哪呢 while
那这时候说 n小于100吗
要小于100
那只能加在99了
我们y去求和 y+n
送到y 然后每一次呢
我们大家看这里边有个n++ 增量
那这个增量是什么呢
改变这个循环的条件
改变条件 为什么呢
是因为我们这个循环里边
是靠n的变化来控制它说
你还比100小吗
如果小
我们就做下边这个花括弧里边的循环体
否则我们就不做
只要小 那么是1小
2小 50小 99也是小
到了100的时候就不小了
所以100加上了吗
100加上了吗
没加上
那现在就说
我们这个循环是从哪里开始的呢
到底是循环了100次
还是循环了99次呢
我们看从哪里开始的
起点很重要
如果我们的起点是从50开始的
那就是从50加到99
我们现在 看n的出值是1
那它是从1开始的加到99
我们看一下这个程序
我们先看一下这个Σ求和的这个程序
刚才 大家说了 我们做的是一个Σ
到while
做多少次呢 100
我们这是
刚才看到的程序是100
那现在
循环控制变量是谁呢 是这个n
n的出值是1
那就是说循环从1开始
循环到哪个 小于100
那就循环到99
那就是1到99
不是循环100次 是99次
那在这循环体里边做什么呢
求和
然后
一定不能忘了得n增量
改变循环控制变量
然后回来再问
现在 目前的n还小于100吗
如果小于就做这件事
跳出这个循环的时候
我们printf的是和
我们还看那个n
那n就是跳出循环的时候
我们的n到底是多少
来看一下
好 是4950
n是100
那是循环了100次吗
我们看一下
n在什么时候变成100了呢
在这变成100了
那 变成100的时候 回过头来问
n小于100吗
不小于了
那现在这个100被加上了吗
没有 这个100没有被加上
所以呢 我们实际上循环加了
加的那个数 最大的数是99
如果我们想把这100加上
或者这样 这是101
或者是说 我们这样写
n<=100吗
这两种都可以
那我们看结果现在已经是不一样了
结果是5050
n这是 此刻的n是101
那101没有被加进去
只加进去了100
这是这个程序
当n<=100的时候
执行这个循环
否者就出来输出这个结果
那么 稍微做一点讨论
如果我们不小心把这个括弧落了
括弧落下了
我们看一下这个循环
应该是什么样的一个情况呢
我们看 进入的这个循环
是两句话
这两句话没有被括弧括起来
应该说
系统自动认为
这个程序自动认为的循环体只有这一句
那我们运行下来的情况 看一下
这个在这闪是什么意思呢
那我只好ctrl+break中断它
什么情况是这样呢
我们来跟踪一下看看
点在这 运行这儿
F5是调试
我们看一下
让它做 现在在哪呢
当前在一个非执行语句
到了下 下来
循环的入口while
现在在运算n<=100吗
是的 进入了这个循环
做加法 然后再看下一步
又到循环入口
然后在做加法 又到循环入口 做加法
大家看到了 问题是什么呢
问题是
你循环控制变量的这个n没有得到改变
循环一直在判断求和
判断求和
循环控制变量没有得到改变
所以永远都是 n是1
1<=100吗 永远都满足这个条件
循环在一个死循环的过程中
这不是我们要的结果
括弧
在运行应该就是正确的
那这一块
想强调循环控制变量
在循环体里边
一定要得到改变
才能够真正的实现结束循环
那我们看
这是咱们前边看到的说
打印同学的是通过了呢
还是没通过让他补考
打印的是ok呢 还是no
在这里边
我们从if入口
这个if是循环的入口吗
当然不是
是说要不要 打印的是ok呢还是打印的no
那我们把这件事情现在说不是做一次
比如说一个班我们30个人 做30次
咱要在这个程序里边加点什么呢
如果我们用while
先判断后执行
来构建这个流程的话
大家想想
应该在哪里来加什么样的语句呢
我们到这个边?环境下
来调试一下这个程序
我们要在哪里插入东西呢
一定是在
scanf的这个之前
我们给while
然后 括弧里边的条件应该是什么呢
现在看我们的循环变量
应该用谁来构建呢
一定会有一个计数器
计的是说你到底是多少人
到达你的中值了吗
如果我们这个计数器用i的话
假如说我们给少一些的人
咱好演示
我只给说 你的小于4个人吗
那我现在用了循环控制变量是i
那这一块一定也要给i一个初值
给i一个初值
当i<4的时候我们来做这件事情
在这件事情里边
第一件要做的就是获取这个成绩
然后判断到底是执行哪一个
那i什么时候得到改变呢
每做完一次
i一定会要做i++
得到改变
那这个循环的入口在这
一定不能忘了
我们在这要加上
刚才咱说的
循环体我们被
到哪呢 到这 这是循环体
大括号
从scanf是循环体要做的第一件事情
获取一个数
然后判断
到底执行哪一块
然后改变循环控制变量
这是从什么地方
我们把整个我们蓝颜色标识的这一块
就是循环体
我们运行一下看一下
i<4应该可以做3次
给一个80分
然后呢 再给一个50分
一定是no
再给一个90分
然后
<4
78分
出来了 <4
那我们循环刚才呢是给了4个数据
我们看 第一次是0
那就说是0的时候我们读了一次数据
那<4 那我可以说0 1 2 3循环做了4次
那什么时候循环只做了3个数呢
如果我们i给的1
那就是1 2 3
那终值一定是4
终值是4 不超过4 那就只能i到3
所以 到底是做3次还是做4次循环
与你的初值相关
三个数结束
为什么呢
是因为我们的循环的起点
i的起点是1 i在这增量
通过这个程序 我们也是看到
while这个循环
是当条件满足
这是一边的条件判断满足的时候
执行这个循环体
执行循环体里边是一句话
还是n多句话 我们这个循环体里边
正好是一个if else的一个选择结构
这是可以的
要根据我们的问题来构建这个循环
大家通过这两个例子
下边 是给了一些练习题
可以用while构建这种当型循环
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html