这个题的感觉很不好处理,想了很长时间也没有做出来,看了一下别人用C语言写的,真的是太秀了,思路真的非常好,可以启发自己好多;
字符串的统计问题,把字符串的字符弄到数组里,注意字符“0”转换为int型为它的ASCII码“48”,因此数字要减去48。此处数组a[]的下标正好与数字同步。
include<stdio.h>
include <string.h>
int main()
{ char s[1005];//定义一个字符串数组
int a[15]={0};//这里是为了存储0-9的出现次数,其实定义为10也是可以的。
int len,t;
scanf("%s",s);
len=strlen(s);//字符串长度
t=0;
for(int i=0;i<len;i++)
{
t=s[i]-48;//因为每一位数都只能是0-9,并且0对应的ASCII码值是48,此处字符0的48-48是为了回到ASCII码的0处(也就是null)1,2,3...以此类推。其目的是为了使其变回数字类型0,1,2.....。
a[t]++;//此处以数组的每一个元素记录一个数值的出现次数。
//printf("gg: %d,%d\n",t,i);
}
for(int j=0;j<10;j++)
{
if(a[j]!=0)//判断出现次数不为0才进入条件
{
printf("%d:%d\n",j,a[j]);//打印每一个出现次数不为0的数字的次数。注意因为记录数组与循环条件j是同步的,所以可以直接一一对应打印出次数。
}
}
}
作者:lostwall
来源:CSDN
原文:https://blog.csdn.net/lostwall/article/details/60579872
版权声明:本文为博主原创文章,转载请附上博文链接!
真的写的太好了,我只是在原有的基础上加上自己的一些注释,和对程序的理解。