博客
关于我
程序设计入门14 结构体
阅读量:391 次
发布时间:2019-03-05

本文共 2027 字,大约阅读时间需要 6 分钟。

以下是解决该问题的优化代码:

    学生数据处理    

问题描述

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

输入

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

输出

第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。

第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。

样例输入

101 AAA 80 81 82102 BBB 83 84 85103 CCC 86 87 88104 DDD 89 90 91105 EEE 92 93 94106 FFF 80 90 100107 GGG 85 90 95108 HHH 80 85 90109 III 90 91 92110 JJJ 91 88 87

样例输出

86.60 87.90 90.40105 EEE 92 93 94

代码实现

#include 
#include
using namespace std;struct Student { int num; char name[20]; int score1, score2, score3;};void readStudent(struct Student* stu) { scanf("%d", &stu->num); scanf("%s", stu->name); scanf("%d", &stu->score1); scanf("%d", &stu->score2); scanf("%d", &stu->score3);}int main() { struct Student stu[10]; for (int i = 0; i < 10; ++i) { readStudent(stu + i); } // 计算总平均成绩 double sum1 = 0, sum2 = 0, sum3 = 0; for (int i = 0; i < 10; ++i) { sum1 += stu[i].score1; sum2 += stu[i].score2; sum3 += stu[i].score3; } double avg1 = sum1 / 10; double avg2 = sum2 / 10; double avg3 = sum3 / 10; printf("%.2f %.2f %.2f\n", avg1, avg2, avg3); // 找出平均分最高的学生 int max_avg = -1; int max_index = 0; for (int i = 0; i < 10; ++i) { int total = stu[i].score1 + stu[i].score2 + stu[i].score3; double avg = static_cast
(total) / 3.0; if (avg > max_avg) { max_avg = avg; max_index = i; } } struct Student max_student = stu[max_index]; printf("%d %s %d %d %d\n", max_student.num, max_student.name, max_student.score1, max_student.score2, max_student.score3); return 0;}

思想:通过定义结构体存储学生信息,逐行读取输入数据并存储。计算各科目总成绩,求出总平均成绩。再遍历学生数据,计算每个学生的平均分,找出最高分的学生数据。

转载地址:http://calwz.baihongyu.com/

你可能感兴趣的文章
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx反向代理
查看>>
Nginx反向代理
查看>>
nginx反向代理、文件批量改名及统计ip访问量等精髓总结
查看>>
Nginx反向代理与正向代理配置
查看>>
Nginx反向代理及负载均衡实现过程部署
查看>>
Nginx反向代理是什么意思?如何配置Nginx反向代理?
查看>>
nginx反向代理解决跨域问题,使本地调试更方便
查看>>
Nginx反向代理配置
查看>>
Nginx启动SSL功能,并进行功能优化,你看这个就足够了
查看>>
nginx启动脚本
查看>>
Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
查看>>
Nginx在Windows下载安装启动与配置前后端请求代理
查看>>
Nginx多域名,多证书,多服务配置,实用版
查看>>