计算学生总成绩和平均分

有N个学生,每个学生的数据包括学号、姓名、性别、三门课程的成绩。要求在主函数中输入数据,函数count()计算每个学生的总分和平均分,并输出各项数据,每一个学生输出后换行。(提示:定义结构体类型时,不仅要有三门课程的成绩,还要有总分和平均分;在调用count()函数时,函数的参数可以是结构体数组也可以是结构体指针)。定义符号常量N为4。

一个实现,供参考:

#include <stdio.h>  //提供printf函数原型 
#define N 4
struct stu{  //学生信息结构
    int id;  //学号 
    char name[20]; //姓名 
    char sex[5];  //性别
    //三门课程的成绩 
    float chinese;
    float math;
    float english; 
    float totalScore;
    float avgScore;
};

void count (struct stu * scores){
     
    
    int i;
    for(i=0;i<N;i++){  //计算n个学生的平均成绩 
        scores[i].totalScore=(float)((scores[i].chinese+scores[i].math+scores[i].english)); //计算每个学生总分 
        scores[i].avgScore=(float)(scores[i].totalScore/3);  //计算每个学生平均分 
    }
    

} 

int main(void){
    
    struct stu s[N];  //定义存放四个学生信息的结构数组 
    int i=0;
    //获取学生信息输入 
    while(i<N){
        printf("请输入第%d个学生的信息(学号,姓名,性别,语文成绩,数学成绩,英语成绩):\n",i+1);
        scanf("%d%s%s%f%f%f",&s[i].id,s[i].name,s[i].sex,&s[i].chinese,&s[i].math,&s[i].english);
        i++;
        
    }
    
    count(s); //调用函数count计算每个学生的总分和平均分 
    
    //打印平局成绩 
    i=0;
    //下面printf函数里面的-(负号)代表左对齐,数组8代表数字字符占用几个字符位置,通过格式控制进行信息打印的排版 
    printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s %-8s\n","学号","姓名","性别","语文成绩","数学成绩","英语成绩","总分","平均分"); 
    //打印4个学生的消息 
    while(i<N){
        printf("%-8d %-8s %-8s %-8.1f %-8.1f %-8.1f %-8.1f %-8.1f\n",
        s[i].id,s[i].name,s[i].sex,s[i].chinese,s[i].math,s[i].english,s[i].totalScore,s[i].avgScore);
        i++;
    }
    
    return 0;
}


img