1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<ctype.h>
5 #include<algorithm>
6 using namespace std;
7 int main(int argc, char* argv[])
8 {
9 char ch[1024];
10 gets(ch);
11 //puts(ch);
12 int alp=0,dig=0,oth=0;
13 int len=strlen(ch);
14 for(int i=0 ; i<len ; ++i)
15 {
16 if(isdigit(ch[i]))
17 ++dig;
18 else if(isalpha(ch[i]))
19 ++alp;
20 else
21 ++oth;
22 }
23 int sum[3];
24 sum[0]=dig,sum[1]=alp,sum[2]=oth;
25 sort(sum,sum+3);
26 int MAX=sum[2]; //找到最大值
27 char* A[13];
28 for(int i=0 ; i<13 ; ++i)
29 A[i]=(char* )calloc(MAX,sizeof(char));
30
31 for(int i=0 ; i<MAX ; ++i) //先赋值位空格
32 for(int j=0 ; j<13 ; ++j)
33 A[j][i]=' '; //【warning】动态划分的数字是先列后行,注意转换
34
35
36 for(int i=0 ; i<3 ; ++i) //填上dig
37 for(int j=MAX-dig ; j<MAX ; ++j)
38 A[i][j]='*';
39
40 for(int i=5 ; i<8 ; ++i) //填上alp
41 for(int j=MAX-alp ; j<MAX ; ++j)
42 A[i][j]='\3';
43
44 for(int i=10 ; i<13 ; ++i) //填上oth
45 for(int j=MAX-oth ; j<MAX ; ++j)
46 A[i][j]='\2';
47 printf("%3d %3d %3d\n",dig,alp,oth);
48 for(int i=0 ; i<MAX ; ++i)
49 {
50 for(int j=0 ; j<13 ; ++j)
51 printf("%c",A[j][i]);
52 printf("\n");
53 }
54 printf("dig alp oth\n");
55 printf("%3d %3d %3d\n",dig,alp,oth);
56 system("pause");
57 return 0;
58 }