有三个学生,三门课程,计算出平均成绩把原有数据和计算出的平均分数存在磁盘文件stud中

img

img


stu[3]是什么
FILE*fp是什么
sum+=stu[i].score[j]是什么
stu[i].avr=sum/3.0是什么
fp=fopen()是什么
fclose()是什么
求解答

stu[3]是表示3个学生
FILE*fp这是文件指针
sum+=stu[i].score[j]表示sum累加第i个学生的第j门成绩
stu[i].avr=sum/3.0sum是三门成绩之和,平均成绩就是它除以3.0(之所以不是3,是因为那样是整除,精度低)
fp=fopen()是打开文件,传给文件指针,接下来可以写入文件
fclose()是什么,写入完成之后,关闭文件

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    解决方案:

    首先,定义一个结构体类型,用来存储学生的信息,包括姓名,三门课程的成绩和平均成绩。

    typedef struct {
        char name[20];
        float score[3];
        float avr;
    } student;
    

    然后,定义一个数组stu,用来存储三个学生的信息。

    student stu[3];
    

    接下来,读入每个学生的姓名和三门课程的成绩,并计算每个学生的平均成绩。

    for (int i = 0; i < 3; i++) {
        printf("Please input student's name: ");
        scanf("%s", stu[i].name);
        printf("Please input %s's three scores: ", stu[i].name);
        for (int j = 0; j < 3; j++) {
            scanf("%f", &stu[i].score[j]);
            stu[i].avr += stu[i].score[j];
        }
        stu[i].avr /= 3.0;
    }
    

    然后,打开磁盘文件stud,写入每个学生的信息和平均成绩。

    FILE* fp = fopen("stud", "w");
    if (fp == NULL) {
        printf("Open file failed!\n");
        return -1;
    }
    for (int i = 0; i < 3; i++) {
        fprintf(fp, "Name: %s\n", stu[i].name);
        fprintf(fp, "Scores: %.2f %.2f %.2f\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
        fprintf(fp, "Average score: %.2f\n", stu[i].avr);
        fprintf(fp, "\n");
    }
    fclose(fp);
    

    stu[3]是一个数组,用来存储三个学生的信息,可以定义为结构体类型student的数组。

    FILE* fp是一个指向文件的指针,用来打开和关闭磁盘文件。

    sum+=stu[i].score[j]是一个累加器,用来累加每个学生每门课程的成绩,以便计算平均成绩。

    stu[i].avr=sum/3.0是计算每个学生的平均成绩。

    fopen()函数用来打开文件,返回一个指向文件的指针。该函数有两个参数,第一个参数是文件名,第二个参数是打开文件的方式(如“r”为只读方式,“w”为写方式)。

    fclose()函数用来关闭文件。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^