字符个数统计

1.题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和

127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1≤n≤500 

输入描述:

输入一行没有空格的字符串。

输出描述:

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

2.问题分析

 目的是统计一个字符串中字符的个数,首先我们得清楚一共有多少个字符,这需要我们对ASCII

码表有足够的认识,首先我们来回顾一下ASCII码表:

字符个数统计_第1张图片

上图就是一张最完整的ASCII码表,可以看出一共有127个字符,这127个字符都有可能出现在字符

串中。所以要判断的话,可能要进行127此判断,但是我们可以把这127个字符转化为int类型,也

就是0~127,对应的我们初始化一个127个整形的数组,如果将字符对应成数组下标,并把其对应

的数字赋值为0,就能够做到只找一次且不重复。

3.问题解决

根据上述的问题分析,可以写出代码

代码:

#include 
#include

int main()
{
    char str[501];    //存放字符串
    int num[128]={0};    //ASCII码下标
    int cls = 0;    //字符类型计数
    scanf("%s",str);    //接收字符串
    int len = strlen(str);    //计算长度
    for(int i = 0; i < len; i++)    //循环判断
    {
        if(num[(int)str[i]]==0)
        {
            num[(int)str[i]]=1;    //已存在或重复则置1
            cls++;    //字符类型累加
        }
    }
    printf("%d\n",cls);    //输出字符类型
    return 0;
}

你可能感兴趣的:(c语言,c++,开发语言)