原题链接:[编程入门]结构体之成绩统计2
解题思路:
通过结构体和数组来实现。首先通过结构体数组计算出总成绩,然后根据学生个数,输出每课的平均成绩。然后根据数组比较的方式,找出学生成绩和最大的那个数,及它的下标,通过下标输出成绩最好学生的信息。
注意事项:
数组与结构体数组的联合使用;
参考代码:
#include<stdio.h> struct xs//结构体 { char xh[50]; char xm[50]; int a,b,c; }; int main() { struct xs A[100];//结构体数组 int y=0;//用来作数组的起始下标 int N; int i; int p=0,o=0,m=0;//看作空容器,分别用来计算N个a课的总成绩、N个b课的总成绩、N个c课的总成绩 int B[100];//看作空容器,用来计算数3课成绩; scanf("%d",&N);//输入学生数N; for(i=0;i<N;i++)//根据N个学生数,输入结构体数组的数据 { scanf("%s%s%d%d%d",&A[i].xh,&A[i].xm,&A[i].a,&A[i].b,&A[i].c); } for(i=0;i<N;i++)//遍历,分别计算出N个a课的总成绩、N个b课的总成绩、N个c课的总成绩和每个学生的a+b+c课的总成绩; { p=p+A[i].a; o=o+A[i].b; m=m+A[i].c; B[i]=A[i].a+A[i].b+A[i].c; } for(i=0;i<N;i++)//通过B[N]个数组与B[0]比较,找出最大数也就是成绩最大数的,进而找出这个最大数的下标; { if(B[i]>B[y]) { y=i;//最大数的下标,找到了; } } printf("%d %d %d\n",p/N,o/N,m/N);//输出平均成绩; printf("%s %s %d %d %d\n",A[y].xh,A[y].xm,A[y].a,A[y].b,A[y].c);//输出成绩最好学生的数据; return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复