用c语言编程:输入一个字符串,统计其中英文字母,数字符号及其他字符的个数

用一下程序统计其他字符总是有错,请高手看看错在哪里?
#include <stdio.h>
#define N 100
main()
{
char all[N];
int i,zimu=0,shuzi=0,qita=0;
printf("请输入一个字符串(不超过100个):");
gets(all);
for(i=0;i<N;i++)
{
if(all[i]>'a'&&all[i]<'z'||all[i]>'A'&&all[i]<'Z')
zimu++;
else if(all[i]>'0'&&all[i]<'9')
shuzi++;
else
qita++;
}
printf("其中字母%d个,数字%d个,其他字符%d个\n",zimu,shuzi,qita);
}

下面这句有错:
for(i=0;i<N;i++)
需要修改为:
for(i=0;all[i];i++)

因为你数组定义为100个长度,但是实际输入的并没有这么多,循环只对应该实际输入的内容进行判断。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-25
你的else的意思就是除了是字母,数字以外的都归到字符的个数里面
第2个回答  2010-05-25
你的循环循环了100次啊,但你输入的字符串却没有这么长,所以没有赋值的那一部分算入其他中了。
应该这样写 for(i=0;a[i]!='\0';i++)
第3个回答  2013-04-05
我很想念你。你怎么样?
2。未来的父亲节。我要回家看我的父亲。

3。对不起,你不介意我坐在这里吗?

4。会带你到学校是长期的吗?
5。对不起,我迟到了。交通太糟糕了。
第4个回答  2010-05-25
【阳光上的桥】的回答很好,将
for(i=0;i<N;i++)
修改为:
for(i=0;all[i];i++)后,程序就好多了。

但是,还有两个小问题:
1.没有把数组all进行初始化。
2.如果用户输入“aaazzz”的话,你的程序统计结果是0。
修改后的程序如下:
#include <stdio.h>
#define N 100
main()
{
char all[N] = {0};
int i,zimu=0,shuzi=0,qita=0;
printf("请输入一个字符串(不超过100个):");
gets(all);
for(i=0;all[i];i++)
{
if(all[i]>='a'&&all[i]<='z'||all[i]>='A'&&all[i]<='Z')
zimu++;
else if(all[i]>='0'&&all[i]<='9')
shuzi++;
else
qita++;
}
printf("其中字母%d个,数字%d个,其他字符%d个\n",zimu,shuzi,qita);
}
相似回答