个位数统计

 

 

这个题目看起来不是很难,其实的确不是很难.

起初,一看很简单,就随便写写.

#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;
}

  这样一个一个读入数字就简单的解决了整问题

  

posted @ 2023-01-06 14:41  Code_wangg  阅读(15)  评论(0编辑  收藏  举报