个位数统计

这个题目看起来不是很难,其实的确不是很难.
起初,一看很简单,就随便写写.
#include<stdio.h>
void num_time(int n);
int main()
{
    int n = 0;
    scanf("%d",&n);
    num_time(n);
    return 0;
}
void num_time(int n)
{
    int a[10] = { 0 };
    int i = 0;
    while(n)
    {
        a[n % 10]++;
        n /= 10;
    }
    for (i = 0 ; i < 10 ; i++)
    {
        if (a[i])
        printf("%d:%d\n",i,a[i]);
    }
}
结果就是

仔细一看题目,1000位,这样的话,一般的变量就装不下.要换一个思路
这样我们可以吧数字看成一个个字符,然后逐个读取,然后在转化为数字
#include<stdio.h>
#define N 10
int main()
{
    char a;
    int Ntime[N] = {0};
    int i = 0;
    while((a = getchar()) != '\n')
    {
        Ntime[a - '0']++;
    }
    for (i = 0 ; i < N ; i++)
    {
        if (Ntime[i])
        printf("%d:%d\n",i,Ntime[i]);
    }
    return 0;
}
这样一个一个读入数字就简单的解决了整问题

 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号