for循环的理解问题
- 笔者在做下题时发现了对于for循环的重大理解错误
[NOIP2013 普及组] 计数问题
题目描述
试计算在区间 到 的所有整数中,数字 ()共出现了多少次?例如,在 到 中,即在 中,数字 出现了 次。
输入格式
个整数 ,之间用一个空格隔开。
输出格式
个整数,表示 出现的次数。
样例输入 #1
1 | 11 1 |
样例输出 #1
1 | 4 |
提示
对于 的数据,,。
练习代码为
1 |
|
分析
程序运行时发现为死循环 ,调试过程中发现通过while循环i=0退出后,i重新被赋值为1,重现上一次循环。通过调试我发现自己在for循环理解出现问题。之前认为for(int i=1;i<=n;i++)固定的是,第一层为i=1,执行循环体后i就是2,现在才发现理解出现了很大的差错。关键在于i++,本题练习过程中i为循环变量,通过while循环改变i为0后,循环体结束下一步i++,i变为1,而不是理想中的2。
因此本题应该添加临时变量让替代循环变量。
##ACcode
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 少年没有乌托邦!
评论