C语言:输入一行字符,分别统计出其中的大写英文字母、小写英文字母、数字和其他字符的个数

在C++6.0里编译提示总是出错,请高手指教一下到底错在那里了,谢了
#include <stdio.h>
#define N 100
main()
{
char all[N];
int i,xx=0,shuzi=0,qita=0,dx=0;
printf("请输入一个字符串(不超过100个):");
gets(all);
for(i=0;all[i];i++)
{
if(all[i]>'a'&&all[i]<'z'||all[i]>'A'&&all[i]<'Z')
if(all[i]>='A'&&all[i]<='Z')
dx++;
else
xx++;
else

if(all[i]>'0'&&all[i]<'9')
shuzi++;
else
qita++;
}
printf("其中大写字母%d个,小写字母%d个,数字%d个,其他字符%d个\n",dx,xx,shuzi,qita);
}

语法错误:
printf("其中大写字母%d个,小写字母%d个,数字%d个,其他字符%d个\n",dx,xx,shuzi,qita);
dx后面的逗号不是英文的。算法也有错误:你判断的时候if(all[i]>'a'&&all[i]<'z'||all[i]>'A'&&all[i]<'Z')
应该把>都改成>=,<也一样,不改的话a、A、z、Z的判断将被划在其他类里,数字的判断也应该是大于等于,小于等于,改完后代码为:
#include <stdio.h>
#define N 100
main()
{
char all[N];
int i,xx=0,shuzi=0,qita=0,dx=0;
printf("请输入一个字符串(不超过100个):");
gets(all);
for(i=0;all[i];i++)
{
if(all[i]>='a'&&all[i]<='z'||all[i]>='A'&&all[i]<='Z')
if(all[i]>='A'&&all[i]<='Z')
dx++;
else
xx++;
else
if(all[i]>='0'&&all[i]<='9')
shuzi++;
else
qita++;
}
printf("其中大写字母%d个,小写字母%d个,数字%d个,其他字符%d个\n",dx,xx,shuzi,qita);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-18
把gets(all);这句改成
char c;
int i=0;
while((c=getchar())!='\n')
{
if(i<N) all[i++]=c;
}
这样应该就好了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网