有C语言编程,输入一个字符串,求这个字符串中不重复的字母的个数(大小写区分)

有C语言编程,输入一个字符串,求这个字符串中不重复的字母的个数(大小写区分)

#include<stdio.h>
#include<ctype.h>
int main(void)
{
char str[100]={'\0'};
int a[100]={0},i=0,n=0;
printf("请输入字符串:");
gets(str);
for(i=0;i<100;i++)
{
if(isalpha(str[i]))
a[str[i]-65]++;
}
for(i=0;i<100;i++)
{
if(a[i]==1)
n++;
}
printf("共有不重复的字母%d个\n",n);
return 0;
}

你看这个行不。。。追问

不对啊,。。输入klkk ,输出1.。。。

追答

那是你没复述清楚,你说的意思是字母的种类吧!
看这个!
#include
#include
int main(void)
{
char str[100]={'\0'};
int a[100]={0},i=0,n=0;
printf("请输入字符串:");
gets(str);
for(i=0;i<100;i++)
{
if(isalpha(str[i]))
a[str[i]-65]=1;
}
for(i=0;i<100;i++)
{
if(a[i]==1)
n++;
}
printf("共有不重复的字母%d个\n",n);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-26
// 代码理解起来有难度,请仔细阅读。
/*
输入一个字符串 : 1223039873
共有不重复的字符5个。
Press any key to continue
*/
#include <stdio.h>
void main() {
char s[100];
int i,j,n = 0,a[100] = {0};
printf("输入一个字符串 : ");
gets(s);
for(i = 0; s[i]; ++i) {
if(a[i] == 0) {
for(j = i + 1; s[j]; ++j)
if(s[i] == s[j])
a[i] = a[j] = 1;
}
}
for(i = 0;s[i]; ++i) if(a[i] == 0) n++;
printf("共有不重复的字符%d个。\n",n);
}
第2个回答  2012-03-24
#include<stdio.h>
#include<ctype.h>
int main(void)
{
char str[100]={'\0'};
int a[100]={0},i=0,n=0;
printf("输入字符串:");
gets(str);
for(i=0;i<100;i++)
{
if(isalpha(str[i]))
a[str[i]-65]=1;
}
for(i=0;i<100;i++)
{
if(a[i]==1)
n++;
}
printf("一共有不重复的字母%d个\n",n);
return 0;
}