C++的一道函数综合题目,求解
1、输入10个学生的学号及5门课程成绩,分别用函数实现下列功能:(1)计算每个学生的总分及平均分(2)计算每门课程的平均分(3)将学生按总成绩由高到低排序(4)输出低于平...
1、输入10个学生的学号及5门课程成绩,分别用函数实现下列功能:
(1)计算每个学生的总分及平均分
(2)计算每门课程的平均分
(3)将学生按总成绩由高到低排序
(4)输出低于平均分或两门课程不及格的学生的学号及其所有成绩
太难了...初学,完全想不出头绪, 麻烦大家帮忙解答一下 谢谢 展开
(1)计算每个学生的总分及平均分
(2)计算每门课程的平均分
(3)将学生按总成绩由高到低排序
(4)输出低于平均分或两门课程不及格的学生的学号及其所有成绩
太难了...初学,完全想不出头绪, 麻烦大家帮忙解答一下 谢谢 展开
展开全部
#include<iostream>
#include<string.h>
using namespace std;
#define N 5//考试的科目数
#define M 10//全班的学生的数目
struct student
{
char name[20];
int score[N];
int all;
float aver;
}stu[M];
void Creat(student *stu)
{
int i,n,j;
printf("请依次输入学生的姓名和成绩:\n");
for(i=0;i<M;i++)
{
scanf("%s",stu[i].name);
float sum=0.0;
for(j=0;j<N;j++)
{
scanf("%d",&stu[i].score[j]);
sum=sum+stu[i].score[j];
}
stu[i].aver=sum/N;
stu[i].all=sum;
}
}
void show(student *stu)
{
int i=0;
float gread[N]={0.0};
printf("\n他们的成绩及平均分如下:\n");
for(i=0;i<M;i++)
{
int j;
printf("%-10s",stu[i].name);
for( j=0;j<N;j++)
{
printf("%-4d",stu[i].score[j]);
gread[j]=gread[j]+stu[i].score[j];
}
printf("%.2f",stu[i].aver);
printf("\n");
}
printf("五门课成绩的平均分是:\n");
printf("%-8.2f %-8.2f %-8.2f %-8.2f %-8.2f\n",gread[0]/M,gread[1]/M,gread[2]/M,gread[3]/M,gread[4]/M);
}
void Sort(student *stu)
{
int i=0,k=0;
student s,max=stu[0];
for(i=0;i<M;i++)
{ for(int j=0;j<M-1-i;j++)
{
if(stu[j].aver<stu[j+1].aver)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
}
}
void sear(student *stu)//不及格或者2门不及格
{
int i=0,k=0;
printf("\n平均分不及格或者有2门课程不及格的如下:\n");
for(i=0;i<M;i++)
{
if(stu[i].aver<60)
{
printf("%-10s",stu[i].name);
for(int j=0;j<N;j++)
printf("%-4d",stu[i].score[j]);
printf("\n");
}
else
{ k=0;
for(int j=0;j<N;j++)
{
if(stu[i].score[j]<60)
k++;
}
if(k>=2)
{
printf("%-10s",stu[i].name);
for(int j=0;j<N;j++)
printf("%-4d",stu[i].score[j]);
printf("\n");
}
}
}
}
void main()
{
int k;
Creat(stu);
Sort(stu);
sear(stu);
printf("\n");
show(stu);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询