学生成绩管理:有若干个学生,每个学生的数据包括学号、姓名、三门课程成绩。要求:
①设计函数实现学生信息的录入;
②设计函数实现学生信息的访问输出;
③设计函数求解每门课程的平均分;
④设计函数求解并输出每门课程都高于该课程的平均分的所有学生的信息。(要求每一个学生信息的输出用函数实现)
#include <iostream>
#include <string>
#include<stdlib.h>
using namespace std;
struct Student{
int num;
string name;
float score[3];
float ave[3];
};
void input( Student *stu,int n){
int i,j;
for(i=0;i<n;i++){
cin>>stu[i].num>>stu[i].name>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2];
}
}
void output(Student *stu,int n){
int i,j;
for(i=0;i<n;i++){
cout<<stu[i].num<<" "<<stu[i].name<<" "<<stu[i].score[0]<<" "<<stu[i].score[1]<<" "<<stu[i].score[2];
cout<<endl;
}
}
void getAverage(Student ave ,Student *stu,int n){
int i;
for(i=0;i<n;i++){
stu->ave[0]+=stu[i].score[0]++;
stu->ave[1]+=stu[i].score[1]++;
stu->ave[2]+=stu[i].score[2]++;
}
cout<<stu->ave[0]/n<<" "<<stu->ave[1]/n<<" "<<stu->ave[2]/n<<endl;
}
void overAverage(Student *stu,int n)
{
for(int i=0;i<n;i++){
if(stu[i].score[0]>(stu->ave[0])/n&&stu[i].score[1]>(stu->ave[1])/n&&stu[i].score[2]>(stu->ave[2])/n){
cout<<stu[i].num<<" "<<stu[i].name<<" "<<stu[i].score[0]-1<<" "<<stu[i].score[1]-1<<" "<<stu[i].score[2]-1<<endl;
}
}
}
int main(){
int n;
cout<<"请输入学生人数:";
cin>>n;
Student *stu=new Student[n];
Student *ave=new Student[3];
cout<<"请输入学生信息"<<endl;
cout<<"学号 姓名 语文 英语 数学 " <<endl;
input(stu,n);
cout<<"你输入的学生信息为:"<<endl;
cout<<"学号 姓名 语文 英语 数学 " <<endl;
output(stu,n);
cout<<"每门平均成绩为:"<<endl;
getAverage(*ave,stu,n);
cout<<"高于平均成绩的有:"<<endl;
overAverage(stu,n);
return 0;
}
运行结果:
来源:CSDN
作者:yhstarry
链接:https://blog.csdn.net/qq_43510083/article/details/104446619