假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(1<=n<=10)个学生的成绩信息,计算并输出平均分最高的学生信息,平均分保留两位小数。如果平均分最高的学生有多个,按输入顺序输出第一个学生的信息。 输入格式: 输入整数n(1<=n<=10),在下面n行输入n个学生的信息,包括学号、姓名、三门课程成绩(整数)。 输出格式: 在一行中输出平均分最高的学生信息:学号、姓名、平均分(保留两位小数)
时间: 2023-06-19 11:04:53 浏览: 264
下面是一个可能的解法,可以参考一下:
```c++
#include <iostream>
#include <string>
#include <iomanip> // 用于输出小数点后两位
using namespace std;
// 定义学生信息的结构体
struct Student {
string id;
string name;
int score1, score2, score3;
double avg_score; // 个人平均成绩
};
int main()
{
int n;
cin >> n;
// 读入 n 个学生的信息
Student students[n];
for (int i = 0; i < n; i++) {
cin >> students[i].id >> students[i].name
>> students[i].score1 >> students[i].score2 >> students[i].score3;
students[i].avg_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3.0;
}
// 找出平均分最高的学生
int max_index = 0;
for (int i = 1; i < n; i++) {
if (students[i].avg_score > students[max_index].avg_score) {
max_index = i;
}
}
// 输出平均分最高的学生信息
cout << students[max_index].id << " " << students[max_index].name << " "
<< fixed << setprecision(2) << students[max_index].avg_score << endl;
return 0;
}
```
这个程序首先定义了一个 `struct Student`,表示学生信息。其中包括学号、姓名、三门课程成绩和个人平均成绩。在读入每个学生的信息时,计算个人平均成绩。然后遍历所有学生,找出平均分最高的学生的下标。最后输出该学生的信息,注意平均分保留两位小数需要用到 `iomanip` 库。
阅读全文