C++的一道函数综合题目,求解

1、输入10个学生的学号及5门课程成绩,分别用函数实现下列功能:(1)计算每个学生的总分及平均分(2)计算每门课程的平均分(3)将学生按总成绩由高到低排序(4)输出低于平... 1、输入10个学生的学号及5门课程成绩,分别用函数实现下列功能:

(1)计算每个学生的总分及平均分

(2)计算每门课程的平均分

(3)将学生按总成绩由高到低排序

(4)输出低于平均分或两门课程不及格的学生的学号及其所有成绩
太难了...初学,完全想不出头绪, 麻烦大家帮忙解答一下 谢谢
展开
 我来答
zy1404
2014-01-03
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
#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);
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式