问题 B: 成绩最高分2-同分(结构体)在某次考试中,五(2)班有学生n名,已知每位学生的姓名及他的语文成绩,求获得最高分数的学生的姓名。 (分数中有可能有同分的情况)程序
时间: 2024-01-03 11:05:17 浏览: 68
同样可以使用C++的结构体和循环来实现。下面是一个示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
double score;
};
int main() {
int n;
cin >> n;
Student maxScoreStudent, secondMaxScoreStudent;
for (int i = 0; i < n; i++) {
Student student;
cin >> student.name >> student.score;
if (i == 0) {
maxScoreStudent = student;
} else if (student.score > maxScoreStudent.score) {
secondMaxScoreStudent = maxScoreStudent;
maxScoreStudent = student;
} else if (i == 1 || student.score > secondMaxScoreStudent.score) {
secondMaxScoreStudent = student;
}
}
cout << "最高分数的学生姓名:" << maxScoreStudent.name << endl;
cout << "最高分数:" << maxScoreStudent.score << endl;
if (maxScoreStudent.score == secondMaxScoreStudent.score) {
cout << "有同分的学生姓名:" << secondMaxScoreStudent.name << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个结构体`Student`,表示每个学生的姓名和成绩。然后我们使用两个变量`maxScoreStudent`和`secondMaxScoreStudent`来记录当前的最高分数和次高分数的学生。在循环中,我们读入每个学生的姓名和成绩,然后通过比较来更新最高分数和次高分数的学生。最后输出最高分数的学生的姓名和成绩,并判断是否有同分的情况,如果有则输出次高分数的学生的姓名。
阅读全文