这个题目看起来不是很难,其实的确不是很难.
起初,一看很简单,就随便写写.
#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; }
这样一个一个读入数字就简单的解决了整问题
标签:10,int,个位数,++,num,time,Ntime,统计 From: https://www.cnblogs.com/Code-wangg/p/17030442.html