思路:(这篇是利用指针来写的)
假如给出的字符串为:qwe 123 qwe
这个字符串中不同类型的字符有7个
可以借助两层for循环,第一步:先将x[0]与x[1]、x[2]……x[strlen(x)]比较,如果相等,直接将strlen(x)减去1
第二步:将x[1]与x[0]、x[2]……x[strlen(x)]比较,如果相等,直接将strlen(x)减去1
第三步:将x[2]与x[0]、x[1]、x[3]……x[strlen(x)]比较,如果相等,直接将strlen(x)减去1
#include<stdio.h>
#include<string.h>
#define M 200
#define N 128
int count(char *pstr,char *count)
{
//入参检查
if(NULL == pstr || NULL == count)
{
printf("NULL_ERROR\n");
return -1;
}
//先定义一个可以存放128个字符的数组出来
int x[N] = {0};
//遍历str这个字符串,判断出现的次数
while(*pstr)
{
if(0 == x[*pstr])
x[*pstr] = 1;
pstr++; //移动指针的指向
}
//遍历x数组,查找1的个数
int i;
for(i = 0;i < N;i++)
{
if(1 == x[i])
(*count)++;
}
return 0;
}
int main()
{
char str[M] = {'\0'};
char *pstr = str;
gets(str);
int sum = 0;
int ret = count(pstr,&sum);
if(-1 == ret)
return -1;
printf("%d\n",sum);
return 0;
}