题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。

输入描述:

输入N个字符,字符在ACSII码范围内。

输出描述:

输出范围在(0~127)字符的个数。

示例1
输入

abc

输出

3

解题思路

1 如何字符重复个数统计?

如同上一题“提取不重复的整数”,统计整数中数字的重复次数,我们采用了数组。

同样,本题统计0~127字符的出现次数,也可以采用数组来存储。

2 c语言实现

#include <stdio.h>

int count(char* s)
{
    int num = 0,a[128] = {0};
    int len = strlen(s);
    for (int i = 0; i < len; i++) {
        if (s[i] >= 0 && s[i] <= 127) {
            a[s[i]]++; //a[s[i]]代表s[i]字符出现的次数
        }
    }

    for (int i = 0; i < 128; i++) {
        if (a[i]) {//a[i]!=0代表该字符出现过
            num++;
        }
    }
    return num;
}

int main()
{
    char s[100] = {'\0'};
    scanf("%s",s);

    printf("%d\n",count(s));
    return 0;
}