描述
写一个算法统计在输入字符串中各个不同字符出现的频度并将结果输出(字符串中的合法字符为A-Z之间的26个字母和0-9之间的10个数字)。
输入
多组数据,每组数据有一行,为待统计字符频度的字符串。当字符串为“0”时,输入结束。
输出
对于每组数据输出n行,每一行为一个字符出现的频度(只输出存在的字符,格式为:字符:频度),字符排列顺序按照ASCII码从小到大的顺序。
输入样例 1
LITTLE5ILOVEYOU AREYOUOKNUMB90077 0
输出样例 1
5:1 E:2 I:2 L:3 O:2 T:2 U:1 V:1 Y:1 0:2 7:2 9:1 A:1 B:1 E:1 K:1 M:1 N:1 O:2 R:1 U:2 Y:1
#include<iostream>
//a的ascii码是97 A的ascii码是65
using namespace std;
#define MAXSIZE 1000
int main(){
char a[MAXSIZE];
while(cin>>a&&a[0]!='0'){//注意什么时候用‘0’什么时候用‘\0’
int i;
int b[36]={0};
for(i =0;a[i]!='\0';i++){
if('0'<=a[i]&&a[i]<='9')
b[int(a[i])-48]++;
else if('A'<=a[i]&&a[i]<='Z')//注意逻辑运算符比较的条件
b[int(a[i])-55]++;
}
for(i=0;i<10;i++)
if(b[i]>0)
cout<<char(i+48)<<":"<<b[i]<<endl;
for(i=10;i<36;i++)
if(b[i]>0) //注意不是b[10]>0 key
cout<<char(i+55)<<":"<<b[i]<<endl;
}
return 0;
}