c++ 字符算法

来源:百度知道 编辑:UC知道 时间:2024/07/04 05:26:36
void doc::count()
{
char *s=str;int index;
while(*s)
{
if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
{
index=*s>='a'?*s-'a':*s-'A';
counter[index]++;
}
s++;
}
for(int i=0;i<26;i++)
cout<<(char)('a'+i)<<":"<<counter[i]<<" ";
}
这个是怎么实现对一段文本中26个字母进行计数的?

主要就是那个IF判断和它里面的条件判断,首先用IF来判断这个字符串里是不是有大小写字母,如果是呢,就进么里面的表达式,这个表达式判断现在指向的字符是不是小写字母,如果是呢,就用小写字母来减字符a,这样就得到一个数字,这个数字就是在26个字母中,这个字符的位置,当然,如果是大写也会得到这个数字,也一样是这个位置。然后呢,他再在counter数组里用这个位置当下标,进行自增,就得统计出了这个字符不分大小写的个数了。呵呵