运用指针技术实现,统计输入字符串的各个字母各出现了多少次。区分大小写。(10分)
题目内容:
运用指针技术实现,统计输入字符串的各个字母各出现了多少次。区分字母大小写。
输入格式:
在一行上输入所有的字符串。如下:
abab
输出格式:
输出时,每行输出一个字符和个数,每个字符和个数数值之间空一格,按字符的ASCII码由小到大输出。
a 2
b 2
输入样例:
acba
输出样例:
a 2
b 1
c 1
代码如下:
#include<iostream>
using namespace std;
int main()
{
char str[88]={'\0'},*p=str,ch;
int counter[52]={0},*point=counter;
cin>>str;
while(1)
{
switch(*p)
{
case 'A':counter[0]++;break;
case 'B':counter[1]++;break;
case 'C':counter[2]++;break;
case 'D':counter[3]++;break;
case 'E':counter[4]++;break;
case 'F':counter[5]++;break;
case 'G':counter[6]++;break;
case 'H':counter[7]++;break;
case 'I':counter[8]++;break;
case 'J':counter[9]++;break;
case 'K':counter[10]++;break;
case 'L':counter[11]++;break;
case 'M':counter[12]++;break;
case 'N':counter[13]++;break;
case 'O':counter[14]++;break;
case 'P':counter[15]++;break;
case 'Q':counter[16]++;break;
case 'R':counter[17]++;break;
case 'S':counter[18]++;break;
case 'T':counter[19]++;break;
case 'U':counter[20]++;break;
case 'V':counter[21]++;break;
case 'W':counter[22]++;break;
case 'X':counter[23]++;break;
case 'Y':counter[24]++;break;
case 'Z':counter[25]++;break;
case 'a':counter[26]++;break;
case 'b':counter[27]++;break;
case 'c':counter[28]++;break;
case 'd':counter[29]++;break;
case 'e':counter[30]++;break;
case 'f':counter[31]++;break;
case 'g':counter[32]++;break;
case 'h':counter[33]++;break;
case 'i':counter[34]++;break;
case 'j':counter[35]++;break;
case 'k':counter[36]++;break;
case 'l':counter[37]++;break;
case 'm':counter[38]++;break;
case 'n':counter[39]++;break;
case 'o':counter[40]++;break;
case 'p':counter[41]++;break;
case 'q':counter[42]++;break;
case 'r':counter[43]++;break;
case 's':counter[44]++;break;
case 't':counter[45]++;break;
case 'u':counter[46]++;break;
case 'v':counter[47]++;break;
case 'w':counter[48]++;break;
case 'x':counter[49]++;break;
case 'y':counter[50]++;break;
case 'z':counter[51]++;break;
}//计数,感觉太麻烦了,应该可以优化
p++;
if(*p=='\0')break;
}
ch='A';
for(int i=0;i<26;i++)
{
if(*point!=0)
{
cout<<ch<<" "<<*point<<endl;
}
ch++;
point++;
}//输出大写部分
ch='a';
for(int i=0;i<26;i++)
{
if(*point!=0)
{
cout<<ch<<" "<<*point<<endl;
}
ch++;
point++;
}//输出小写部分
return 0;
}