以下程序大体上符合你们的要求,如有不足之处,请指出,我们共同进行交流
#include"iostream"
#include"string"
using namespace std;
const int N=10;
const int M=5;
struct student
{
int num;
string name;
double score[M],average[N];
}stu[N];
void input()
{
int i,j;
for(i=0;i<N;i++)
{
cout<<"输入学生的姓名、学号、课程1的成绩、课程2的成绩、课程3的成绩:"<<endl;
cin>>stu[i].name>>stu[i].num;
for(j=0;j<M;j++)
cin>>stu[i].score[j];
}
}
void output()
{
int i,j,k;
double t,x[N],rate[M];
for(i=0;i<N;i++)
{
t=0;
for(j=0;j<M;j++)t+=stu[i].score[j];
stu[i].average[i]=t/3;x[i]=t;
}
cout<<"输出每名学生的平均成绩和总分:"<<endl;
for(i=0;i<N;i++)
cout<<"学生"<<stu[i].name<<"的平均成绩和总分分别为:"<<stu[i].average[i]<<"和"<<x[i]<<endl;
cout<<"输出每门课程的平均分、及格率、最高成绩和最低成绩:"<<endl;
for(j=0;j<M;j++)
{
double max=stu[0].score[0],min=stu[0].score[0];
t=0;
for(i=0;i<N;i++)
{
t+=stu[i].score[j];
if(stu[i].score[j]>max)max=stu[i].score[j];
if(stu[i].score[j]<min)min=stu[i].score[j];
}
for(k=0;k<M;k++)
{
int count=0;
for(i=0;i<N;i++)
if(stu[i].score[k]>60)count++;
rate[k]=double(count)/N;
}
cout<<"课程"<<j+1<<"的平均成绩为:"<<t/5<<endl;
cout<<"课程"<<j+1<<"的及格率为:"<<rate[j]<<endl;
cout<<"课程"<<j+1<<"的最高成绩为:"<<max<<endl;
cout<<"课程"<<j+1<<"的最低成绩为:"<<min<<endl;
}
}
void rank()
{
int i,j,k,m;
string n;
double t,a;
for(j=0;j<N;j++)
for(i=0;i<N-1-j;i++)
if(stu[i].average[i]<stu[i+1].average[i+1])
{
t=stu[i].average[i];
stu[i].average[i]=stu[i+1].average[i+1];
stu[i+1].average[i+1]=t;
m=stu[i].num;
stu[i].num=stu[i+1].num;
stu[i+1].num=m;
n=stu[i].name;
stu[i].name=stu[i+1].name;
stu[i+1].name=n;
for(k=0;k<M;k++)
{
a=stu[i].score[k];
stu[i].score[k]=stu[i+1].score[k];
stu[i+1].score[k]=a;
}
}
cout<<"输出成绩在前五名学生的姓名、学号、各科成绩和总分:"<<endl;
for(i=0;i<5;i++)
{
cout<<"姓名:"<<stu[i].name<<";学号:"<<stu[i].num<<";三门课程的成绩:";
for(j=0;j<M;j++)cout<<stu[i].score[j]<<" ";cout<<endl;
}
for(j=0;j<M;j++)
{
t=0;
for(i=0;i<N;i++)
t+=stu[i].score[j];
cout<<"课程"<<j+1<<"的总分为:"<<t<<endl;
}
}
void make_up()
{
int i,j;
cout<<"输出各科补考学生的学号、课程和成绩:"<<endl;
for(j=0;j<M;j++)
for(i=0;i<N;i++)
{
if(stu[i].score[j]<60)
cout<<"学号:"<<stu[i].num<<"补考课程:课程"<<j+1<<";该课程的成绩:"<<stu[i].score[j]<<endl;
}
}
int main()
{
input();//问题(1)
output();//问题(2、3)
rank();//问题(4)
make_up();//问题(5)
return 0;
}