问题描述
- 【编程错误求指教】计算一个数字前的所有数字中1出现的次数
-
function deal(m) {
var n = 0, i = 0,h = 0;
for (; n < m + 1; n++) {
i = n;
while (i > 0) {
if ((i % 10) == 1) {
h++;
};
i /= 10;
};
};
alert(h);
};
deal(11);计算11之前包括11数字中1出现的次数
错在哪里 11的结果是3
谢谢
解决方案
直接用正则表达式就可以了。
var str = "123";
var find = "1";
var reg = new RegExp(find,"g")
var c = str.match(reg);
alert(c?c.length:0);
解决方案二:
是ACM题对吧???
解决方案三:
你用了for还用while我认为是多余的。
当你m=11时,1时会加一次,10会加一次,11会加一次正好3次啊。
你想表达什么呢
解决方案四:
正确的结果是4,即1、10、11三个数字中包含了1,共4个。
你这个程序的主要问题是while循环中每次缩小十倍后的结果不是整数,即
i/=10;
这句话有问题,在下面增加一行处理即可,修改为:
function deal(m) {
var n = 0, h = 0, i=0;
for (; n < m + 1; n++) {
i = n;
while (i > 0) {
if ((i % 10) == 1) {
h++;
}
i /= 10;
i = Math.floor(i);
}
}
alert(h);
}
时间: 2024-11-03 22:22:44