实验6
Problem D: 成绩的柱状图
Description
柱状图(Histogram),也称条图(英文:bar graph)、长条图(英文:bar chart)、条状图,是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图图亦可横向排列,或用多维方式表达。
你的任务是把学生成绩转换成直观的柱状图表示。
Input
第一行为一个整数N(N<=200),表示有N个学生。后面有N行输入。每行有两部分,第一部分是学生姓名(不超过8个字符,且不含空白符);第二部分是学生的成绩,均为0~100之间的整数。
Output
输出有N行,顺序与输入对应,每行包括以下内容:
-
学生的姓名,占8个字符、右对齐;
-
一个空格;
-
一条竖线,用“|”表示;
-
一个表示分数的长条:由“=”组成。学生成绩为x,就输出一个长度为x个长条。长条是左对齐的;
-
一个回车(用来换行!)。
Sample Input
10
Tom 46
Jerry 88
Zhang3 99
Li4 100
Wang5 95
Zhao6 60
Liu7 1
Wang8 0
Song9 5
Ma10 45
Sample Output
Tom |==============================================
Jerry |========================================================================================
Zhang3 |===================================================================================================
Li4 |====================================================================================================
Wang5 |===============================================================================================
Zhao6 |============================================================
Liu7 |=
Wang8 |
Song9 |=====
Ma10 |=============================================
答案:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
getchar();
char name[9];
int score;
scanf("%s %d",name,&score);
int len=strlen(name);
for(int i=0;i<8-len;i++){
printf(" ");
}
printf("%s |",name);
for(int i=0;i<score;i++){
printf("=");
}
printf("\n");
}
return 0;
}