思路:一开始用的long long型,发现测试3一直过不去,然后改用字符串存储,就AC了。注意学会使用字符转整型数的方法。

代码:

/*
//第三个测试点过不去
#include<iostream>
using namespace std;
int main(){
    long long x,m;
    int a[10] ={0},k;  //初值都设为了0
    cin >> x;
    m = x;
    do{
        int j = m%10;
        a[j] ++;
        m /= 10;
    }while(m != 0);
    if(x == 0){
        printf("0:0\n");
    }
    else{
        for(int i = 0;i < 10;i ++){
            if(a[i] != 0){
                printf("%d:%d\n",i,a[i]);
            }
        }
    }
    return 0;
}
*/


//1000位数大小可能超过了long long型,改用字符串
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    char string[10010];
    int a[10] ={0};  //初值都设为了0
    scanf("%s",string);
    int len = strlen(string);
    int i = 0;
    do{
        a[string[i++]-'0'] ++;  //字符转整型数
    }while(--len != 0);
    if(string[0] == 0){
        printf("0:0\n");
    }
    else{
        for(i = 0;i < 10;i ++){
            if(a[i] != 0){
                printf("%d:%d\n",i,a[i]);
            }
        }
    }
    return 0;
}

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~