7-1 成绩统计分析表(*) (10 分)
输入一个班的成绩,输出成绩统计分析表。
输入格式
班级人数n (n>0)
n 名学生的成绩 s1,s2,⋯,sn (0≤si≤100,1≤i≤n)
输出格式
输出 n 名学生的序号、成绩、柱状图 输出全班的最高分、最低分、平均分及柱状图 按成绩等级输出各等级的比例及柱状图
成绩等级:
成绩 | 等级 |
[90,100] | A |
[80,90) | B |
[70,80) | C |
[60,70) | D |
[0,60) | E |
输入样例
15
98.5 67.3 42.5 90 75.2 63 77 99.5 8 100 80.5 69.5 88.5 66.5 87.5
输出样例
001: 98.5 ***************************************************************************************************
002: 67.3 *******************************************************************
003: 42.5 *******************************************
004: 90.0 ******************************************************************************************
005: 75.2 ***************************************************************************
006: 63.0 ***************************************************************
007: 77.0 *****************************************************************************
008: 99.5 ****************************************************************************************************
009: 8.0 ********
010: 100.0 ****************************************************************************************************
011: 80.5 *********************************************************************************
012: 69.5 **********************************************************************
013: 88.5 *****************************************************************************************
014: 66.5 *******************************************************************
015: 87.5 ****************************************************************************************
Max: 100.0 ****************************************************************************************************
Min: 8.0 ********
Avg: 74.2 **************************************************************************
A: 26.7% ***************************
B: 20.0% ********************
C: 13.3% *************
D: 26.7% ***************************
E: 13.3% *************
注:
(1) 所有实数只输出1位小数。
(2) 柱状图中星号数量按实数 4 舍 5 入后取整。
#include<stdio.h>
double a[101]; //定义一个全局的数组来储存成绩
void haha(double n); //该函数用来处理后面的*号
int main()
{
int n;
double max = 0, min = 100;
double ave=0;
double A=0, B=0, C=0, D=0, E=0;
int i = 1;
scanf("%d", &n);
int N = n;
while (N--) //目的求出ABCDE的人数,和最大最小值以及总分
{
scanf("%lf", &a[i]);
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
if (a[i] >= 90)
A++;
else if (a[i] >= 80 && a[i] < 90)
B++;
else if (a[i] >= 70 && a[i] < 80)
C++;
else if (a[i] >= 60 && a[i] < 70)
D++;
else if (a[i] < 60)
E++;
printf("%03d:%6.1f ", i, a[i]);
haha(a[i]);
ave += a[i];
i++;
}
ave /= n; //求出平均分;
printf("\n");
printf("Max:%6.1f ",max);
haha(max);
printf("Min:%6.1f ",min);
haha(min);
printf("Avg:%6.1f ",ave);
haha(ave);
printf("\n");
printf("A:%6.1f%% ",A*100/n);
haha(A*100/n);
printf("B:%6.1f%% ",B*100/n);
haha(B*100/n);
printf("C:%6.1f%% ", C*100/n);
haha(C*100/n);
printf("D:%6.1f%% ", D*100/n);
haha(D*100/n);
printf("E:%6.1f%% ", E*100/n);
haha(E*100/n);
}
void haha(double n)
{
int i;
if (n - (int)n >= 0.5)\\四舍五入
i = 0;
else
i = 1;
for (; i <= n; i++)
printf("*");
printf("\n");
}