#include <iostream>#include <iomanip>#include <string.h>#include <cmath>#define M 3 // 课程门数#define N 4 //学生数组中的学生个数using namespace std;class Student{public:Student() {}Student(const Student&);void input_info(){cin>>id;cin>>name;for(int i=0; i<3; i++)cin>>score[i];isFail=false;for(int i=0; i<3; i++)if(score[i]<60) isFail=true;}void input_lesson_ids(){for(int i=0; i<M; i++)cin>>lesson_id[i];}void show_info(){ cout<<"Student id:"<<id<<endl;cout<<"Student name:"<<name<<endl;cout<<setw(10)<<"lesson_id ";for(int i=0; i<M; i++)cout<<setw(10)<<lesson_id[i];cout<<setw(10)<<"Average";cout<<endl;cout<<setw(10)<<"scores ";for(int i=0; i<M; i++)cout<<setw(10)<<score[i];cout<<setw(10)<<ave();cout<<endl;if(isFail) cout<<"The student failed."<<endl;elsecout<<"The student didn\'t fail."<<endl;cout<<"------华丽的分割线--------"<<endl;}float ave()//求平均成绩{ //实现求平均成绩并返回 int sum=0,i,ave; for(int i=0;i<M;i++) sum=sum+score[i]; return ((float)sum/M);}string get_name(){ return name; }private:int id;string name;bool isFail;static int lesson_id[M];float score[M];};int Student::lesson_id[M];Student::Student(const Student& s){ //完成拷贝构造函数的实现,拷贝出的对象和原对象一致id=s.id;name=s.name;for(int i=0;i<M;i++){ lesson_id[i]=s.lesson_id[i]; score[i]=s.score[i];}isFail=s.isFail;}int main(){ Student cs[N];cs[0].input_lesson_ids();// 用一个学生对象对静态数组成员赋值for(int i=0; i<N; i++)cs[i].input_info();//求出最高平均成绩并按要求格式输出相关语句//求出最低平均成绩并按要求格式输出相关语句 //按照平均成绩的高低对学生数组进行排序for(int i=0; i<N; i++)//输出排序后的结果cs[i].show_info();return 0;}补齐代码
时间: 2024-03-16 17:45:35 浏览: 26
这段代码是一个学生成绩管理系统,需要补齐的代码如下:
```
#include <algorithm> //sort需要用到这个头文件
//定义一个比较函数,用于排序
bool cmp(Student a, Student b){
return a.ave() > b.ave();
}
int main(){
Student cs[N];
cs[0].input_lesson_ids(); // 用一个学生对象对静态数组成员赋值
for(int i=0; i<N; i++){
cs[i].input_info();
}
//求出最高平均成绩并按要求格式输出相关语句
float max_ave = cs[0].ave();
string max_name = cs[0].get_name();
for(int i=1; i<N; i++){
if(cs[i].ave() > max_ave){
max_ave = cs[i].ave();
max_name = cs[i].get_name();
}
}
cout << "The student with the highest average score is " << max_name << ", the average score is " << max_ave << endl;
//求出最低平均成绩并按要求格式输出相关语句
float min_ave = cs[0].ave();
string min_name = cs[0].get_name();
for(int i=1; i<N; i++){
if(cs[i].ave() < min_ave){
min_ave = cs[i].ave();
min_name = cs[i].get_name();
}
}
cout << "The student with the lowest average score is " << min_name << ", the average score is " << min_ave << endl;
//按照平均成绩的高低对学生数组进行排序
sort(cs, cs+N, cmp);
//输出排序后的结果
for(int i=0; i<N; i++){
cs[i].show_info();
}
return 0;
}
```
在上述代码中,我们实现了以下功能:
1. 求出最高平均成绩并按要求格式输出相关语句
2. 求出最低平均成绩并按要求格式输出相关语句
3. 按照平均成绩的高低对学生数组进行排序
4. 输出排序后的结果
希望这样的回答能够帮助到您!