问题 F: 成绩统计
程序员文章站
2024-03-18 21:20:16
...
题目描述
把百分制的考试成绩转换为五个等级:
90~100:Excellent
80~89:Good
70~79:Average
60~69:Pass
0~59:Failing
统计每个等级的成绩,并输出。
输入
输入多行,每行一个整数。输入的成绩总数不超过1000个。到EOF结束。
输出
按从好到差的顺序分等级输出成绩,第一行为“等级 : 成绩数”,成绩数为这一等级的成绩总数;第二行为具体的成绩,用逗号分隔开,每个逗号后面有空格,每行最后一个成绩后没有逗号和空格。最后一行后有回车。输出的成绩与输入的顺序相同。若某个等级没有成绩,则不输出第二行。
具体格式参照sample。
样例输入
-1
81
92
35
68
72
100
1000
95
60
59
72
样例输出
Excellent : 3
92, 100, 95
Good : 1
81
Average : 2
72, 72
Pass : 2
68, 60
Failing : 2
35, 59
代码如下:
#include<stdio.h>
int judge(int n)
{
int g;
if(n>=0&&n<=100)
{
n = n / 10;
switch(n)
{
case 10:
case 9:
g = 0;
break;
case 8:
g = 1;
break;
case 7:
g = 2;
break;
case 6:
g = 3;
break;
default:
g = 4;
break;
}
}
else
{
g = 5;
}
return g;
}
int main()
{
int grade;
int e[1000] = {0};
int g[1000] = {0};
int a[1000] = {0} ;
int p[1000] = {0};
int f[1000] = {0};
int b[6] = {0};
while(scanf("%d",&grade)!=EOF)
{
int j = judge(grade);
if(j==0)
{
e[b[j]] = grade;
}
else if(j==1)
{
g[b[j]] = grade;
}
else if(j==2)
{
a[b[j]] = grade;
}
else if(j==3)
{
p[b[j]] = grade;
}
else if(j==4)
{
f[b[j]] = grade;
}
b[j]++;
}
printf("Excellent : %d\n",b[0]);
if(b[0]!=0)
{
for(int i=0;i<b[0];i++)
{
if(i==0)
{
printf("%d",e[i]);
}
else
{
printf(", %d",e[i]);
}
}
printf("\n");
}
printf("Good : %d\n",b[1]);
if(b[1]!=0)
{
for(int i=0;i<b[1];i++)
{
if(i==0)
{
printf("%d",g[i]);
}
else
{
printf(", %d",g[i]);
}
}
printf("\n");
}
printf("Average : %d\n",b[2]);
if(b[2]!=0)
{
for(int i=0;i<b[2];i++)
{
if(i==0)
{
printf("%d",a[i]);
}
else
{
printf(", %d",a[i]);
}
}
printf("\n");
}
printf("Pass : %d\n",b[3]);
if(b[3]!=0)
{
for(int i=0;i<b[3];i++)
{
if(i==0)
{
printf("%d",p[i]);
}
else
{
printf(", %d",p[i]);
}
}
printf("\n");
}
printf("Failing : %d\n",b[4]);
if(b[4]!=0)
{
for(int i=0;i<b[4];i++)
{
if(i==0)
{
printf("%d",f[i]);
}
else
{
printf(", %d",f[i]);
}
}
}
}
上一篇: Javascript实现继承的方法
下一篇: NOIP普及组题解