个位数统计

这个题目看起来不是很难,其实的确不是很难.
起初,一看很简单,就随便写写.
#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号