c语言中怎样统计字符串中包含英文字母的个数?

编写函数完成以下功能,统计字符串str中饱含的英文字母、空格、数字和其他字符的个数,并将统计结果保存到数组num中,num【0】存英文字母个数,num【1】存,空格个数,num【2】存数字个数,num【3】存其他字符个数。急用,今天就选出最佳答案。谢谢!
*p<='z'&&*p>='a'
请问能这样比较么?有点不确定

第1个回答  2007-08-25
逐个字符判断。英文字母asc码65~90&97~122,数字48~57,空格32,如下:

num[0]=0;num[1]=0;num[2]=0;num[3]=0;
int i;
for (i=0;i<strlen(str);i++)
{
if (((str[i]>=65)&&(str[i]<=90))||((str[i]>=97)&&(str[i]<=122))) num[0]++;//字母
else if (str[i]==32) num[1]++;//空格
else if ((str[i]>=48)&&(str[i]<=57)) num[2]++;//数字
else num[3]++;//其他
}
第2个回答  推荐于2017-09-22
main()
{
char str[100],*p;
int num[4],i;
p=str;
gets(str);
for(i=0;i<4;i++)
num[i]=0;
for(;*p!='\0';p++)
{
if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A')) num[0]++;
else if(*p==' ') num[1]++;
else if((*p<='9'&&*p>='0')) num[2]++;
else num[3]++;
}
printf("%d %d %d %d\n",num[0],num[1],num[2],num[3]);
}
应该看得懂的吧!~~~~~本回答被提问者采纳
第3个回答  2020-04-22
main()
{
char
str[100],*p;
int
num[4],i;
p=str;
gets(str);
for(i=0;i<4;i++)
num[i]=0;
for(;*p!='\0';p++)
{
if((*p<='z'&&*p>='a')||(*p<='Z'&&*p>='A'))
num[0]++;
else
if(*p=='
')
num[1]++;
else
if((*p<='9'&&*p>='0'))
num[2]++;
else
num[3]++;
}
printf("%d
%d
%d
%d\n",num[0],num[1],num[2],num[3]);
}
应该看得懂的吧!~~~~~
相似回答