这是PAT第三题,题目是统计一个hin’大hin大的数 中各个数字出现的次数,比如100311,0出现2次,1出现3次,3出现1次。
对应输出如下结果:
0:2
1:3
3:1
解题思路:有一点要注意,虽说题目说的是一个数字,但千万不要用int去存这个数!!long也不可以!!一个int能最大存21亿,也就10位数,long也只有19位,远不够所谓的大数。所以得用char数组存这个数。
然后就是逐个判断字符是那个数字,这里又有一点要注意,字符1是不等于数字1的!字符c转成数字一的方式是:
int a = c-‘0’;
下面是本题答案,有不足之处还请大佬改正:
#include<stdio.h>
int main(){
char num[1000];
scanf("%s",num);
int a[10]={0};
int i=0;
for(;num[i]!='\0';i++){
int j;
for(j=0;j<10;j++){
if(j==num[i]-'0'){
a[j]++;
break;
}
}
}
for(i=0;i<10;i++){
if(a[i]!=0){
printf("%d:%d\n",i,a[i]);
}
}
return 0;
}