C语言统计一个字符串(包含空格)中字母的种类(不是个数)
写了一个小程序来通过输入一个字符串后,统计26个字母中出现了几种。
例如:输入juue
输入3
输入abcd efg lmn
输出10
思路简述
先用一个数组将26个字母进行保存,然后将输入烦人字符串中的每一个元素与这26个字母对比,看时候有重复。第一次出现重复时将保存26个元素的数组中对应的元素赋值为空字符(或者其他不适字母的字符),然后让标记值加一。采用循环遍历每一个输入字符数组的元素。最后的标记值就是答案。
)
易错提醒
一开始在读取字符串时采用的是scanf();这种方式,但是这种方式只能读取连续的字符串,中间不能有空格。 因为scanf(); 在读取时遇到空格会停止。所以应该采用gets();的读法,
下面是程序代码
#include <stdio.h>
#include <string.h>//使用strlen()函数,获取字符数组长度
int main()
{
char dict[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char str[1000];
gets(str);
int len, i, j, flag=0;//flag是标记值
len=strlen(str);
for(i=0;i<len;++i)
{
for(j=0;j<20;++j)
{
if((str[i] == dict[j]) && ( str[i] != ' '))
{
dict[j]='0';
flag+=1;
// continue;
}
}
}
printf("%d\n",flag);
return 0;
}