C语言~~~输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

#include<stdio.h>
int main()
{
int a,b,c,d,f;
char e[100];
a=b=c=f=0;
printf("请输入一行字符\n");
scanf("%s",e);
for(d=0;e[d]!='\n';d++)
if(('A'<=e[d]&&e[d]<='Z')||('a'<=e[d]&&e[d]<='z')) a++;
else if ('0'<=e[d]&&e[d]<='9') b++;
else if (e[d]==' ') c++;
else f++;
printf("字母个数%d,数字个数%d,空格个数%d,其余符号个数%d",a,b,c,f);
return 0;
}
这样写行么?`那里错了?

第1个回答  2011-11-19
#include<stdio.h>
int main()
{
int a,b,c,d,f;
char e[100];
a=b=c=f=0;
printf("请输入一行字符\n");
gets(e);
printf("%s\n",e);
for(d=0;e[d]!='\0';d++){
if(('A'<=e[d]&&e[d]<='Z')||('a'<=e[d]&&e[d]<='z')) a++;
else if ('0'<=e[d]&&e[d]<='9') b++;
else if (e[d]==' ') c++;
else f++;
}
printf("字母个数%d,数字个数%d,空格个数%d,其余符号个数%d\n",a,b,c,f);
return 0;
}
这是我改的 ~
scanf("%s",e); 这样输入字符串 遇到空格就会停止的 所以用gets
for(d=0;e[d]!='\n';d++) 字符串结束应该是\0 而\n是换行
这样就ok了
第2个回答  2011-11-19
已改,看注释
#include<stdio.h>
int main()
{
int a,b,c,d,f;
char e[100];
a=b=c=f=0;
printf("请输入一行字符\n");
gets(e); //改gets
for(d=0;e[d]!='\0';d++) //改'\0'
if(('A'<=e[d]&&e[d]<='Z')||('a'<=e[d]&&e[d]<='z'))
a++;
else if ('0'<=e[d]&&e[d]<='9')
b++;
else if (e[d]==' ')
c++;
else
f++;
printf("字母个数%d,数字个数%d,空格个数%d,其余符号个数%d",a,b,c,f);
return 0;
}本回答被提问者采纳
第3个回答  2011-11-19
#include<stdio.h>
int main()
{
int a=0,b=0,c=0,f=0;
char e[100];
char ch;
printf("请输入一行字符\n");
while((ch=getchar())!='\n')
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') a++;
else if(ch>='0'&&ch<='9') b++;
else if(ch==' ') c++;
else f++;
printf("字母个数%d,数字个数%d,空格个数%d,其余符号个数%d\n",a,b,c,f);
return 0;
}追问

复制的不需要

第4个回答  2011-11-24
可以这么写。
#include"stdio.h"
main()
{char c;int i=0,j=0,k=0,l=0;
while((c=getchar())!='\n')
{if(c>=65&&c<=90||c>=97&&c<=122) i++;
else if(c>=48&&c<=57) j++;
else if(c==32) k++;
else l++;}
printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);
}
第5个回答  2011-11-19
最后那个符号错了追问

那里??具体回答``能运行``运行错误

相似回答