#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n;
char str[10000];
while(cin>>n)
{
itoa(n,str,10);
int l=strlen(str);
int a[l];
for(int i=0;i<l;i++)
{
a[i]=str[i]-48;
}
//这样便得到了整数对应的数组
sort(a,a+l);
//升序排序
int b[10]={0};
for(int i=0;i<l;i++)
{
int p=a[i];
b[p]++;
}
//用一个数组下标来记录a[i],值表示出现的次数;
for(int i=0;i<10;i++)
{
if(b[i]!=0)
cout<<i<<":"<<b[i]<<endl;
}
}
return 0;
}
很遗憾,pta不能编译itoa函数,而且还把问题复杂化了。而且发现了一个很**的问题,就是1000位的数拿什么存?那肯定要用字符串来存放了,不能被说什么输入一个整数就int。。。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
int a[10]={0},i,n;
char str[1001];
gets(str);
n=strlen(str);
for(i=0;i<n;++i)
{
a[str[i]-'0']++;
}
for(i=0;i<10;++i)
{
if(a[i]!=0)
printf("%d:%d\n",i,a[i]);
}
return 0;
}