Description | ||
图表题目描述给你一个字符串,请统计各个字符出现的个数,并使用字符打印一幅统计图表。 图表的格式是
输入存在多个测试用例,处理到文件末尾。 输出每行输出一个样例的结果,每个结果之后有一个空行。 样例输入AABBCC AAAABBBBCC AABBBBDDDE 样例输出*** ABC ** *** ABC * ** *** **** ABDE 提示第一个样例,ABC都是出现2次,所以我们可以用一个星号表示出现2次。 轻轻松松的辗转相除法int guys(int x,int y) { if(y==0)return x; else return guys(y,x%y);//求这些数组的公因数 } 不懂得可以百度,网址放在下边。 #include<stdio.h> int guys(int x,int y) { if(y==0)return x; else return guys(y,x%y);//求这些数组的公因数 } int main() { char s[1001];int i,max,j,z,p; while(scanf("%s",s)!=EOF) { int a[27]={0}; for(i=0;s[i]!='\0';i++) { a[s[i]-65]++; p=a[s[i]-65]; } for(i=0;i<26;i++) { if(a[i]=='\0')continue; p=guys(a[i],p);//p的初始化 } for(i=0;i<26;i++) a[i]=a[i]/p; max=a[0]; for(i=0;i<26;i++) { if(a[i]>max) max=a[i]; } for(i=max;i>0;i--) { z=0; for(j=0;j<26&&z!=26;j++) { if(a[j]=='\0')continue; else if(a[j]>=i) { printf("*"); for(z=j+1;z<26;z++) { if(a[z]<i)continue; else break; } } else printf(" "); } printf("\n"); } for(i=0;i<26;i++) { if(a[i]=='\0')continue; else printf("%c",i+65); } printf("\n\n"); } return 0; } |
XTU-oj Diagram
最新推荐文章于 2024-01-05 20:51:22 发布