c++,5个学生,4门课,要求以下各功能分别用函数实现并在主函数分别调用各函数。 (1)找出成绩最高的学生序号和课程。 (2)找出不及格课程的学生序号及各门课的全部成绩。 (3)求全部学生各门课程的平均分数,并输出。
时间: 2024-10-22 12:28:31 浏览: 41
在C++中,我们可以创建一个简单的结构体来表示学生和课程信息,然后定义相应的函数来满足这些需求。首先,我们定义一个`Student`结构体,包含学号、姓名和四门课程的成绩:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义学生结构体
struct Student {
int id;
string name;
vector<int> scores; // 成绩数组,假设每门课满分100分
};
// 函数声明
void findHighestScore(int students[], int numStudents);
void findFailures(Student* students, int numStudents);
void calculateAverage(vector<Student>& students);
int main() {
// 创建5个学生数据
Student students[5] = {
{1, "张三", {85, 90, 75, 95}},
{2, "李四", {60, 70, 55, 80}},
{3, "王五", {92, 88, 93, 90}},
{4, "赵六", {78, 82, 70, 85}},
{5, "刘七", {90, 92, 88, 91}}
};
// 调用函数
findHighestScore(students, 5);
findFailures(students, 5);
calculateAverage(students);
return 0;
}
// 函数实现:找出成绩最高的学生序号和课程
void findHighestScore(int students[], int numStudents) {
int maxScoreIndex = 0;
int maxScoreCourse = 0;
for (int i = 1; i < numStudents; ++i) {
if (students[i].scores[maxScoreIndex] < students[i].scores[0]) {
maxScoreIndex = 0;
}
else if (students[i].scores[maxScoreIndex] < students[i].scores[1]) {
maxScoreIndex = 1;
}
else if (students[i].scores[maxScoreIndex] < students[i].scores[2]) {
maxScoreIndex = 2;
}
else {
maxScoreIndex = 3;
}
if (students[i].scores[maxScoreIndex] > students[maxScoreIndex].scores[maxScoreIndex]) {
maxScoreCourse = maxScoreIndex + 1;
students[maxScoreIndex].id = students[i].id;
}
}
cout << "最高分学生 (" << students[maxScoreIndex].id << ") 在第" << maxScoreCourse << "门课上得了最高分:" << students[maxScoreIndex].scores[maxScoreCourse] << endl;
}
// 函数实现:找出不及格课程的学生序号及各门课的全部成绩
void findFailures(Student* students, int numStudents) {
for (int i = 0; i < numStudents; ++i) {
for (int j = 0; j < 4; ++j) {
if (students[i].scores[j] < 60) {
cout << "学生 " << students[i].id << " 的 " << (char)('A' + j) << " 门课成绩为:" << students[i].scores[j] << endl;
}
}
}
}
// 函数实现:求全部学生各门课程的平均分数
void calculateAverage(vector<Student>& students) {
int totalScores[4] = {0};
for (auto& student : students) {
for (int score : student.scores) {
totalScores[score - 1]++;
}
}
for (int i = 0; i < 4; ++i) {
float average = static_cast<float>(totalScores[i]) / students.size();
cout << "第" << (char)('A' + i) << "门课的平均分为:" << average << endl;
}
}
```
这个程序首先在主函数中初始化了五个学生的数据,然后通过调用三个函数分别完成查找最高分、找出不及格课程以及计算平均成绩的功能。
阅读全文