9.5有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)

//C程序设计第四版(谭浩强)
//章节:第九章 用户自己建立数据类型 
//题号:9.5 
//题目:有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,
//要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数) 
#include <stdio.h>
#include <stdlib.h>
struct student	//最好首字母大写,这里为输入简单用小写 
{
	int num;
	char name[10];
	float score[3];
	float aver;
};
void input(struct student stu[])
{
	int i;
	printf("请输入10个学生的学号、姓名、三门课程成绩(以空格隔开):\n");
	for(i=0;i<10;i++)
	{
		scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
		stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
	}
}
void average(struct student stu[])
{
	int i;
	float aver1,aver2,aver3,sum1=0,sum2=0,sum3=0;
	for(i=0;i<10;i++)
	{
		sum1+=stu[i].score[0];
		sum2+=stu[i].score[1];
		sum3+=stu[i].score[2];
	}
	aver1=sum1/10.0;
	aver2=sum2/10.0;
	aver3=sum3/10.0;
	printf("三门课程的平均成绩:\n");
	printf("%6.2f%6.2f%6.2f",aver1,aver2,aver3);
}
struct student max(struct student stu[])
{
	int i,m=0;
	for(i=0;i<10;i++)
		if(stu[i].aver>stu[m].aver)
			m=i;
	return stu[m];
}
void print(struct student stu)
{
	printf("\n成绩最高的学生是:\n");
	printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f%5.1f%5.1f\n平均成绩:%6.2f\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.aver);
}
int main()
{
	struct student stu[10],*p=stu;
	input(p);
	average(p);
	print(max(p));
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44589540/article/details/86669906