关于#c语言#的问题:从键盘输入5个学生数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入5个学生数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
要求用一个input函数输入5个学生数据,用一个average函数求总平均分,用max函数找出最高分学生数据。总平均分和最高分的学生的数据都在主函数中输出。

可以先使用结构定义学生信息的各个项目,然后使用函数来分别获取5个学生的信息,以及计算总平均分,和寻找最高分学生即可,代码如下:

参考链接:
c语言怎么定义函数

#include <stdio.h>

//存储学生信息的结构 
struct stu{
    
    char sid[12];  //学号 
    char name[12]; //姓名 
    double chinese; //语文成绩 
    double math;   //数学成绩 
    double english;  //英语成绩 
    double avg;      //三科成绩的平均分 
};
 
 //  https://baijiahao.baidu.com/s?id=1725609128115508518
void input(struct stu* pstu,int n){ //从输入获取5个学生的信息 
    
    int i;
    for(i=0;i<5;i++){
        printf("\n请输入第%d个学生的学号:",i+1); 
        scanf("%s",pstu[i].sid);
        printf("请输入第%d个学生的姓名:",i+1); 
        scanf("%s",pstu[i].name);
        printf("请输入第%d个学生的语文成绩:",i+1); 
        scanf("%lf",&pstu[i].chinese);
        printf("请输入第%d个学生的数学成绩:",i+1); 
        scanf("%lf",&pstu[i].math);
        printf("请输入第%d个学生的外语成绩:",i+1); 
        scanf("%lf",&pstu[i].english);
    }
    
    
} 

//计算总平均分 
double average(struct stu* pstu,int n){
    
    double sum=0; //存储5个学生3门成绩的所有总分 
    
    int i;
    for(i=0;i<5;i++){
        
        sum+=pstu[i].chinese+pstu[i].math+pstu[i].english;
//        
//        printf("姓名:%s\n学号:%s\n语文成绩:%f\n数学成绩:%f\n英语成绩:%f\n平均分:%f\n",
//        pstu[i].name,pstu[i].sid,pstu[i].chinese,pstu[i].math,pstu[i].english,pstu[i].avg);        
         
    //    printf("i=%d,sum=%lf\n",i,sum);
    }
    
    return sum/15.0;  //总平均分除以学生的个数5和学科的数量3的乘积 
}

//寻找最高分数学的下标 
int  max(struct stu * pstu,int n){
    
    double sum=0,m=0;
    int index=-1;
    
    int i;
    for(i=0;i<5;i++){            
        sum=pstu[i].chinese+pstu[i].math+pstu[i].english;
        pstu[i].avg=sum/3.0; //计算每个学生三科成绩的平均分 
        if(sum>m){
            m=sum;
            index=i;    
        }
    }
    
    return index;
}

int main(void){
    
    struct stu allStu[5];
    
    input(allStu,5);
    
    printf("\n总平均分是%f。\n",average(allStu,5));
    
    printf("\n最高分学生信息:\n");
    int i= max(allStu,5);
    printf("姓名:%s\n学号:%s\n语文成绩:%f\n数学成绩:%f\n英语成绩:%f\n平均分:%f\n",
    allStu[i].name,allStu[i].sid,allStu[i].chinese,allStu[i].math,allStu[i].english,allStu[i].avg);
    
    return 0;
}

img