题目
题目描述
试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。
示例
输入描述:
输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。
其中,1≤ n ≤ 1000000,0 ≤ x ≤ 9。
例如:
样例输入:
11 1
输出描述:
输出共 1 行,包含一个整数,表示 x 出现的次数。
例如:
对应输出:
4
总结
我之前也遇到过这种问题,就是直接用了循环题里面的变量来进行运算,但始终搞不懂为什么不行,今天,总算搞清楚了。
因为i第一次就以i=1进来,然后进入内循环体(while)后就变成了i=0,然后又去进行外循环体(for)的i++,
然后i就又用i=1的身份进来,就又进行一次和上回一样的循环,这就成为只有count在累加其他数字没有在变的死循环了。
因此,用于记录循环次数的i不应该在循环内被改变,我们要在进入while前,把i给另一个变量,比如 int j=i; ,然后在while内使用变量j去进行运算。
而我在进行思考和调试的时候,虽然for和while都是循环,但因为for然后int i在之前一直在用它控制次数控制次数,所以找错误的时候一直关注于while里面变量的值
然后注意力都在while循环,而忽略了要结合for循环来看代码的问题,半天找不到错。
总感觉没有人会犯跟我一样笨的错误…最后把printf输出放里面找错确实是个不错的方法嘿嘿,看来看书脑子还是进去了点东西_(:з」∠)_
这道就是换汤不换药的字数统计!
PASS代码
#include <stdio.h>
int main()
{