解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论