#include <iostream>
#include <cctype>
#include <stdio.h>
using namespace std;
void numOFC();
int main(int argc, const char * argv[])
{
numOFC();
return 0;
char ch[100];// = "aa aa,asd a ewo!";
char c;
int isEnglish = 0;
int isPunct = 0;
int isNum = 0;
int isSpace = 0;
int isCntrl = 0;
int isGraph = 0;
int isPrint = 0;
while (cin.get(c)) {
//字母
if (isalpha(c))
{
isEnglish++;
}
//数字 0~9
if (isdigit(c))
{
isNum++;
}
//标点符号 、 ! ~ ,、
if (ispunct(c))
{
isPunct++;
}
//空白字符、空格、水平制表符/垂直制表符、换行符\n、进纸、
if (isspace(c))
{
isSpace++;
}
//空格之外的打印字符(包含标点符号、字母、数字)
if (isgraph(c))
{
isGraph++;
}
//打印字符(包括空格,标点符号、字母、数字)
if (isprint(c))
{
isPrint++;
}
//控制字符(包含换行\n、)
if (iscntrl(c))
{
isCntrl++;
}
}
return 0;
}
void numOFC()
{
int isEnglish = 0; //英文
int isPunct = 0; //标点
int isSpace = 0; //空格
int isChinese = 0;
char c;
while (cin.get(c)) {
if (c=='\n')
{
break;
}
//字母
if (isalpha(c))
{
isEnglish++;
}
//符号
else if (ispunct(c))
{
isPunct++;
}
//空格
else if (isspace(c))
{
isSpace++;
}
else
{
isChinese++;
}
}
cout << "字母:" << isChinese/3+isEnglish << endl
<< "符号:" << isPunct <<endl
<< "空格:" << isSpace <<endl;
}