c语言简单程序4:输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数

char a[100];
gets(a);
int i,s=0,z=0,k=0,q=0;
for(i=0;i<strlen(a);i++)
if(a[i]>=48&&a[i]<='0')
s++;
else if(a[i]==' ')
k++;
else if(a[i]>='A'&&a[i]<='Z')
z++;
else if(a[i]>='a'&&a[i]<='z')
z++;
else q++;
puts(a);
printf("数字:%d,空格:%d,字母:%d,其他:%d",s,k,z,q); 不是很懂,抽空讲解一下,谢谢、

char a[100];
gets(a);从stdin流中读取字符串到a数组中;
int i,s=0,z=0,k=0,q=0;
for(i=0;i<strlen(a);i++) 当i小于数组长度时,遍历a数组
if(a[i]>=48&&a[i]<=57)如果第i个字符的ASCII值在48和57之间(即阿拉伯数字0~9),则判断为数字;
s++; 数字个数加1;
else if(a[i]==' ')
k++;
else if(a[i]>='A'&&a[i]<='Z')如果第i个字符的ASCII值在65和90之间(大写字母A~Z),则判断为字母;
z++;
else if(a[i]>='a'&&a[i]<='z')如果第i个字符的ASCII值在97和122之间(小写字母a-z),则判断为字母;
z++;
else q++;如果都不符合条件,就判定为其他字符;
puts(a);把a数组到流stdout中
printf("数字:%d,空格:%d,字母:%d,其他:%d",s,k,z,q); 以10进制的形式输出所有统计个数

还有啥不懂的么?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-02
char a[100];//定义字符串
gets(a);//输入字符串
int i,s=0,z=0,k=0,q=0;//定义个数,并且初始化为0
for(i=0;i<strlen(a);i++)//遍历字符串
if(a[i]>=48&&a[i]<='9')//小于等于'9',不是'0',写错了,判断是不是数字
s++;//如果是,s加一
else if(a[i]==' ')//否则,判断是不是空格
k++;//如果是空格,k加一
else if(a[i]>='A'&&a[i]<='Z')//判断是不是大写字母
z++;//如果是,z+1
else if(a[i]>='a'&&a[i]<='z')//判断是不是小写字母
z++;//如果是,z+1
else q++;//其他字符,q加一
puts(a);//输出字符串
printf("数字:%d,空格:%d,字母:%d,其他:%d",s,k,z,q); //输出字母、空格、数字和其他字符的个数
相似回答