//把前n(n<10000)个整数顺次写在一起:12345678910111213141516....数一数0至9出现的次数
//输出10个整数,分别是0,1,2..至9出的个数
//解题思路:分别统计每一个数中的每一位的数 并判断其每一位的值
#include<stdio.h>
#include<string.h>
const int maxn= 10001;
int cD[maxn][10];
int main(){
int b=0;
//置零
memset(cD,0,sizeof(cD));
//遍历数组每一位
for(int i=0;i<=10000;i++){
b=i;
//循环每一个数字的每一位
for(;;){
//统计每一个数字中的每一位的数字情况
for(int j=0;j<10;j++){
//最后一位的数字
if(i%10==j){
cD[i][j]++;
break;
}
}
//数字减少一位
b/=10;
//跳出循环
if(b==0)
break;
}
}
int n;
scanf("%d",&n);
//统计输出结果
for(int j=0;j<10;j++){
int sum=0;
for(int i=1;i<=n;i++){
sum+=cD[i][j];
}
printf("%d: %d\n",j,sum);
}
return 0;
}
转载于:https://www.cnblogs.com/qingtianBKY/p/6599758.html