选男友(结构体) 分数 10 作者 zzuli 单位 郑州轻工业大学 小丽选择男朋友的标准有两个:成绩和身高。 首先选择成绩最高的男生,如果有多个男生成绩最高则选择其中身高最高的男生(假设这样的学生是唯一的)。 请你帮她完成该任务。 输入格式: 输入整数n(n小于20),然后输入n个男生信息,包含: 姓名(长度不超过10) 身高(数值在int范围内) 成绩(数值在int范围内) 输出格式: 输出成绩最高的学生,如果有多个男生成绩最高则输出其中身高最高的男生。 信息包括:姓名 身高 成绩,各个信息之间空格隔开。 输入样例: 3 zhang3 185 90 li4 188 60 wang5 175 90 输出样例: zhang3 185 90 代码长度限制 16 KB 时间限制 400 ms 内存限制
时间: 2024-02-05 15:12:04 浏览: 33
```cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 20;
struct Student
{
string name;
int height, score;
bool operator< (const Student &t) const
{
if (score != t.score) return score > t.score;
return height > t.height;
}
}students[N];
int n;
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
cin >> students[i].name >> students[i].height >> students[i].score;
sort(students, students + n);
cout << students[0].name << ' ' << students[0].height << ' ' << students[0].score << endl;
return 0;
}
```
相关问题
选男友(结构体) 分数 10 作者 zzuli 单位 郑州轻工业大学 小丽选择男朋友的标准有两个:成绩和身高。 首先选择成绩最高的男生,如果有多个男生成绩最高则选择其中身高最高的男生(假设这样的学生是唯一的)。 请你帮她完成该任务。 输入格式: 输入整数n(n小于20),然后输入n个男生信息,包含: 姓名(长度不超过10) 身高(数值在int范围内) 成绩(数值在int范围内) 输出格式: 输出成绩最高的学生,如果有多个男生成绩最高则输出其中身高最高的男生。 信息包括:姓名 身高 成绩,各个信息之间空格隔开。 输入样例: 3 zhang3 185 90 li4 188 60 wang5 175 90 输出样例: zhang3 185 90 代码长度限制 16 KB 时间限制 400 ms 内存限制C语言
```c++
#include <iostream>
#include <cstring>
using namespace std;
struct Student {
char name[11];
int height;
int score;
} stu[20];
int cmp(const void* a, const void* b) { // 按成绩从高到低排序,如果成绩相同就按身高从高到低排序
Student* s1 = (Student*)a;
Student* s2 = (Student*)b;
if (s1->score != s2->score) {
return s2->score - s1->score;
} else {
return s2->height - s1->height;
}
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> stu[i].name >> stu[i].height >> stu[i].score;
}
qsort(stu, n, sizeof(Student), cmp); // 排序
cout << stu[0].name << " " << stu[0].height << " " << stu[0].score << endl; // 输出
return 0;
}
```
7-3 输入输出学生结构体 分数 10 作者 冯筠 单位 西北大学 输入n个学生的学号和成绩,然后输出。n 小于50,学号小于10位。。 输入格式: 输入n和n行学生的学号和成绩(有1位小数) 输出格式: 每行输出一个学生的学号和成绩(学号后一个空格,成绩保留1位小数)
以下是该题的C++代码实现:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
struct Student {
char id[11]; // 学号,最多10位
float score; // 成绩
};
int main() {
int n;
cin >> n;
Student students[n];
for (int i = 0; i < n; i++) {
cin >> students[i].id >> students[i].score;
}
for (int i = 0; i < n; i++) {
cout << students[i].id << " " << fixed << setprecision(1) << students[i].score << endl;
}
return 0;
}
```
其中,定义了一个名为 `Student` 的结构体,包含了学号和成绩两个字段。在主函数中,首先读入学生数量 `n`,然后定义了一个长度为 `n` 的 `students` 数组,用于存储每个学生的信息。
接下来通过循环,依次读入每个学生的学号和成绩,并将其存储在相应的结构体中。最后,再次通过循环,输出每个学生的学号和成绩即可。在输出成绩时,使用 `fixed` 和 `setprecision` 控制小数点后的位数为1位。