对于一个共有n页的书,它的页码是从1开始编号,一直到n,页码中没有无用的0,则该书的页码分别共用到了多少个0,1,2,3,4,5,6,7,8,9?

输入:一个数n表示这个书共有多少页,n>=1&&n<=1000000;

输出:十个数,分别表示0,1,2,3,4,5,6,7,8,9十个数字出现的次数;

样例:输入:10   输出:1 2 1 1 1 1 1 1 1 1

程序清单:


#include <iostream>
#include <cstdio>   //使用sprintf()函数要调用的头文件
#include <cstring>  //使用strlen()函数要调用的头文件
using namespace std;
int main()
{
 int n,num[10]={0};//设置一个数组用来存十个数出现的次数,开始一定要初始化为{0}
 char p[8];//因为n的取值范围从1到1000000最大为7位,所以设置一个8位的字符数组
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  sprintf(p,"%d",i);//这个函数的功能是把数字i写入字符数组p;例如i=10时,通过这函数的转换,就变成了字符数组p={10};
  for(int j=0;j<strlen(p);j++)
   num[p[j]-'0']++;//利用了ASC//码,例如’4‘-‘0’;4的ASC//码是52,52-48=4  刚好对应num【4】第四个出现的次数就能统计,从而实现了计数的功能;
 }
 for(int i=0;i<10;i++)
  cout<<num[i]<<" ";
 system("pause");
 return 0;
}