用C语言编写一段题目为“输出一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数”的程序

用C语言编写一段题目为“输出一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数”的程序。

#include <stdio.h>
int main()
{
     char c[50];
     int i,el=0,sp=0,nu=0,other=0; 
     gets(c);//输入字符串 
     
     for(i=0; i<strlen(c); i++)//strlen返回字符串长度 
     {
             if((c[i]>='A' && c[i]<='Z')||(c[i]>='a' && c[i]<='z'))
                  el++;
             else if(c[i]>='0'&&c[i]<='9')
                 nu++;
             else if(c[i]==' ')
                 sp++;
             else 
                  other++;
     }
     printf("英文字母个数=%d\n数 字 个 数 =%d\n空 格 字 数 =%d\n其他字符个数=%d\n",el,nu,sp,other);
     return 0;
}

已经测试过了,测试结果如下,有问题可以继续追问。

追问

我是初学者,看不懂,有没有更简单的。

追答#include <stdio.h>
int main()
{
     char c[50];//输入字符串 
     int i,el=0,sp=0,nu=0,other=0; 
     gets(c);//输入字符串 
     
     for(i=0; i<strlen(c); i++)//strlen返回字符串长度 
     {
             if((c[i]>='A' && c[i]<='Z')||(c[i]>='a' && c[i]<='z'))//判断字符在a~z和A~Z之间为英文字符 
                  el++;//英文字符数目 
             else if(c[i]>='0'&&c[i]<='9')//判断字符在0~9之间为数字字符 
                 nu++;//数字数目 
             else if(c[i]==' ')//判断是否为空格 
                 sp++;//空格数目 
             else 
                  other++;//其他字符数目 
     }
     printf("英文字母个数=%d\n数 字 个 数 =%d\n空 格 字 数 =%d\n其他字符个数=%d\n",el,nu,sp,other);
     return 0;
}

这个不知道可能看懂,加了一些注释

追问

看懂了点,strlen 返回字符串是什么意思,

追答

strlen这个函数是返回字符串长度的函数,我不清楚你们现在学到什么程度了?我不知道你们是否可以用strlen函数。如果现在这个不能我看看在改改。

#include <stdio.h>
int main()
{
     int c;
     int el=0,nu=0,sp=0,other=0; 
     c=getchar();//输入字符
     
     while(c!='\n')
     {
             if((c>='a' && c<='z') || (c>='A' && c<='Z'))
                  el++;
             else if(c>='0'&&c<='9')
                 nu++;
             else if(c==' ')
                  sp++;
             else 
                  other++;
                  
             c=getchar();//输入字符
     }
     printf("英文字母个数=%d\n空 格 个 数=%d\n数 字 个 数 =%d\n其他字符个数=%d\n",el,sp,nu,other);
  
     return 0;
}

追问

那个我没学过,我C语言才讲到函数,没学多少,如果你可以再改改的话,那非常感谢

你如果不好改的话,可以说一下strlen 的具体含义和用法

追答

后面的那个代码是我改过后的,你看看可能看懂,里面的方法和之前的代码一样。

追问

我看了呀,就是不知道strlen .你能讲一下它的用法吗?

追答

追答里面换的是另一个方法。strlen算的是字符串的长度,从字符串头开始计算到串结束符'\0'的串长度。可以参考:http://baike.baidu.com/link?url=Q685BntFh5xcoK9vWsx1wRAla28b2yLb7T3SUgzDUWyAlrzsIvawFkBHKb412dsnw3ni3ZmlczaLgSK4jn8VMRFtLbT9KQt7SDogPZASLF21hq8HO6bSvZIs4jDgPX8A

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-28
/*C语言编写一段题目为“输出一行字符,分别统计出其中的
英文字母,空格,数字和其他字符的个数”的程序*/
#include<stdio.h>
int main(void)
{
char ch,Eng,Space,Num,Other;
for(ch=Eng=Space=Num=Other=0;scanf("%c",&ch)&&ch!='\n';)
if((ch|32)>='a'&&(ch|32)<='z')
Eng++;
else if(ch==' ')
Space++;
else if(ch>='0'&&ch<='9')
Num++;
else
Other++;
printf("英文字母: %d\n空格    : %d\n数字    : %d\n其它字符: %d\n",Eng,Space,Num,Other);
return 0;
}

追问

那个for 后面怎么一大串,看不懂,ch|32是什么意思

追答

ch|32是按位或,如果ch是大写字母ch|32变成对应的小写,如果是小写不变
for(初始条件;判断条件;步进方法){循环体}
ch=Eng=Space=Num=Other=0是初始条件,把计数单位全赋值0
scanf("%c",&ch)读取一个字符,如果读取不出错会返回1
ch!='\n'是输入的字符ch不是回车
scanf("%c",&ch)&&ch!='\n'合成一个逻辑表达式,就是当读取字符不出错并且ch不是回车时条件成立,
后面的步进条件因为有前面的scanf是读取操做,不再需要新的条件

追问

我是初学者,还是看不懂,能不能换一种最简单的,又益于看懂啊?就用最简单的字符表示

追答

看 龙不悔 的吧,他的我想是最易懂的那种了,做的很详细了,我做不出比他更好的来

追问

好吧

相似回答