
程序设计入门14 结构体
发布日期:2021-05-08 12:50:52
浏览次数:10
分类:精选文章
本文共 2372 字,大约阅读时间需要 7 分钟。
题目描述
有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
样例输出
85.60 87.90 90.40 105 EEE 92 93 94
一,我的代码
#includeusing namespace std;struct studentInfo{ int num; char name[19]; int score1; int score2; int score3;}stu[10];void max_stu(studentInfo *a){ studentInfo *b=a; studentInfo *max = a; for(;b score1+b->score2+b->score3)>(max->score1+max->score2+max->score3)) max=b; } printf("%d %s %d %d %d\n",max->num,max->name,max->score1,max->score2,max->score3);}int main(){ for(int i=0;i<10;i++){ scanf("%d",&stu[i].num); scanf("%s",stu[i].name); scanf("%d%d%d",&stu[i].score1,&stu[i].score2,&stu[i].score3); } int sum_score1=0,sum_score2=0,sum_score3=0; for(int i=0;i<10;i++){ sum_score1+=stu[i].score1; sum_score2+=stu[i].score2; sum_score3+=stu[i].score3; } printf("%.2f %.2f %.2f\n",double(sum_score1)/10,double(sum_score2)/10,double(sum_score3)/10); max_stu(stu); return 0;}
思想:对于个人的比较功能,首先在子函数中形参是指针,使用的是结构体数组的地址,增加了难度,主要是为了查找下标。
二,简单代码
#includestruct 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
思想:首先要学习对模块的划分,使主函数非常简单,可圈可点的是print()子函数里两个关键数组sum[10]和sum2[3],使得比较变成了一维数组的简单比较,另外是形参是数组,当然也可以是指针,看个人喜好。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月13日 14时42分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中国石油大学《计算机文化基础》在线考试(客观题)
2021-05-08
机器学习(numpy/matplotlib/scipy)学习笔记
2021-05-08
codeforces The Eternal Immortality 题解
2021-05-08
蓝桥杯 历届试题 幸运数 (堆+DFS)
2021-05-08
微信js-sdk使用简述(分享,扫码功能等)
2021-05-08
selenium 的介绍和爬取 jd数据
2021-05-08
【分享-一键在线抠图】在线免费去除图片背景
2021-05-08
layui表格checkbox选择全选样式及功能
2021-05-08
mxsrvs支持thinkphp3.2伪静态
2021-05-08
mui HTML5 plus 下载文件
2021-05-08
环信SDK 踩坑记webIM篇(一)
2021-05-08
通信基础知识
2021-05-08
DSP开发板准备
2021-05-08
测试基本
2021-05-08
5.redo undo
2021-05-08
《JVM的内存》
2021-05-08
c++中istringstream及ostringstream超详细说明
2021-05-08
c++中ifstream及ofstream超详细说明
2021-05-08