C语言 求大神 求程序 拜托 好人一生幸福6
问题E:成绩的统计时间限制:1Sec内存限制:16MB提交:1371解决:487[提交][状态][讨论版]题目描述把百分制的考试成绩转换为五个等级:90~100:Exce...
问题 E: 成绩的统计
时间限制: 1 Sec 内存限制: 16 MB
提交: 1371 解决: 487
[提交][状态][讨论版]
题目描述
把百分制的考试成绩转换为五个等级:
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
提示
如果没有不及格的成绩,你的程序还能否正确运行吗? 展开
时间限制: 1 Sec 内存限制: 16 MB
提交: 1371 解决: 487
[提交][状态][讨论版]
题目描述
把百分制的考试成绩转换为五个等级:
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
提示
如果没有不及格的成绩,你的程序还能否正确运行吗? 展开
1个回答
展开全部
OK,按照楼主的意思,实现了以下代码,楼主可以直接拷贝,运行一下,有问题再追问我。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 1000
int level[5], scores[SIZE];
char output[5][10] = {"Excellent","Good","Average","Pass","Failing"};
int getLevel(int score)
{
switch(score/10)
{
case 10:
case 9:
return 0;
case 8:
return 1;
case 7:
return 2;
case 6:
return 3;
default:
return 4;
}
}
int main()
{
char ch;
int i, j,length = 0, tmp;
freopen("input.txt", "r", stdin);
for(i = 0; i < SIZE;)
{
ch = getchar();
if(ch != EOF)
{
ungetc(ch, stdin);
scanf("%d", &tmp);
if(tmp >= 0 && tmp <= 100)
{
scores[i] = tmp;
level[getLevel(scores[i])]++;
i++;
}
}
else break;
}
length = i;
for(i = 0; i < 5; i++)
{
int count = 0;
printf("%s:%d\n", output[i], level[i]);
for(j = 0; j < length; j++)
if(getLevel(scores[j]) == i)
{
printf("%d", scores[j]);
count++;
if(count!=level[i])
printf(", ");
else
putchar('\n');
}
}
return 0;
}
追问
请问为什么不能输入? 过几秒直接出来所有等级都是0个。
追答
因为程序里是文件输入输出,因为你题意输入的终止为EOF。
如果手动的话,删掉这句话。
freopen("input.txt", "r", stdin);
并且重新设定输入终止符。
还有疑问么
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询