个人解法
思路
1.先使用数组将整数N输入
2.再创建一个一维数组,将要输出数字的个数进行保存
3.用if语句将判断的数组的数字进行保存
4.输出每个数字和每个数字的个数
缺点
时间复杂度高
源码
#include<stdio.h>
#include<string.h>
int main()
{
char a[10002];
int i;
int b[10]={0};
scanf("%s",a);
for(i=0;i<strlen(a);i++)
{
if(a[i]=='0') b[0]++;
if(a[i]=='1') b[1]++;
if(a[i]=='2') b[2]++;
if(a[i]=='3') b[3]++;
if(a[i]=='4') b[4]++;
if(a[i]=='5') b[5]++;
if(a[i]=='6') b[6]++;
if(a[i]=='7') b[7]++;
if(a[i]=='8') b[8]++;
if(a[i]=='9') b[9]++;
}
for(i=0;i<10;i++)
{
while(b[i]!=0)
{
printf("%d:%d\n",i,b[i]);
printf("\n");
}
}
}
大佬解法
思路
1.运用数组的嵌套:
如a [ b [ i] ],其中b[i]只能存1到9,然后用a[ ]来存放数字的个数
源码
#include<stdio.h>
#include<string.h>
int main(){
char c[1001];
int i,len;
int b[10]={0};
scanf("%s",c);
len=strlen(c);
for(i=0;i<len;i++)
b[c[i]-'0']++;
for(i=0;i<10;i++)
{
if(b[i]!=0)
printf("%d:%d\n",i,b[i]);
}
}