编写程序,计算平均成绩,将原有数据和平均分存放在stuinfo.txt文件中

编写程序,有5名学生,每名学生有3门课的成绩,从键盘输入数据(包括学号、姓名、数学成绩、C语言成绩、英语成绩),计算平均成绩,将原有数据和平均分存放在stuinfo.txt文件中。
要求:
(1)编写函数计算学生平均成绩。
(2)在stuinfo.txt文件中保存每名学生的学号、姓名、3门课成绩和平均成绩。

可以定义一个结构存储学生的各项信息,然后定义一个学生信息结构数组来存储输入的5个学生的信息输入,再计算平均成绩写入文件即可,代码如下:


#include <stdio.h>
struct stu{
    
    char sid[20]; // 学号 
    char name[20];  //姓名 
    int math;  // 数学成绩 
    int cscore;  // C语言成绩 
    int english; // 英语成绩 
    double avg; // 平均成绩 
    
}; 

// 计算n个 学生的平均成绩的函数 
void countAvg(struct stu * stus,int n){
    
    int i;
    for(i=0;i<n;i++){
        stus[i].avg=(stus[i].math+stus[i].cscore+stus[i].english)/3.0;
    }
    
}

int main(void){
    
    int i;
    struct stu stus[N];
    FILE* fp = fopen("stuinfo.txt","w");
    if(fp==NULL){
        printf("文件打开或创建失败!\n");
        return 0;
    }
    // 获取N个学生的信息输入,并计算平均成绩和写入信息到文件 
    for(i=0;i<5;i++){
        printf("请输入第%d个学生的学号:",i+1);
        scanf("%s",stus[i].sid);
        printf("请输入与第%d个学生的姓名:",i+1);
        scanf("%s",stus[i].name);
        printf("请输入第%d个学生的数学成绩:",i+1);
        scanf("%d",&stus[i].math);
        printf("请输入第%d个学生的C语言成绩:",i+1);
        scanf("%d",&stus[i].cscore);
        printf("请输入第%d个学生的英语成绩:",i+1);
        scanf("%d",&stus[i].english);
        printf("\n");
        
        countAvg(stus,N);
        fprintf(fp,"%s %s %d %d %d %f\n",stus[i].sid,stus[i].name,
        stus[i].math,stus[i].cscore,stus[i].english,stus[i].avg);
    }    
    fclose(fp);
    printf("文件写入成功!\n");
    
    return 0;
    
}

img