如何打印PAT直方图?

题目描述

又到年底统计报表的时间了。我们公司一共生产“0”到“9”十种产品,现在给你一份销售记录,请你帮忙绘制一份直方图。

输入描述:

输入包含多组数据,每组数据包含一个字符串s。

s仅包含数字,长度不超过100。


 

输出描述:

对应每一组数据,依次为十种产品绘制高度等于其销量的“*”柱图。

直方图的高度等于数据中数量最多产品的个数,如果某种产品高度不到直方图的高度,用空格补全。

直方图下方依次输出0到9作为坐标。

输入例子:

0123456789123
123012312

输出例子:

 ***      
**********
0123456789
 **       
 ***      
****      
0123456789

代码实现: 

#include <stdio.h>

int main()
{
    int i,j,record,sale[10];
    char s[101];
    
    while (scanf("%s",s)!=EOF) {
        for (i=0; i<10; i++) {
            sale[i]=0;
        }
        record=0;
        
        for (i=0; s[i]!='\0'; i++) {
            sale[(s[i]-'0')]++;
            if (sale[(s[i]-'0')]>record) {
                record=sale[(s[i]-'0')];
            }
        }
        for (i=0; i<record; i++) {
            for (j=0; j<10; j++) {
                
                if (sale[j]>=record-i) {
                    printf("*");
                } else {
                    printf(" ");
                }
            }
            printf("\n");
        }
        printf("0123456789\n");
    }
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40711025/article/details/81464265
今日推荐