第十回 调试加注释降低错误率,循环套循环突破小周天

课堂笔记

第十回 调试加注释降低错误率,循环套循环突破小周天

实例:解数学题

  1. 单循环
    第十回 调试加注释降低错误率,循环套循环突破小周天
    while循环
    本质是穷举法
    第十回 调试加注释降低错误率,循环套循环突破小周天

实例:双重循环解数学题

XY693 = YX396
如果用单循环解。。。。

第十回 调试加注释降低错误率,循环套循环突破小周天
step1:写一个新的循环结构
第十回 调试加注释降低错误率,循环套循环突破小周天
step2:把机械重复的部分保留一份,放入循环体
第十回 调试加注释降低错误率,循环套循环突破小周天
step3:规则变化的用循环变量表示
第十回 调试加注释降低错误率,循环套循环突破小周天

第十回 调试加注释降低错误率,循环套循环突破小周天
第十回 调试加注释降低错误率,循环套循环突破小周天
扩展:多重循环
第十回 调试加注释降低错误率,循环套循环突破小周天
多重循环中,break只能跳出当前循环
第十回 调试加注释降低错误率,循环套循环突破小周天

程序调试

“好的程序是调出来的!”
第十回 调试加注释降低错误率,循环套循环突破小周天
单步调试
第十回 调试加注释降低错误率,循环套循环突破小周天
第十回 调试加注释降低错误率,循环套循环突破小周天
第十回 调试加注释降低错误率,循环套循环突破小周天
设置断点
一个程序中可以设置多个断点

第十回 调试加注释降低错误率,循环套循环突破小周天

代码风格基本要求

第十回 调试加注释降低错误率,循环套循环突破小周天

作业1:水仙花数

求解“水仙花数”是一道非常经典的循环练习题。如果一个三位数( 100 —— 999 )等于它每一位数字的立方和,则称这个数为“水仙花数”。比如 153 = 1^3 + 5^3 + 3^3,所以 153 就是一个水仙花数。

本题的正确输出结果应当包括四个数字: 153 370 371 407

以我们目前(《基础篇》第十回)已经讲解过的知识,同学们至少可以通过两种方式编写出解题程序。这里建议大家使用三重循环穷举法回答本作业,思路及答案可以见本页标签。

除了嵌套循环外,大家也完全可以只使用一层循环即找出所有水仙花数。强烈建议大家在完成嵌套循环解法后,再尝试思考这种解法。我们会在本章发布一周之后,在本页 “解题思路” 中增加这一解法的提示。

思路提示

本例与视频课程中的 “穷举法解数学题” 基本相同,只不过循环次数增加到3次,运算条件也有变化。关键点如下:
所有三位数都可以用 a100 + b10 + c 表示,而它们每一位的立方和都是 a3 + b3 + c**3 。
所以只要做一个三层循环,最外围将a从1循环到9,第二层将b从0循环到9,第三层将c从0循环到9,就可以穷举出所有三位数。
在第三层循环里面,把穷举到的三位数abc按照(1)中的表示方法进行比较,即可判断出它是否为水仙花数。如果是,将abc打印出来即可。

特别提示:要格外注意a、b和c的初始化位置。比如,如果把b=0写在所有循环之前,程序就无法找到全部答案。具体原因与视频课程中调试器示例相同。

上一篇:C语言经典练习题:水仙花


下一篇:用代码输出所有的水仙花数(c++代码实现)