浙大版《C语言程序设计实验与习题指导(第4版)》题目集 实验3-7 统计学生成绩
题目详情:
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
- 大于等于90分为A;
- 小于90且大于等于80为B;
- 小于80且大于等于70为C;
- 小于70且大于等于60为D;
- 小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
7
77 54 92 73 60 65 69
结尾无空行
输出样例:
1 0 2 3 1
结尾无空行
思路:
自然可以通过逻辑运算符&&实现条件的表达,但有一个更优解——通过对分数/10取十位数,进而通过一个switch分支实现题目要求。代码如下
#include<stdio.h>
int main(void)
{
int i, n, score, grade, A, B, C, D, E;
//grade记录五分制成绩
A=B=C=D=E=0;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &score);
grade = score/10;
switch(grade){
case 10: //通过不写break实现10、9归并
case 9: A++; break;
case 8: B++; break;
case 7: C++; break;
case 6: D++; break;
default: E++; break;
}
}
printf("%d %d %d %d %d", A, B, C, D, E);
return 0;
}