前言

传送门

正文


思路

这里需要注意一个技巧,如何将字符型的数字转换为整数型的数字==>假设char型变量c是
‘0’~‘9’的一个字符,那么它所对应的数字就是c-‘0’,其实原理就是字符c的ASCII码值减去字符’0’的ASCII码值,其差值就是整数c,同理若需要将一个整型数字c转换为相应的字符c,那么只需要c+‘0’即可。由此扩展一下可以知道将一个大写字母转换为小写字母,比如‘M’转为’m’,那么只需要‘M’-‘A’+'a’即可。

参考题解

#include<iostream>
#include<string>
using namespace std;
/*
首先使用字符串n存储输入的正整数,遍历该字符串,将每一位字符
转换为数字,即使用该字符减去'0',再用一个整型数组res来存放
下标为i的数字的出现次数,最后升序输出该数组内容即可 
*/
int main(){
	string n;
	int res[10]={0},len;
	cin>>n;
	len=n.size();
	for(int i=0;i<len;i++){
		res[n[i]-'0']++;
	}
	for(int i=0;i<10;i++){
		if(res[i]!=0)cout<<i<<":"<<res[i]<<endl; 
	}
	return 0;
}