输入10个学生5门课的成绩,分别用函数求:(1)每个学生色平均分;(2)每门课的平均分;(3)找出

输入10个学生5门课的成绩,分别用函数求:(1)每个学生色平均分;(2)每门课的平均分;(3)找出(3)找出平均分最高的学生。

你好!! 代码如下,请采纳
#include<stdio.h>
struct student{
char Name[20];
int Courses1;
int Courses2;
int Courses3;
int Courses4;
int Courses5;
float stu_average;//学生的平均值
};
void main()
{
int i;
float mig;//平均值最高
float small;//平均值最低
float class_average1 = 0;//课程1的平均值
float class_average2 = 0;//课程2的平均值
float class_average3 = 0;//课程3的平均值
float class_average4 = 0;//课程4的平均值
float class_average5 = 0;//课程5的平均值
struct student stu[10];

printf("请输入十个学生姓名及成绩:\n");
printf("例:ss 99 90 98 97 96\nll 87 86 98 99 90\n");

//接收10个学生的信息放入结构体数组中
for(i = 0;i < 10;i++)
{
scanf("%s%d%d%d%d%d",stu[i].Name,&stu[i].Courses1,&stu[i].Courses2,&stu[i].Courses3,&stu[i].Courses4,&stu[i].Courses5);
stu[i].stu_average = (stu[i].Courses1 + stu[i].Courses2 + stu[i].Courses3 + stu[i].Courses4 +stu[i].Courses5)/5;
}

//取第一个学生的平均分
mig = stu[0].stu_average;
small = stu[0].stu_average;
//拿第一个学生的平均分和其他9个学生的平均分依次比较
for(i = 0;i < 10;i++)
{
//输出学生的平均分
printf("%s的平均值:%f\n",stu[i].Name,stu[i].stu_average);
//每次均取较大的
if(mig < stu[i].stu_average)
{
mig = stu[i].stu_average;
}
//每次均取较小的
if(small > stu[i].stu_average)
{
small = stu[i].stu_average;
}
class_average1 = class_average1 + stu[i].Courses1;//课1分数总和
class_average2 = class_average2 + stu[i].Courses2;//课2分数总和
class_average3 = class_average3 + stu[i].Courses3;//课3分数总和
class_average4 = class_average4 + stu[i].Courses4;//课4分数总和
class_average5 = class_average5 + stu[i].Courses5;//课5分数总和

}

//输出最高平均分和最低平均分(可能有并列的)
for(i = 0;i < 10;i++)
{
if(mig == stu[i].stu_average)
{
printf("最高:%s,%f\n",stu[i].Name,stu[i].stu_average);
}
if(small == stu[i].stu_average)
{
printf("最低:%s,%f\n",stu[i].Name,stu[i].stu_average);
}
}
printf("课1平均分:%f\n",class_average1/5);
printf("课2平均分:%f\n",class_average2/5);
printf("课3平均分:%f\n",class_average3/5);
printf("课4平均分:%f\n",class_average4/5);
printf("课5平均分:%f\n",class_average5/5);
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答