题目如图参考代码:
#include <stdio.h>
#include <stdlib.h>
int max(int a,int b){int x;
if (a>b){x=a;}
else if (b>=a){x=b;}
return x;
}
int main()
{char ch;
int digt=0,space=0,letters=0,signs=0,k=0,next1=0,next2=0,next3=0,max1=0,max2=0,max3=0;
while((ch=getchar())!='\n'){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){letters++;}
else if(ch>='0'&&ch<='9') {digt++;}
else if(ch==' '){space++;}
else {signs++;}}
printf("^\n");
max1=max(letters,digt);
max2=max(space,signs);
max3=max(max1,max2);
for (k=max3+1;k>0;k--){
printf("|");
if (letters==k-1){printf(" (%-2d)",letters);goto next1;}
if (letters==k){printf(" ****");letters--;}
else if (letters!=k){printf(" ");}
next1 : if (digt==k-1){printf(" (%-2d)",digt);goto next2;}
if (digt==k){printf(" ****");digt--;}
else if (letters!=k){printf(" ");}
next2: if (signs==k-1){printf(" (%-2d)",signs);goto next3;}
if (signs==k){printf(" ****");signs--;}
else if (letters!=k){printf(" ");}
next3: if (space==k-1){printf(" (%-2d)",space);}
if (space==k){printf(" ****");space--;}
else if (letters!=k){printf(" ");}
printf("\n");}
printf("--------------------------------------->\n 字母 数字 符号 空格");
return 0;}
最终实验结果: