//练习:有n个结构体变量,内含学生学号、姓名和3门课程成绩
//要求输出平均成绩最高的学生成绩
#include<stdio.h>
#define N 3 //3门课程成绩
typedef struct Student{
int num; //学号
char name[20]; //姓名
double score[N]; //3门课成绩
double aver; //平均成绩
}STU; //结构体别名,代表结构体类型,不是变量
int main(){
//函数声明
void input(int,STU);
void max(int,STU*); //结构体指针
int n; //n个同学
scanf("%d",&n);
STU stu[n];
input(n,stu[n]);
STU *p=stu;
max(n,p);
return 0;
}
//自定义子函数
//输入学生信息
void input(int x,STU stu[]){
printf("请输入%d个学生的个人信息:\n",x);
for(int i=1;i<=x;i++){
scanf("%d %c %lf %lf %lf",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; //计算平均成绩
}
}
//计算学生的最高平均分void max(int x,STU stu[]){
void Print(int,STU);
//记录下标
int flag=0;
for(int i=0;i<x;i++){
if(stu[flag].aver>stu[i].aver){
flag=i;
}
}
Print(flag,stu[x]);
}
//输出的函数
void Print(int flag,STU stu[]){
printf("\n平均成绩最高的是:\n");
printf("学号:%d,姓名:%s\n 3门课程的成绩是:%lf %lf %lf\n 平均成绩是:%lf",
stu[flag].num,stu[flag].num,stu[flag].name,stu[flag].score[0],stu[flag].score[1],stu[flag].score[2],stu[flag].aver);
}

被折叠的 条评论
为什么被折叠?



