【题目描述】
用*号输出柱状图。第一行输入一个整数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("* ");
else
printf(" ");
}
printf("\n");
}
return 0;
}
这个代码的实现还是很巧妙的,这里的i可视为纵坐标,从最大数依次递减,a[j]表示第j个柱状图的数据,所以当a[j]大于等于i时,就输出星号。
输入样例数据后的输出结果: