【题目描述】
用*号输出柱状图。第一行输入一个整数n表示数据个数,第二行输入n个整数,用空格隔开。n和输入的数都不超过20。
【样例输入】
7
5 1 1 8 1 1 5
【样例输出】
1.条形图(水平柱状图)
样例中的柱状图属于水平柱状图,一般叫“条形图”,输出这种形式的柱状图还是比较容易的。
#include <stdio.h>
int a[25];
int main () {scanf("%d",&n);//输入数for(int i=1;i<=n;i++){scanf("%d",&a[i]);}//输出条形图for(int i=1;i<=n;i++){for(int j=1;j<=a[i];j++){printf("*");}printf("\n");}return 0;
}
2.柱状图(垂直柱状图)
一般我们说的柱状图都是指垂直柱状图,相比水平的条形图就要难一些了。
下面是我家娃的代码:
#include <stdio.h>
int a[25];
int main () {int n,imax=-1e9;scanf("%d",&n);//求输入数的最大值for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]>imax){imax=a[i];}}//输出柱状图for(int i=imax;i>=1;i--){for(int j=1;j<=n;j++){if(a[j]>=i)printf("* ");elseprintf(" ");}printf("\n");}return 0;
}
这个代码的实现还是很巧妙的,这里的i可视为纵坐标,从最大数依次递减,a[j]表示第j个柱状图的数据,所以当a[j]大于等于i时,就输出星号。
输入样例数据后的输出结果: