用C++输入10个学生5门课的成绩,分别用函数实现下列功能:①计算每个学生平均分 ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程
时间: 2024-11-22 15:44:35 浏览: 103
在C++中,你可以通过定义结构体存储学生和课程的成绩信息,然后创建函数来实现所需的功能。首先,我们可以定义一个Student和CourseScore结构:
```cpp
#include <iostream>
#include <vector>
#include <map>
// 定义学生结构
struct Student {
std::string name;
std::vector<int> scores; // 存储5门课成绩
};
// 定义课程分数结构
struct CourseScore {
int courseID;
int score;
};
// 函数计算每个学生的平均分
double calculateAverage(Student& student) {
double sum = 0;
for (int score : student.scores)
sum += score;
return sum / student.scores.size();
}
// 函数计算每门课的平均分
double calculateCourseAverage(const std::vector<CourseScore>& allScores) {
double total = 0;
for (const auto& score : allScores)
total += score.score;
return total / allScores.size();
}
// 函数找出最高分及其对应的课程和学生
std::pair<std::string, int> findHighestScore(const std::vector<Student>& students) {
int highestScore = -1;
std::string studentWithHighestScore;
int courseWithHighestScore = -1;
for (const auto& student : students) {
for (int i = 0; i < student.scores.size(); ++i) {
if (student.scores[i] > highestScore) {
highestScore = student.scores[i];
studentWithHighestScore = student.name;
courseWithHighestScore = i + 1; // 假设课程ID从1开始计数
}
}
}
return {studentWithHighestScore, courseWithHighestScore};
}
int main() {
std::vector<Student> students(10);
std::vector<CourseScore> allScores;
// 输入10个学生的成绩
for (int i = 0; i < 10; ++i) {
std::cout << "请输入第" << i+1 << "位学生的信息 (name): ";
std::getline(std::cin, students[i].name);
for (int j = 0; j < 5; ++j) {
std::cout << "请输入第" << j+1 << "门课程的成绩: ";
int score;
std::cin >> score;
students[i].scores.push_back(score);
CourseScore cs = {j+1, score}; // 假设课程ID从1开始计数
allScores.push_back(cs);
}
}
// 计算平均分并输出结果
for (auto& student : students) {
double avg = calculateAverage(student);
std::cout << "学生 " << student.name << " 的平均分是: " << avg << std::endl;
}
double courseAvg = calculateCourseAverage(allScores);
std::cout << "所有课程的平均分是: " << courseAvg << std::endl;
// 找出最高分及其对应信息
auto result = findHighestScore(students);
std::cout << "最高分 (" << highestScore << ") 属于学生 " << result.first << ", 课程 " << result.second << std::endl;
return 0;
}
```
阅读全文
相关推荐
















