【C/C++】习题3-3 数数字/算法竞赛入门经典/数组和字符串

【题目】
把前n个(n<=10000)的整数顺序写在一起:123456789101112……
数一数0~9各出现多少次(输出10个整数,分别是0,1,2,……,9出现的次数)
【解答】
暴力求解:统计0,1,…,n的所有数字,每个多位数的每个的出现次数,用一个数组存储。
【代码】

#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int a[10]; //存储0~9的出现次数

int main()
{
    memset(a,0,sizeof(a));
    int n;
    scanf("%d",&n);
    for (int i = 0; i <= n; i++)
    {
        int tot = i; //注意不要直接对i操作,不然会死循环,设置一个接收变量
        while(tot)
        {
            int temp;
            temp = tot%10; //考察最后一位
            a[temp]++; //计数
            tot /= 10; //去掉最后一位
        }
    }
    for (int i = 0; i <= 9; i++)
    {
        printf("%d has %d
",i,a[i]);
    }
    system("pause");
}


递归法:
https://blog.csdn.net/qq_40054352/article/details/88594932

原文地址:https://www.cnblogs.com/kinologic/p/13949480.html