第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]);
}
应该看得懂的吧!~~~~~