C课程设计2022-第01周
7-5 成绩统计分析表(*) (15 分)
输入一个班的成绩,输出成绩统计分析表。
输入格式
班级人数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>
#include<math.h>//round四舍五入
void prstar(float i){
for(int k=0;k<round(i);k++)
printf("*");
printf("\n");
}//print *
int main(){
int num,a,b,c,d,e;
a=b=c=d=e=0;
float sum;
sum=0;
scanf("%d",&num);
float s[num];
for(int i=0;i<num;i++){
scanf("%f",&s[i]);
}
for(int j=0;j<num;j++){
printf("%03d:%6.1f ",j+1,s[j]);
prstar(s[j]);
sum+=s[j];
if(s[j]>=90&&s[j]<=100)
a++;
else if(s[j]>=80&&s[j]<90)
b++;
else if(s[j]>=70&&s[j]<80)
c++;
else if(s[j]>=60&&s[j]<70)
d++;
else e++;
}
printf("\n");
float MAX,MIN;
MAX=0;MIN=100;
for(int k=0;k<num;k++){
if(s[k]>MAX)
MAX=s[k];
}
printf("Max:%6.1f ",MAX);
prstar(MAX);
for(int l=0;l<num;l++){
if(s[l]<MIN)
MIN=s[l];
}
printf("Min:%6.1f ",MIN);
prstar(MIN);
printf("Avg:%6.1f ",sum*1.0/num);
prstar(sum*1.0/num);
printf("\n");
printf("A:%6.1f%% ",a*1.0/num*100);
prstar(a*1.0/num*100);
printf("B:%6.1f%% ",b*1.0/num*100);
prstar(b*1.0/num*100);
printf("C:%6.1f%% ",c*1.0/num*100);
prstar(c*1.0/num*100);
printf("D:%6.1f%% ",d*1.0/num*100);
prstar(d*1.0/num*100);
printf("E:%6.1f%% ",e*1.0/num*100);
prstar(e*1.0/num*100);
}