三、定义一个学生结构(包含学号、姓名、年龄成员),输入5个学生的数据,将这些学生数据保存到文件stu.txt中,最后按照年龄从大到小排序在屏幕上输出。
时间: 2024-04-24 16:22:04 浏览: 121
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
好的,我来帮你解答这个问题。
首先,我们可以定义一个名为`Student`的结构体,包含学号、姓名、年龄三个成员变量:
```c++
struct Student{
int id;
string name;
int age;
};
```
然后,我们可以编写一个函数,用于输入5个学生的数据并将这些数据保存到文件`stu.txt`中:
```c++
void saveToFile(vector<Student>& students){
ofstream ofs("stu.txt");
if(!ofs){
cout<<"文件打开失败"<<endl;
return;
}
for(int i=0; i<students.size(); i++){
ofs<<students[i].id<<" "<<students[i].name<<" "<<students[i].age<<endl;
}
ofs.close();
}
```
接着,我们可以编写另一个函数,用于按照年龄从大到小排序并在屏幕上输出:
```c++
void sortByAge(vector<Student>& students){
sort(students.begin(), students.end(), [](const Student& a, const Student& b){
return a.age>b.age;
});
for(int i=0; i<students.size(); i++){
cout<<students[i].id<<" "<<students[i].name<<" "<<students[i].age<<endl;
}
}
```
最后,我们可以编写主函数,调用上述两个函数来实现该程序的功能:
```c++
int main(){
vector<Student> students(5);
for(int i=0; i<students.size(); i++){
cout<<"请输入第"<<i+1<<"个学生的学号、姓名、年龄:";
cin>>students[i].id>>students[i].name>>students[i].age;
}
saveToFile(students);
sortByAge(students);
return 0;
}
```
这样,当你运行该程序时,它会要求你输入5个学生的学号、姓名、年龄,然后将这些学生数据保存到文件`stu.txt`中,并按照年龄从大到小排序并在屏幕上输出。
阅读全文