#include
#include
#include
int i,a[4];
char t;
int main()
{
for(i=0;;i++)
{
scanf("%c",&t);
if(t=='\n')break;
else if(t>='A'&&t<='Z') a[0]++;
else if(t>='a'&&t<='z')a[0]++;
else if(t==' ')a[1]++;
else if(t>='0'&&t<='9')a[2]++;
else a[3]++;
}
for(i=0;i<4;i++) printf("%d ",a[i]);
system("pause");
return 0;
}
//看看这个行不行,我运行可以。
#include
int main()
{
int numCnt=0,charCnt=0,spaceCnt=0,albCnt=0;
char c;
while ((c=getchar()) != '\n')
{
if (c <= '9' && c >= '0') numCnt++;
else if (c <='z' && c>='a') albCnt++;
else if (c <='Z' && c>='A') albCnt++;
else if (c == ' ') spaceCnt++;
else charCnt++;
}
printf("%d, %d, %d, %d other", numCnt, albCnt, spaceCnt, numCnt);
return 0;
}
#include
void main()
{
int num=0,ch=0,other=0,space=0;
char c;
while ((c=getchar()) != '\n')
{
if (c <= '9' && c >= '0') num++;
else if (c <='z' && c>='a')ch++;
else if (c <='Z' && c>='A') ch+;
else if (c == ' ') space++;
else other++;
}
printf("num:%d, ch:%d, space:%d,other: %d", num,ch, space,other);
}
一、问题分析:
输入一行字母,那么会以换行结束。所以可以存入数组,也可以逐个输入,遇到换行结束。
要统计各个类的个数,就要逐个判断是哪个分类的。
由于在ASCII码中,数字,大写字母,小写字母分别连续,所以可以根据边界值判断类型。
二、算法设计:
1、读入字符,直到遇到换行结束。
2、对于每个字符,判断是字母还是数字,或者空格,或者是其它字符。
3、对于每个字符判断后,对应类别计数器自加。
4、最终输出结果。
三、参考代码:
#include int main(){ int a,b,c,d,ch; a=b=c=d=0;//计数器初始化为0. while((ch=getchar())!='\n')//循环读取字符,到换行结束。 { if(ch>='0' && ch='a' && ch='A' && ch<='Z'))//字母 b++; else if(ch==' ')//空格 c++; else //其它 d++; } printf("%d %d %d %d\n", a,b,c,d);//输出结果。 return 0;}