关于用for循环求10个数最小值的C++代码逻辑疑问及学习建议
代码逻辑解析与初学者建议
为什么这段代码能输出最小值?
你刚才的逻辑出错啦,咱们一步步模拟输入1、2、3、4、5、6、7、8、9、10时代码的运行过程:
- 一开始
mn被初始化为10000 - 第一次循环,输入
1:1 < 10000成立,所以mn更新为1 - 第二次循环,输入
2:2 < 1?不成立!所以mn保持1不变 - 第三次到第十次循环,输入的
3到10都比当前的mn(1)大,所以每次的if条件都不满足,mn一直是1 - 最后输出
mn,结果就是1——也就是输入的最小值
你之前误以为每次x < mn都成立,但其实mn在第一次更新后就变成了更小的数,后面更大的输入不会触发mn的更新啦。
初学者理解代码运行的实用建议
- 手动模拟代码执行:像上面这样,把变量的初始值、每一步循环里变量的变化都写在纸上,逐行跟踪,这是理解逻辑最直接的方法
- 用调试工具:很多IDE(比如Code::Blocks、Visual Studio)都有调试功能,你可以设置断点,一步步运行代码,实时看变量的值怎么变化
- 给代码加注释:把每一行代码的作用写出来,比如在
if (x<mn) mn=x;旁边加注释// 如果当前输入的数比当前最小值小,就更新最小值,帮助自己梳理逻辑 - 修改代码测试:比如把初始的
mn改成0,或者输入包含负数的测试用例,看看输出变化,反过来理解代码的逻辑边界 - 从简单问题入手:先写一些计算两数之和、求最大值的小程序,把基础逻辑吃透再写复杂的代码
内容的提问来源于stack exchange,提问作者Adam Hussein
相关产品推荐
相关产品推荐

