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 ",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(" "); 53 } 54 printf("dig alp oth "); 55 printf("%3d %3d %3d ",dig,alp,oth); 56 system("pause"); 57 return 0; 58 }