解题思路:
注意事项:
参考代码:
#include<stdio.h>
struct transcript
{
char student_num[20];
char name[20];
int grade[3];
};//定义结构体,包含字符串和成绩数组
void input_fun(int count_0,struct transcript cell[]);//输入函数定义
void output_fun(int count_0,struct transcript cell[]);//输出函数定义
int main(void)
{
int n;
scanf("%d",&n);
struct transcript cell[n];//使用数组前,需要知道数组的大小,故要先scanf输入n
input_fun(n,cell);
output_fun(n,cell);
}
void input_fun(int count_0,struct transcript cell[])
{
int i,j;
for(i=0;i<count_0;i++){
scanf("%s %s",cell[i].student_num,cell[i].name);
for(j=0;j<3;j++){
scanf("%d",&cell[i].grade[j]);
}
}
}
void output_fun(int count_0,struct transcript cell[])
{
int grade[3];//成绩单数组
int SUM[3]={0,0,0};//单个科目总成绩初始化
int SUM_0[count_0];//个人总成绩
int i,j,p;//定义计数器
int flag;//寻找总成绩最高的标志位
int max;
//求单个科目总成绩
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i==j){
for(p=0;p<count_0;p++){
SUM[i]+=cell[p].grade[j];
}
}
}
}
//个人总成绩初始化
for(i=0;i<count_0;i++){
SUM_0[i]=0;
}
//求个人总成绩
for(i=0;i<count_0;i++){
for(j=0;j<3;j++){
SUM_0[i]+=cell[i].grade[j];
}
}
//检查结果
// for(i=0;i<count_0;i++){
// printf("%d ",SUM_0[i]);
// }
// printf("\n");
//寻找成绩最高的个人
max=SUM_0[0];
flag=0;
for(i=1;i<count_0;i++){
if(max<SUM_0[i]){
max=SUM_0[i];
flag=i;
}
}
//单个科目平均值
for(i=0;i<3;i++){
grade[i]=SUM[i]/count_0;
}
//如下均为遍历输出
for(i=0;i<3;i++){
printf("%d",grade[i]);
if(i<2){
printf(" ");
}
if(i==2){
printf("\n");
}
}
printf("%s %s %d %d %d\n",cell[flag].student_num,cell[flag].name,cell[flag].grade[0],cell[flag].grade[1],cell[flag].grade[2]);
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复