#include<stdio.h>
#include<string.h>
int main()
{
int c;
int i,temp;
int bit[10]={0};
char number[1000];
scanf("%s",number);
if(number[0]=='0')
{
printf("0:1");
return 0;
}
for(i=0;i<strlen(number);i++)
{
bit[(number[i]-'0')]++;
}
for(i=0;i<10;i++)
{
if(bit[i]>0)
printf("%d:%d\n",i,bit[i]);
}
return 0;
}
这个题目关键就是如何处理一个一千位的数,当时考虑用long long int 等发现都不可行,于是把思路放到了数组,又首先考虑到了是整形数组,但是后来发现,如果使用整形数组会导致很难区分这个数个位之后的零和其他位的零。于是利用了字符串型数组。
这题也让我捡起来了几个知识点1.当把一个字符串按字符一个个放入数组时,可以直接使用 scanf("%s",number);
,这里的number是数组名。并且在统计这个字符数组的字符长度时,可以直接使用strlen函数,以前一直以为strlen函数只能用来统计资格字符串,没想到可以对数组来使用。for(i=0;i<strlen(number);i++)
。其他的就没什么特殊的了。题目不难,知识点重要。