我们先看看这道题
解这道题的思路就是
先将输入的数看成字符串存入数组中,我们知道通过Ascii表的转换知道,字符数字减去字符0就是十进制的数,我们再创建一个数组存入每个数重复的次数。先看下面这段代码:
char arr[1000];
scanf("%s",arr);
int j=strlen(arr);
int arr1[10]={0};
我们先求出数组的长度,这样就可以用for循环历遍整个数组,
int c=0;
for(int i=0;i<j;i++)
{
c=arr[i]-'0';
arr1[c]++;
}
再历遍整个数组的时候减去字符0,放入C中,这样c的取值范围就是0到9了,这样创建的另一个数组对应的值就可以加1了。
接下来再次历遍整个数组让arr1中不为0的值打印出来即可,完整代码如下:
#include<string.h>
#include<stdio.h>
int main()
{
char arr[1000];
scanf("%s",arr);
int j=strlen(arr);
int arr1[10]={0};
int c=0;
for(int i=0;i<j;i++)
{
c=arr[i]-'0';
arr1[c]++;
}
int k=0;
for(k=0;k<10;k++)
{
if(arr1[k]!=0)
{
printf("%d:%d\n",k,arr1[k]);
}
}
return 0;
}