给定一个 k 位整数
请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
输出格式:
对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
输入样例:
100311
输出样例:
0:2
1:3
3:1
AC代码(C++):
方法一(列举了所有的情况,看起来有点儿傻…哈哈哈)
#include <iostream>
#include <string.h>
char str[1005];
using namespace std;
int main()
{
while( cin>>str )
{
int k0=0,k1=0,k2=0,k3=0,k4=0,k5=0,k6=0,k7=0,k8=0,k9=0;
for( int i=0;str[i]!='\0';i++)
{
if( str[i]=='0' )
{
k0++;
}
else if( str[i]=='1' )
{
k1++;
}
else if( str[i]=='2' )
{
k2++;
}
else if( str[i]=='3' )
{
k3++;
}
else if( str[i]=='4' )
{
k4++;
}
else if( str[i]=='5' )
{
k5++;
}
else if( str[i]=='6' )
{
k6++;
}
else if( str[i]=='7' )
{
k7++;
}
else if( str[i]=='8' )
{
k8++;
}
else if( str[i]=='9' )
{
k9++;
}
}
if( k0!=0 )
{
cout<<"0:"<<k0<<endl;
}
if( k1!=0 )
{
cout<<"1:"<<k1<<endl;
}
if( k2!=0 )
{
cout<<"2:"<<k2<<endl;
}
if( k3!=0 )
{
cout<<"3:"<<k3<<endl;
}
if( k4!=0 )
{
cout<<"4:"<<k4<<endl;
}
if( k5!=0 )
{
cout<<"5:"<<k5<<endl;
}
if( k6!=0 )
{
cout<<"6:"<<k6<<endl;
}
if( k7!=0 )
{
cout<<"7:"<<k7<<endl;
}
if( k8!=0 )
{
cout<<"8:"<<k8<<endl;
}
if( k9!=0 )
{
cout<<"9:"<<k9<<endl;
}
}
return 0;
}
方法二
#include<iostream>
#include<string>
using namespace std;
int main(){
int a[10]={
0};
string s;
cin>>s;
for(int i=0;i<s.size();i++){
switch(s[i]){
case '0':a[0]++;break;
case '1':a[1]++;break;
case '2':a[2]++;break;
case '3':a[3]++;break;
case '4':a[4]++;break;
case '5':a[5]++;break;
case '6':a[6]++;break;
case '7':a[7]++;break;
case '8':a[8]++;break;
case '9':a[9]++;break;
}
}
for(int i=0;i<=9;i++){
if(a[i])cout<<i<<":"<<a[i]<<endl;
}
return 0;
}