编写一个c++程序(要求输入专业名,或者选择相应序号:如请选择专业:1.数学。2.计算机。输入给定课程名或选择相应序号,按照指定课程成绩降序输出整个专业信息),若成绩相同则按照学号大小排序
时间: 2024-10-20 07:06:59 浏览: 22
在 C++ 中编写这样一个程序,你需要使用结构体表示学生的信息(如姓名、学号、专业和成绩),以及容器如 vector 或者 map 来存储数据,并提供用户界面以便交互。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含 sort 函数
// 定义一个结构体来存储学生信息
struct Student {
int id;
std::string name;
std::string major;
double score;
bool operator<(const Student &other) const { // 指定比较规则
if (score != other.score)
return score > other.score; // 如果分数不同按降序排列
else
return id < other.id; // 否则按学号升序排列
}
};
int main() {
std::vector<Student> students;
int choice;
std::cout << "请输入专业序号(1. 数学,2. 计算机),或直接输入专业名:" << std::endl;
// 输入专业并创建学生记录
while (true) {
std::string input;
std::cin >> input;
if (input == "数学" || input == "计算机") {
std::cout << "请输入该专业的学生信息(例如:张三 001 95):" << std::endl;
std::cin >> students.back().name >> students.back().id >> students.back().score;
students.back().major = input;
break;
} else {
students.push_back(Student());
std::cin >> students.back().name >> students.back().id >> students.back().score >> students.back().major;
}
}
std::cout << "请输入课程名或选择序号以降序显示成绩:" << std::endl;
// 输入课程名或选择排序依据
std::cin >> choice;
// 使用排序函数对学生列表进行降序排列
std::sort(students.begin(), students.end());
// 输出结果
for (const auto &student : students) {
std::cout << "姓名: " << student.name << ", 学号: " << student.id << ", 专业: " << student.major
<< ", 成绩: " << student.score << std::endl;
}
return 0;
}
阅读全文