--- config: look: handDrawn themeVariables: fontSize: 20px --- mindmap 控制结构(2) for循环 初始化语句 迭代表达式 循环条件 循环体 while循环 循环条件 循环体 do-while循环 循环条件 循环体 嵌套循环 goto与深层嵌套循环 跳转语句 break语句 continue语句
《计算机程序设计》
计算机学院计算机研究所编译系统研究室
~/course
~/course/main.cpp
main.cpp
,随堂编程练习的代码请直接在此文件中编辑测一测
阅读下面的代码,判断输出结果
编程求解
编程求解《孙子算经》中两道著名的问题
物不知数:“有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”
百钱百鸡:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?”
——《孙子算经》
学习目标
运用本次课所学内容,求解“物不知数”与“百钱百鸡”问题!
教员箴言
计算机擅长简单而重复的工作!
for
循环适用于循环次数已知的情况while
循环适用于循环次数不确定的情况do-while
循环循环次数不确定但至少会执行一次的情况三种循环应用场景举例
for
循环:绕操场跑10圈while
循环:每跑一圈前观察计时器,若计时器没有停止则继续跑do-while
循环:每跑一圈后观察计时器,若计时器没有停止则继续跑for
循环for
循环for
循环是一种计数循环,适用于循环次数已知的情况
for
循环的初始化语句for
循环的迭代表达式for
循环的循环条件true
则执行循环体,否则退出循环false
,则循环一次也不执行for
循环的循环体for
循环练习测一测
使用for
循环,计算给定整数n的阶乘\[n!=1\times2\times3\times\cdots\times n\]
while
循环while
循环适用于循环次数不确定的情况
true
则执行循环体语句,否则退出循环false
while
循环考考你
while
循环的循环参数更新要素位于右侧流程图中哪个位置?
while
循环的循环条件true
则执行循环体,否则退出循环false
,则循环一次也不执行while
循环的循环体while
循环练习测一测
使用while
循环求解“物不知数”问题在(800, 1000)区间以内的所有解
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?
一元线性同余方程组问题的数学表述
给定整数\(a_1, a_2, \ldots, a_n, m_1, m_2, \ldots, m_n\),且\(m_1, m_2, \ldots, m_n\)两两互质,求满足下列条件的整数\(x\)
\[ \begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \\ \vdots \\ x \equiv a_n \pmod{m_n} \end{cases} \]
do-while
循环do-while
循环的循环条件false
则退出循环,否则再次执行循环提do-while
循环至少执行一次迭代do-while
循环的循环体do-while
循环练习测一测
输入任意正整数,将第i位数字(个位为第1位,十位为第2位……)乘以i后累加求和输出,如输入423,则输出
\[3*1+2*2+4*3=19\]
温馨提示
for
while
do-while
考考你
猜数字游戏适合使用哪种循环实现?
随机产生1-100之间的数字,用户输入猜的数字,猜中则游戏结束,否则游戏输出偏大或偏小后继续猜
考考你
将下列while
循环和do-while
循环分别改写为for
循环
1 2 3 4 5 6 7 8 9
1 1
2 2 4
3 3 6 9
4 4 8 12 16
5 5 10 15 20 25
6 6 12 18 24 30 36
7 7 14 21 28 35 42 49
8 8 16 24 32 40 48 56 64
9 9 18 27 36 45 54 63 72 81
测一测
求解“百钱百鸡”问题的所有解
今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?
goto
语句:无条件跳转到指定标签位置break
语句:跳出当前循环/选择结构continue
语句:跳过当前循环的剩余部分return
语句:返回函数调用点跳转语句
break
语句break
语句
switch
语句for
、while
、do-while
均适用break
for
循环break
while
循环break
dowhile
循环break
应用场景break
语句练习考考你
修改下面“百钱百鸡”的求解程序,求买公鸡最多的解
今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?
百钱百鸡问题求解
// ============== begin =============
// 求解“百钱百鸡”问题
for (int x = 0; x <= 20; x++) {
for (int y = 0; y <= 33; y++) {
for (int z = 0; z <= 100; z += 3) {
if (x + y + z == 100 && 5 * x + 3 * y + z / 3 == 100) {
cout << "鸡翁:" << x << ",鸡母:" << y << ",鸡雏:" << z << endl;
}
}
}
}
// ============== end =============
考考你
有没有更加清晰的程序流控制方案?
continue
语句continue
语句,用于跳过当前循环的剩余部分,开始下一次循环迭代
for
、while
、do-while
均适用while
与do-while
循环中,continue
语句跳转至判断循环条件for
循环中,continue
语句跳转至执行迭代表达式,尔后判断循环条件continue
for
循环continue
while
循环continue
dowhile
循环continue
应用场景continue语句应用:逢7过游戏
continue
语句练习考考你
若一个三位数,其各位数字的立方和等于该数本身,则称为水仙花数,如\(153=1^3+5^3+3^3\)。
下面的程序可以求解1000以内的所有水仙花数,请修改,使用continue语句去除各位数字中包含3的水仙花数。
测一测
若一个数等于它的因子之和,则称为完数,如\(6=1+2+3\)。编程求解1000以内的所有完数。
--- config: look: handDrawn themeVariables: fontSize: 20px --- mindmap 控制结构(2) for循环 初始化语句 迭代表达式 循环条件 循环体 while循环 循环条件 循环体 do-while循环 循环条件 循环体 嵌套循环 goto与深层嵌套循环 跳转语句 break语句 continue语句
学习目标
计算机程序设计