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()是什么,写入完成之后,关闭文件
解决方案:
首先,定义一个结构体类型,用来存储学生的信息,包括姓名,三门课程的成绩和平均成绩。
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()函数用来关闭文件。