因为ASCII码只有256个,故可以这样做:
#pragma warning(disable:4996)
#include<cstdio>
#include<cstdlib>
#include<cstring>
char str[200];
int cnt[256];
void CountChar(char* str) {
//统计每个字符出现的个数并打印
memset(cnt, 0, sizeof(cnt));//清空cnt数组
for (int i = 0; i < strlen(str); i++) {
cnt[str[i]]++;//统计每个字符的个数
}
for (int i = 0; i < 256; i++) {
if(cnt[i]>0)
printf("%c %d\n", i, cnt[i]);//打印
}
}
int main()
{
while (~scanf("%s", str)) {
if (strcmp(str,"0")==0)break;
CountChar(str);
}
system("pause");
return 0;
}