- C++
统计考试成绩
- 2025-5-31 20:55:49 @
4、统计考试成绩
【题目描述】
期末考试结束了,老师要统计班里学生的考试成绩分布,已知每个同学的考试成绩为在0到100分之间的整数,设计一个程序,输入每个同学的成绩,计算出在平均成绩(成绩平均值向下取整)之上的(大于等于平均成绩)和在平均成绩之下的(小于平均成绩)的同学的人数。
【输入格式】
第一行n为学生成绩个数,0 < n < 50。
第二行,由空格隔开的每个同学的成绩,为1到100间的整数。
【输出格式】
两个整数,由空格隔开,为平均分以上人数和平均分以下人数。
【样例输入】
12
100 80 93 66 73 50 96 100 84 47 97 71
【样例输出】
7 5
3 条评论
-
admin SU @ 2025-5-31 20:58:18
#include <iostream> using namespace std; int main() { int n; cin >> n; int scores[50]; // 定义一维静态数组存储成绩 for (int i = 0; i < n; ++i) { cin >> scores[i]; } int sum = 0; for (int i = 0; i < n; ++i) { sum += scores[i]; } int average = sum / n; int aboveAverage = 0; int belowAverage = 0; for (int i = 0; i < n; ++i) { if (scores[i] >= average) { aboveAverage++; } else { belowAverage++; } } cout << aboveAverage << " " << belowAverage << endl; return 0; }
-
2025-5-31 20:57:06@
解题思路
本题主要涉及数据的输入、平均值计算以及根据平均值对数据进行分类统计。具体步骤如下:
- 读取学生数量:从输入中读取学生成绩的个数
n
,并确保0 < n < 50
。 - 读取成绩数组:使用一维静态数组来存储学生成绩,按照输入格式读取每个学生的成绩并存储到数组中。
- 计算平均成绩:遍历数组,将所有成绩累加起来,再除以学生数量
n
,并向下取整得到平均成绩。由于成绩都是整数,直接进行整数除法就能实现向下取整的效果。 - 统计人数:再次遍历数组,使用两个计数器变量,分别记录成绩大于等于平均成绩的人数和成绩小于平均成绩的人数。在遍历过程中,根据当前成绩与平均成绩的大小关系,相应地增加计数器的值。
- 输出结果:最后按照要求输出两个计数器的值,即平均分以上人数和平均分以下人数。
C++ 代码实现
#include <iostream> using namespace std; int main() { int n; cin >> n; // 确保学生数量在规定范围内 if (n <= 0 || n >= 50) { return 1; } int scores[50]; // 定义一维静态数组存储成绩 for (int i = 0; i < n; ++i) { cin >> scores[i]; } int sum = 0; for (int i = 0; i < n; ++i) { sum += scores[i]; } int average = sum / n; int aboveAverage = 0; int belowAverage = 0; for (int i = 0; i < n; ++i) { if (scores[i] >= average) { aboveAverage++; } else { belowAverage++; } } cout << aboveAverage << " " << belowAverage << endl; return 0; }
代码解释
- 输入学生数量:使用
cin
读取第一行输入的学生成绩个数n
,并进行范围检查,如果n
不在0 < n < 50
范围内,程序异常结束(返回1)。 - 读取学生成绩:定义一维静态数组
scores
来存储学生成绩,通过循环从输入中读取每个学生的成绩并存储到数组中。 - 计算平均成绩:通过循环遍历数组,将所有成绩累加起来存储在
sum
变量中,然后用sum
除以n
得到平均成绩average
。 - 统计人数:再次通过循环遍历数组,对于数组中的每个成绩
scores[i]
,判断其与平均成绩average
的大小关系。如果大于等于平均成绩,则aboveAverage
计数器加1;如果小于平均成绩,则belowAverage
计数器加1。 - 输出结果:最后按照输出格式要求,输出平均分以上人数
aboveAverage
和平均分以下人数belowAverage
,中间用空格隔开。
- 读取学生数量:从输入中读取学生成绩的个数
-
2025-5-31 20:56:07@
解题思路(C++ )
本题主要涉及数据的输入、平均值计算以及数据的统计分类,解题步骤如下:
1. 数据输入
- 首先读取学生成绩个数
n
,使用cin
读取第一行输入。 - 然后创建一个数组或
vector
来存储学生成绩,再通过循环读取第二行的每个成绩并存储起来。例如使用vector
:
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> scores(n); for (int i = 0; i < n; ++i) { cin >> scores[i]; } // 后续计算在这进行 return 0; }
2. 计算平均成绩
- 遍历存储成绩的容器,将所有成绩累加起来。
- 用总成绩除以学生个数
n
,并向下取整得到平均成绩。在C++中可以使用floor
函数(需包含<cmath>
头文件) ,不过由于成绩都是整数,直接使用整数除法即可实现向下取整效果。
int sum = 0; for (int score : scores) { sum += score; } int average = sum / n;
3. 统计人数
- 再次遍历存储成绩的容器,使用两个计数器变量,一个记录成绩大于等于平均成绩的人数,一个记录成绩小于平均成绩的人数。
- 每次遍历,判断当前成绩与平均成绩的大小关系,相应地增加计数器的值。
int aboveAverage = 0; int belowAverage = 0; for (int score : scores) { if (score >= average) { aboveAverage++; } else { belowAverage++; } }
4. 输出结果
- 最后按照要求输出两个计数器的值,即平均分以上人数和平均分以下人数。
cout << aboveAverage << " " << belowAverage << endl;
完整代码
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> scores(n); for (int i = 0; i < n; ++i) { cin >> scores[i]; } int sum = 0; for (int score : scores) { sum += score; } int average = sum / n; int aboveAverage = 0; int belowAverage = 0; for (int score : scores) { if (score >= average) { aboveAverage++; } else { belowAverage++; } } cout << aboveAverage << " " << belowAverage << endl; return 0; }
对于样例输入:
- 输入
12
表示学生个数为12 ,接着输入成绩100 80 93 66 73 50 96 100 84 47 97 71
。 - 计算总成绩为
100 + 80 + 93 + 66 + 73 + 50 + 96 + 100 + 84 + 47 + 97 + 71 = 957
,平均成绩957 / 12 = 79
(向下取整) 。 - 统计大于等于79分的人数为7 ,小于79分的人数为5 ,输出
7 5
,符合样例输出。
- 首先读取学生成绩个数
- 1