输入正整数n,统计从1到n的所有数值中,0,1,2....、9各出现多少次
输入:11
输出:
0 1
1 4
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
//创建二维数组,来存放每个数的出现次数
int num[][2] = { {0,0},{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},{8,0},{9,0} };
int n = 0;
scanf("%d",&n);
//便历1到n
for (int i = 1; i <=n; i++)
{
//将i的值赋给u,防止后续计算改变i的值影响循环
int u = i;
//求出数值的位数
int sum = 0;
while (u)
{
u= u / 10;
sum++;
}
//截取每一位,并与二维数组相匹配,开始计数
for (int j = 0; j < sum; j++)
{
num[i/int(pow(10, j))%10][1]= num[i / int(pow(10, j)) % 10][1]+1;
}
}
//循环输出
for (int i = 0; i < 10; i++)
{
printf("%d %d\n",num[i][0],num[i][1]);
}