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

题目描述

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

输入

共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。

输出

第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。
第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。
请注意行尾输出换行。

样例输入

101 AAA 80 81 82
102 BBB 83 84 85
103 CCC 86 87 88
104 DDD 89 90 91
105 EEE 92 93 94
106 FFF 80 90 100
107 GGG 85 90 95
108 HHH 80 85 90
109 III 90 91 92
110 JJJ 91 88 87

样例输出

85.60 87.90 90.40
105 EEE 92 93 94

#include<stdio.h>
#include<string.h>
struct people 
{
    int num,a,b,c;
    char name[10];
};
int input(struct people stu[])
{
	for(int i=0;i<10;i++)
	scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
}
int print(struct people stu[])
{
	int x=0,y=0,z=0;
	for(int i=0;i<10;i++)
	{
		x=x+stu[i].a;
		y=y+stu[i].b;
		z=z+stu[i].c;
	}
	for(int i=0;i<10;i++)
	{
		
		if((stu[i].a+stu[i].b+stu[i].c)>=(stu[i+1].a+stu[i+1].b+stu[i+1].c))
		{
			stu[i+1].num=stu[i].num;
			strcpy(stu[i+1].name,stu[i].name);
			stu[i+1].a=stu[i].a;
			stu[i+1].b=stu[i].b;
			stu[i+1].c=stu[i].c;
		}
	}
	printf("%.2f %.2f %.2f\n",double(x/10.0),double(y/10.0),double(z/10.0));
	printf("%d %s %d %d %d\n",stu[9].num,stu[9].name,stu[9].a,stu[9].b,stu[9].c);
}
int main()
{
	people stu[10];
	input(stu);
	print(stu);
	return 0;
} 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、已知一个链表中存储了若干名学生的信息,每名学生的信息包括学号、英语成绩成绩、计算机成绩。 现编写一个函search(),要求对输入的无序学号进行排序,然后采用折半查找方法查找输入学生学号,并输出学生各科成绩。 2、设计一个学生类(CStudent),它具有私有数据成员是:学号姓名学、外语和计算机课程成绩要求能实现求三成绩平均成绩,并能设置和显示学生信息 (类声明和成员函定义分离)。设计一个友元函,按照成绩从高到低的顺序输出姓名学号成绩信息。 3、实现雇员管理,类Employee需存储雇员的姓名。这种信息对于所有雇员(包括Employee的派生类的雇员)是很普遍的。现在假设从雇员类Employee派生出了小时工类HourlyWorker、计件工类PieceWorker、老板类Boss和销售员类CommissionWorker。小时工每周工作40小时,超过40小时部分的报酬是平时的1.5倍;计件工是按生产的工作件计算报酬的,每件的报酬是固定的,假设他只生成一种类型的工件,因而类PieceWorker的private数据成员是生产的工件量和每件的报酬;老板每周有固定的薪水;销售员每周有小部分固定的基本工资加上其每周销售额的固定百分比。设计和规划该类体系,并分别产生每个基类及派生类对象,并显示该员工的工资。 4、约瑟夫生死者游戏 每30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人起,依次报到第9人,便把他投入大海中,然后再从他的下一个人起,到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问哪些位置是将是被扔下大海的位置。 5、求二叉树上结点的路径 要求在采用链式存储结构存储的二叉树上,以bt指向根结点,p指向任一给定的结点,编程实现求出从根节点到给定结点之间的路径。 6、图的操作 (1)写出将一个无向图的邻接矩阵转换成邻接表的算法 (2)设计一个算法,判断无向图G是否连通。若连通则返回1; 返回0。 7、内部排序算法的性能分析 要求:(1)对冒泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较; (2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标有:关键字参加比较次和关键字的移动次(关键字交换记为3次移动); (3)输出各种算法的排序结果和比较结果。 8.2、通讯录管理系统 编程实现通讯录管理系统,要求该系统能够完成通讯信息的建立、查询、插入、删除等基本功能。程序运行后至少给出下面7个菜单项的选择并分别实现其功能: 0、 通讯录的建立 1、通讯录信息输出 2、 通讯者结点信息的删除 3、通讯者结点信息的查询 4、 通讯者结点信息的插入 5、通讯录信息更改 6、 退出通讯录管理系统 设计的任务要求,通讯录中每个学生的基本信息应包括姓名、地址、电话等基本信息,采用链表存储结构。(复习c语言结构体和链表知识)
好的,针对您的问题,以下是代码实现: ```python # 读入十个学生数据 students = [] for i in range(10): student = {} student['学号'] = input('请输入学号:') student['姓名'] = input('请输入姓名:') student['成绩1'] = float(input('请输入第一课程成绩:')) student['成绩2'] = float(input('请输入第二课程成绩:')) student['成绩3'] = float(input('请输入第三课程成绩:')) students.append(student) # 计算三课程平均成绩 average_scores = {'成绩1': 0, '成绩2': 0, '成绩3': 0} for student in students: average_scores['成绩1'] += student['成绩1'] average_scores['成绩2'] += student['成绩2'] average_scores['成绩3'] += student['成绩3'] average_scores['成绩1'] /= 10 average_scores['成绩2'] /= 10 average_scores['成绩3'] /= 10 print('三课程平均成绩分别为:成绩1:{:.2f},成绩2:{:.2f},成绩3:{:.2f}'.format(average_scores['成绩1'], average_scores['成绩2'], average_scores['成绩3'])) # 找出个人平均分最高学生数据 max_average_score = 0 max_average_score_student = {} for student in students: average_score = (student['成绩1'] + student['成绩2'] + student['成绩3']) / 3 if average_score > max_average_score: max_average_score = average_score max_average_score_student = student print('个人平均分最高学生数据为:学号:{},姓名:{},成绩1:{:.2f},成绩2:{:.2f},成绩3:{:.2f}'.format(max_average_score_student['学号'], max_average_score_student['姓名'], max_average_score_student['成绩1'], max_average_score_student['成绩2'], max_average_score_student['成绩3'])) ``` 注意,这里使用了一个字典来存储每个学生数据,其中键为学号姓名成绩1、成绩2、成绩3。同时,为了方便计算平均分,我们使用了一个字典来存储三课程成绩,最后再除以10得到平均分。而对于找出个人平均分最高学生数据,则需要遍历所有学生,计算每个学生平均分,并与当前最高平均分进行比较,找出最高分对应的学生即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值