给定一个一维数组,包含10个学生的成绩,求出平均分、最高分和最低分。 输入 只有一行,包含10个用空格隔开的实数,表示10个学生的成绩。保证所有成绩不小于0,不大于100。 输出 输出平均分、最高分和最低分,用空格隔开,小数点后保留2位小数。 请注意行尾输出换行。
时间: 2024-12-10 15:36:24 浏览: 24
这是一个简单的程序任务,通常在基础算法课程中遇到。给定的是一维整数数组,代表学生的分数。以下是步骤:
1. 初始化三个变量:`sum`用于存储总分,`max_score`记录最高分,`min_score`保存最低分。假设初始值都设为数组的第一个元素。
2. 遍历输入数组,对于每个元素:
- 将当前元素加到`sum`中。
- 如果当前元素大于`max_score`,更新`max_score`。
- 同理,如果当前元素小于`min_score`,更新`min_score`。
3. 得到平均分,就是将`sum`除以学生总数(这里是10),并四舍五入到两位小数。
4. 最后,打印平均分、最高分和最低分,中间用空格隔开,并确保在每个数值后面加上换行符。
如果你需要具体的代码示例,我可以为你提供一个Python版本:
```python
def calculate_scores(scores):
total = sum(scores)
max_score = max(scores)
min_score = min(scores)
average = round(total / len(scores), 2)
return f"平均分:{average},最高分:{max_score},最低分:{min_score}\n"
scores = [float(score) for score in input().split()]
print(calculate_scores(scores))
```
相关问题
用c++给定一个一维数组,包含10个学生的成绩,求出平均分、最高分和最低分。 输入 只有一行,包含10个用空格隔开的实数,表示10个学生的成绩。保证所有成绩不小于0,不大于100。 输出 输出平均分、最高分和最低分,用空格隔开,小数点后保留2位小数。 请注意行尾输出换行。
你可以使用C++编写如下的程序来完成这个任务:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<double> scores; // 用于存储成绩的动态数组
double score;
// 输入10个成绩
for (int i = 0; i < 10; ++i) {
std::cin >> score;
scores.push_back(score);
}
// 计算平均分
double average = static_cast<double>(scores.sum()) / scores.size();
// 找到最高分和最低分
double max_score = *std::max_element(scores.begin(), scores.end());
double min_score = *std::min_element(scores.begin(), scores.end());
// 输出结果
std::cout << "平均分: " << fixed << setprecision(2) << average << "\n";
std::cout << "最高分: " << fixed << setprecision(2) << max_score << "\n";
std::cout << "最低分: " << fixed << setprecision(2) << min_score << "\n";
return 0;
}
```
在这个程序中,我们首先创建了一个动态数组`scores`来存储学生的成绩。然后通过循环从用户那里读取每个成绩并添加到数组中。接下来,我们计算平均值、找出最大值(即最高分)和最小值(即最低分)。最后,使用`fixed`和`setprecision(2)`控制输出的精度,并打印出所需的三个分数。
分别利用分类二叉树查找和堆排序实现学生成绩管理 1)利用以下数据的总成绩构建分类二叉树,给出中序遍历结果,给出最高分和最低分学生信息。 2)利用堆排序实现以下数据的总成绩、数学成绩的排序。 考号:1001 语文:1 数学:1 总分:2 考号:1002 语文:2 数学:2 总分:4
1)利用分类二叉树查找实现学生成绩管理
首先,根据给定的数据,我们可以得到以下的分类二叉树:
```
2
/ \
1 4
/ \
2 2
```
其中,每个节点表示一个学生的总成绩,左子树为总成绩小于该节点的学生,右子树为总成绩大于等于该节点的学生。
中序遍历结果为:1, 2, 2, 4。
最高分学生信息为:考号1002,语文成绩2,数学成绩2,总分4。
最低分学生信息为:考号1001,语文成绩1,数学成绩1,总分2。
2)利用堆排序实现学生成绩管理
我们可以将学生信息存储在一个二维数组中,每一行代表一个学生,每一列代表该学生的一项成绩。例如,对于给定的数据,可以表示为:
```
[
[1001, 1, 1, 2],
[1002, 2, 2, 4]
]
```
接下来,我们可以利用堆排序算法对总成绩和数学成绩进行排序。
首先,对于总成绩,我们可以建立一个大根堆,每次取出堆顶元素(即最大值),并将其放入结果数组中,直到堆为空。具体实现如下:
```python
def heap_sort_total_score(data):
n = len(data)
for i in range(n // 2 - 1, -1, -1):
heapify_total_score(data, n, i)
res = []
for i in range(n - 1, -1, -1):
data[0], data[i] = data[i], data[0]
res.append(data[i])
heapify_total_score(data, i, 0)
return res
def heapify_total_score(data, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and data[left][3] > data[largest][3]:
largest = left
if right < n and data[right][3] > data[largest][3]:
largest = right
if largest != i:
data[i], data[largest] = data[largest], data[i]
heapify_total_score(data, n, largest)
```
其中,data为二维数组,n为数组的长度,i为当前节点的索引,heapify_total_score函数用于调整堆。
对于数学成绩,我们可以建立一个小根堆,每次取出堆顶元素(即最小值),并将其放入结果数组中,直到堆为空。具体实现如下:
```python
def heap_sort_math_score(data):
n = len(data)
for i in range(n // 2 - 1, -1, -1):
heapify_math_score(data, n, i)
res = []
for i in range(n):
res.append(data[0])
data[0] = data[-1]
data.pop()
heapify_math_score(data, len(data), 0)
return res
def heapify_math_score(data, n, i):
smallest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and data[left][2] < data[smallest][2]:
smallest = left
if right < n and data[right][2] < data[smallest][2]:
smallest = right
if smallest != i:
data[i], data[smallest] = data[smallest], data[i]
heapify_math_score(data, n, smallest)
```
其中,data为二维数组,n为数组的长度,i为当前节点的索引,heapify_math_score函数用于调整堆。
最终,对于给定的数据,我们可以得到以下的排序结果:
按总成绩排序:[[1002, 2, 2, 4], [1001, 1, 1, 2]]
按数学成绩排序:[[1001, 1, 1, 2], [1002, 2, 2, 4]]
阅读全文