字符个数统计

描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1 \le n \le 500 \1≤n≤500
输入描述:
输入一行没有空格的字符串。

输出描述:
输出 输入字符串 中范围在(0~127,包括0和127)字符的种数

解题如下:

题目圈定出现的字符都是 ascii 值小于127的字符,因此只需要定义一个标记数组大小为
127 ,然后将字符作为数组下标在数组中进行标记,若数组中没有标记过表示第一次出现,进行计数,否则表示重复
字符。
示例:查表法, “aca” ,首先把a字符( ascii 值为 97 )作为下标,将标记数组的第 97 位置 1 ,下次如果还有 a 字符
出现,到下标 ‘a’ 或者 97 的位置一看是1就表示a已经统计过了。

 #include 
int main()
{
        char tmp[501] = {0};
         while(~scanf("%s", tmp)) 
         {
                char table[128] = {0}, *ptr = tmp;
               int count = 0;
               while(*ptr != '\0')
               {
                     if (table[*ptr] != 1)  //判断字符ascii值作为下标的位置是否被标记过,是否是重复字符
                     {                    
                          count++; //当前字符的位置没有被标记过表示没有出现过,则计数+1
                     }
                     table[*ptr] = 1;//将字符ascii值作为下标的位置进行标记置1
                     ptr++;                
                } printf("%d\n", count); 
             
         }
           return 0;
}

你可能感兴趣的:(c语言题型,c语言)