解题思路:

注意事项:

参考代码:

#include<stdio.h>

struct Student

{

char name[20];//名字

double grade_first;//第一科成绩

double grade_second;//第二科成绩

double grade_third;//第三科成绩

};


int main()

{

struct Student student[100];//声明

int num=0;//人数

int i;

char arr[100];//学号,如果写在结构体里面,就无法弄出字符了。

double first_sum=0;//第一学科总分数,兼平均分(最后算出)

double two_sum=0;//第二学科总分数,兼平均分(最后算出)

double three_sum=0;//第三学科总分数,兼平均分(最后算出)

double average[100];//每个学生的总分记录

double maxvalue=0;

int flag=0;

scanf("%d",&num);

getchar();

for(i=0;i<num;i++)

{

scanf("%c %s %lf %lf %lf",&arr[i],student[i].name,&student[i].grade_first,&student[i].grade_second,&student[i].grade_third);//输入数据

getchar();

}

for(i=0;i<num;i++)

{

first_sum=first_sum+student[i].grade_first;//算第一科总分

two_sum=two_sum+student[i].grade_second;//算第二科总分

three_sum=three_sum+student[i].grade_third;//算第三科总分

average[i]=student[i].grade_first+student[i].grade_second+student[i].grade_third;//记录每个人三科成绩总分

if(i==num-1)

{

first_sum=(double)(first_sum/num);//第一科算平均,

two_sum =(double)(two_sum/num);//第二科算平均

three_sum=(double)(three_sum/num);//第三科算平均

}

}

for(i=0;i<num;i++)

{

if(average[i]>=maxvalue)

{

maxvalue=average[i];//获得成绩最高的学生

flag=i;

}

}

printf("%.0f %.0f %.0f\n", first_sum,two_sum,three_sum);//输出平均值

printf("%c %s %.0lf %.0lf %.0lf\n",arr[flag],student[flag].name,student[flag].grade_first,student[flag].grade_second,student[flag].grade_third);

return 0;

}


点赞(2)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论