老师留的作业,开始只是(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