C语言问题,没有确切思路,希望有人能提点一下

C语言,求这道题的思路,是要转换成字符串扫描,还是有别的方法,求解惑。
题目描述
试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9)共出现了多少次?例如,在 1 到 11 中,即在
1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。
输入格式
2 个整数 n,x,之间用一个空格隔开。
输出格式
1 个整数,表示 x 出现的次数。

供参考:

#include<stdio.h>
int main()
{
    int i=1,n,x,k,cnt=0;
    scanf("%d%d",&n,&x);
    while(i <= n)
    {
        k = i;
        while(k)
        {
            if(k%10 == x) cnt++;
            k /= 10;
        }
        i++;
    }
    printf("%d",cnt);
    return 0;
}