c++:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据 要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩)
时间: 2025-02-05 10:15:53 浏览: 51
在C++中,你可以创建一个结构体(struct)来表示一个学生,包含学号、姓名和三门课程的成绩。首先,定义一个名为Student的结构体:
```cpp
#include <iostream>
#include <string>
// 定义学生结构体
struct Student {
int student_id;
std::string name;
float course1_score, course2_score, course3_score;
};
int main() {
// 创建一个数组存储10个学生数据
Student students[10];
// 输入10个学生的信息
for (int i = 0; i < 10; ++i) {
std::cout << "请输入第" << (i + 1) << "个学生的学号: ";
std::cin >> students[i].student_id;
std::cout << "请输入姓名: ";
std::cin >> students[i].name;
std::cout << "请输入第一门课程成绩: ";
std::cin >> students[i].course1_score;
std::cout << "请输入第二门课程成绩: ";
std::cin >> students[i].course2_score;
std::cout << "请输入第三门课程成绩: ";
std::cin >> students[i].course3_score;
}
// 计算每门课程的总平均成绩
float avg_course1 = 0.0f, avg_course2 = 0.0f, avg_course3 = 0.0f;
for (int j = 0; j < 10; ++j) {
avg_course1 += students[j].course1_score;
avg_course2 += students[j].course2_score;
avg_course3 += students[j].course3_score;
}
float total_average = (avg_course1 + avg_course2 + avg_course3) / 30.0f;
// 找出最高分的学生信息
float max_score = std::numeric_limits<float>::min();
int max_student_index = -1;
for (int k = 0; k < 10; ++k) {
if (students[k].course1_score > max_score ||
(students[k].course1_score == max_score && students[k].course2_score > max_score) ||
(students[k].course1_score == max_score && students[k].course2_score == max_score && students[k].course3_score > max_score)) {
max_score = students[k].course1_score;
max_student_index = k;
}
}
Student max_student = students[max_student_index];
// 输出结果
std::cout << "三门课程总平均成绩: " << total_average << std::endl;
std::cout << "最高分学生信息: (" << max_student.student_id << ") " << max_student.name << ", 成绩分别是: "
<< max_student.course1_score << ", " << max_student.course2_score << ", " << max_student.course3_score << std::endl;
return 0;
}
```
当你运行这个程序,它会按照指定的步骤收集学生的数据,然后计算并输出总平均成绩以及最高分学生的详细信息。
阅读全文
相关推荐


















