2 benben8153 benben8153 于 2015.07.12 17:51 提问

【编程错误求指教】计算一个数字前的所有数字中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

谢谢

4个回答

devmiao
devmiao   Ds   Rxr 2015.07.12 23:46

直接用正则表达式就可以了。

 var str = "123";
var find = "1";
var reg = new RegExp(find,"g")
var c = str.match(reg);
alert(c?c.length:0);
ipud2
ipud2   2015.07.15 14:13

是ACM题对吧???

u012216727
u012216727   Ds   Rxr 2015.07.12 18:58

你用了for还用while我认为是多余的。
当你m=11时,1时会加一次,10会加一次,11会加一次正好3次啊。
你想表达什么呢

tongyi55555
tongyi55555   2015.07.12 22:49

正确的结果是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);
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
给定一个非负整数n,统计1~n中所有数中1出现的次数
思路:遍历1~n的所有数,把每个数都转为char数组,然后看1在数组中出现的次数,统计返回即可。代码如下: public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count = 0; for(int i=1;i<=n;i++){
【前端笔试题】给定数字N,求从1到N中间0出现的次数
【前端笔试题】给定数字N,求从1到N中间0出现的次数
整数中1出现的次数(从1到n整数中1出现的次数) java
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 1、最直观的想法,求1到n中每个整数中1出现的次数,然后相加即可。而求每个十进制整数中
C++求从1到n的正整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。 例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。 问题描述:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。例如: N = 2,写下1,2。这样只出现了1个"1"。 N = 12,写下1,2,……,12,这样有5个"1"。
快速求解1~n的每个数字出现的次数.
对于快速求解1~n中每个数字出现次数的问题: 在做奥数题时,我们很多时候都会遇到这类问题:在1~999页中数字"1"出现了几次,数字"2"出现了几次... 对于这类问题在用笔算时我们一般是把1~999分为几个阶段: 1~9 10~99 100~999 ... 10^n~10^n*10-1 这样子一个阶段一个阶段的求解,可以有效的快速的解答出来,然而在编程中,遇到这类问题,我们一般是
【LeetCode 233】所有小于等于n的整数中,1出现的总次数,(例如111算3次)
听说找工作的都推荐刷LeetCode,那我也搭配着做一些。 题目链接: https://leetcode.com/problems/number-of-digit-one/ /* 题目: 给一个n, 找出从1到 思路: 暴力解法O(n), 当n到10^9会超时,故需要找规律 分析可得 0 - 9: 1个 10 - 99: 10 + 9 *
C语言三种方法求一个数二进制序列中出现1的次数
第一种方法,模2除2法。一个二进制序列通过模2运算,可以求得它的最末位数字,通过除2运算,可以去掉最末位的数,如此循环,如果模2的结果是1,那么给计数器加1,最后输出计数器的值,即出现1的个数。但这种方法只能求一个正数二进制序列出现1的次数,因为如果是负数模2的结果会永远都是0,而count也就永远都是0。具体实现代码如下:#define _CRT_SECURE_NO_WARNINGS 1#inc...
【C语言】编写程序数一下1到100的所有整数中出现多少次9.
//编写程序数一下1到100的所有整数中出现多少次9. #include int main() { int i,num=0; for(i=1;i<=100;i++) { if(i/10==9) { num++; } else if(i%10==9) { num++
编写程序数一下1到100的所有整数中出现多少次数字9
/* ********************************************* 编写程序数一下1到100的所有整数中出现多少次数字9 ***************************************** */ #include int main() { int count = 0; for(int i = 0; i <= 100; i++) { if(
计算数字出现的次数
读取输入的从0-100的数字,输入0结束,统计每个字数出现的次数,出现1次的输出 1 time,出现2次的输出 2 timers 代码如下: import java.util.*; public class Test001 { public static void main(String args) { Scanner sc=new Scanner(System.in); int nu