习题3-3 数数字(Digit Couting)

/*

不知道为什么,我在UVA上提交总是WA,但是结果完全没错呀~

要是有人知道原因了麻烦留言告诉我谢谢哈~

数数字*/
#include<stdio.h>
#include<strings.h>
int main ()
{
    int n,g;
    scanf("%d",&g);
    while(g--)
    {
    scanf("%d",&n);
    int a[15],i;
    //memset(a,0,sizeof(a));//或者这个,更简单。
    for(int j=0;j<=9;j++)
        a[j]=0; 
    for(i=1;i<=n;i++)
    {    
        for(int j=0, m=i, x=i%10;m!=0;j++)    //桶排序把i的各位数进行统计,x是当前个位数,j用来循环,m用来暂存i,(因为i在循环中,不能变) 
        { 
            x=m%10;
            a[x]++;                            //做这么多就是为了此行 
            m/=10;
        }
        
    }
    int first=1;
    for(int i=0;i<=9;i++)
        {
        if(first) 
        {
            first=0;
            printf("%d",a[i]);
         } 
        printf(" %d",a[i]);
        }
    }
    return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_42740816/article/details/86424960
3-3