PHP 统计书页码中数字问题

 老师留的作业,开始只是(int)j/10,只要页码数大于10,数字0的数目就会有问题。调试后发现j取到了0.1多循环了一次。

 

问题描述:一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6页用数字6表示,而不是06或006等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,...,9。

算法设计:给定表示书的总页码的十进制整数n(1≤n≤109)。编程计算书的全部页码中分别用到多少次数字0,1,2,...,9。

数据输入:只有1行,给出表示书的总页码的整数n。

结果输出:程序运行结束时,将计算结果输出。输出共有10行,在第k行输出页码中用到数字k-1的次数,k=1,2,...10。

输入示例:11

输出示例

1

4

1

1

1

1

1

1

1

1

<?php
    $array=array(0,0,0,0,0,0,0,0,0,0);
    $page=12;
    for($i=1;$i<=$page;$i++){
        if($i>=10){
            $j=$i;
            while($j){
                $m=$j%10;
                $array[$m]++;
                $j=(int)($j/10);  //此处($j/10)一定要加(),否则会只对j除法运算,多循环一次
            }
        }

        if($i<10){
            $array[$i]++;
        }
        

    }
    for($i=0;$i<10;$i++){
        echo $i."--->".$array[$i]."<br/>";
    }

续:

弱类型,python中

>>> (int)1/10
SyntaxError: invalid syntax
>>> int(1/10)
0

 c语言中:

#include<stdio.h>
void main(){
    float a=1;
    float b;
    b=(int)a/10;
    printf("%f",b);
}

//运行结果
0.000000

 


版权声明:本文为fuckingone原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。