有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出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>
struct Student{
    int num;
    char name[20];
    int score[3];
};
//输入
void input(struct Student stu[]){
    for(int i=0;i<10;i++){
        scanf("%d",&stu[i].num);
        scanf("%s",stu[i].name);
        for(int j=0;j<3;j++){
            scanf("%d",&stu[i].score[j]);
        }
    }
}
//输出要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
void print(struct Student stu[]){
    double sum[3],sum2[10]={0};
    for(int j=0;j<3;j++){
     sum[j]=0;
    for(int i=0;i<10;i++){

        sum[j]=sum[j]+stu[i].score[j];


    }
    printf("%.2f ",sum[j]/10);
    }
    printf("\n");
    for(int i=0;i<10;i++){
    for(int j=0;j<3;j++){
        sum2[i]=sum2[i]+stu[i].score[j];
    }
    }
    int max=sum2[0],q;
    for(int i=1;i<10;i++){
        if(max<sum2[i]){
                max=sum2[i];
                q=i;
        }
    }
    printf("%d %s %d %d %d\n",stu[q].num,stu[q].name,stu[q].score[0],stu[q].score[1],stu[q].score[2]);
}


int main(){
    struct Student stu[10];
    input(stu);
    print(stu);
    return 0;
    }





  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程设计题目 ① 基本要求题目:矩阵乘法。 ② 综合训练:学生成绩管理系统 二、设计要求 矩阵乘法:编写一个函数实现矩阵A(2行3列)与矩阵B 相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。 学生成绩管理:(结构体数组、函数、指针、算法、流程结构及文件等的综合应用) 程序说明:有N个学生每个学生数据包含学号(不重复)、姓名、三门课成绩平均成绩,试设计一学生成绩管理系统,使之能提供以下功能: (1)主菜单 (2)各菜单项功能 ① 成绩录入:输入学生学号姓名及三门课成绩; ② 成绩查询:(至少一种查询方式)。  按学号查询学生记录。  查询不及格学生的记录。 ③成绩统计:  计算学生平均分;  根据学生平均分高低,对学生数据进行排序后输出;  对学生单科成绩排序,输出学生姓名与该科成绩; ④退出系统:退出整个系统(即主菜单)。 (3)结构体数组: #define N 30struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N];  /* 定义结构体数组,存贮多个学生的记录*/ 三、数据结构设计描述 系统功能描述 1能够输入学生学号姓名、三科成绩并且计算出平均成绩。 2能够以表格的形式输出学生记录 3能够按照学生三科的平均成绩进行排序 4能够按照学生的单科成绩进行排序 5能够按照学号查询学生记录 6往表中插入学生记录 7从表中删除学生记录 8存储记录到文件中 9从文件中读取记录 10退出 数据字典 1数据流条目 数据流名称:全部记录 别名:无 简述:最新更新后所有关于学生成绩的记录 来源:数据库 去向:加工“记录筛选” 数据流量:不限 组成:学号+姓名+SC1+SC2+SC3+平均成绩 数据存储条 数据存储名称:学生成绩记录 别名:无 简述:存放学生所有可供查询的信息 组成:学号+姓名+SC1+SC2+SC3+平均成绩 组织方式:索引文件,以学学号为关键字 查询要求要求能立即查询 2数据项条目 数据项名称:学号 别名:无 简述:所有学校学生学号 类型:字符串 3加工条目 加工名:更改的记录 激发条件:学生成绩记录被改动 优先级:普通 输入:新记录 输出:更新数据数据未改动 加工逻辑:根据现有学生成绩记录 if 新记录旧记录 then 更新数据 else 数据未改动 endif 设计测试流程 1、进入界面 2、输入选项0,回车; 按提示输入数据 3、回到主菜单; 输入选项8,回车; 输入文件名:data,回车; 出现成功提示,则读入文件操作成功。 4、回到主菜单,输入1,回车 每10个暂停显示数据 5、回到主菜单,输入2,回车 出现排序成功信息。 6、回到主菜单,输入3,回车 出现排序成功信息。 7、回到主菜单,输入5,回车 按提示插入一组数据 8、回到主菜单,输入6,回车 按提示输入姓名,删除数据 出现删除成功的信息 9、回到主菜单,输入4,回车 输入学号进行查询 10、回到主菜单,输入1,回车 出现统计信息 11、回到主菜单,输入7,回车 输入result,回车 出现成功写入文件的信息 12、回到主菜单,输入9,回车退出系统
1、问题描述  学生信息包括学号姓名、性别、年龄、班级等信息。  小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。  中学生除了包括学生所有信息外,还包括地理、历史成绩、家庭住址等信息。 大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。  2、功能要求  (1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。  (2)查询功能:可根据学号姓名信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。  (3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。  (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。  (5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。  (6)统计功能:能根据多种参数进行统计。能统计学生人数、按性别统计、按年龄统计等。  (7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。  (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用
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、付费专栏及课程。

余额充值