vector向量如何使用?如何进行升序排序?不及格率如何实现?怎么才能在用户输入完之后继续输入?
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct student {
string id;
string name;
double math;
double english;
};
int main() {
int choice;
do {
cout << "==================================" << endl;
cout << " 学成成绩计算程序" << endl;
cout << "==================================" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 按照学升序排序" << endl;
cout << "3. 显示学生信息" << endl;
cout << "4. 退出" << endl;
cout << "请输入您的选择:";
cin >> choice;
switch (choice) {
case 1:
add_student();
break;
case 2:
sort_students_by_id();
break;
case 3:
display_students();
break;
case 4:
cout << "再见!" << endl;
return 0;
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
} while (choice != 4);
return 0;
}
void add_student() {
if (students.size() >= 100) {
cout << "对不起,学生人数已经达到上限!" << endl;
return;
}
student s;
cout << "请输入学号:";
cin >> s.id;
cout << "请输入姓名:";
cin >> s.name;
cout << "请输入高数:";
cin >> s.math;
cout << "请输入英语:";
cin >> s.english;
students.push_back(s);
cout << "学生信息添加成功!" << endl;
}
void sort_students_by_id() {
vector<student> v;
v.swap(students); // 交换 students 和 v
sort(v.begin(), v.end(), greater<student>()); // 使用 greater<student>函数对象进行升序排序
cout << "学生信息按照学号升序排序成功!" << endl;
}
void display_students() {
if (students.empty()) {
cout << "对不起,学生信息为空!" << endl;
return;
}
cout << "学号\t姓名\t高数\t英语" << endl;
for (auto& s : students) {
cout << s.id << "\t" << s.name << "\t" << s.math << "\t" << s.english << endl;
}
}