设计一个学生结构体类型student,包括学生学号no,姓名name,成绩cj(三门课),求5个学生每个学生的平均成绩,并将原有数据和计算出的平均分数存放到磁盘文件stud中。
参考GPT和自己的思路:
好的,这是一个关于C语言的问题。
首先,我们需要定义一个结构体类型,包含学号、姓名和三门课的成绩:
struct student {
int no;
char name[20];
float cj[3];
};
然后,我们需要创建5个学生的结构体变量并初始化,这里我假设学号从1开始依次递增:
struct student stu[5] = {
{1, "张三", {80, 75, 67.5}},
{2, "李四", {65, 88.5, 92}},
{3, "王五", {75, 81.5, 78}},
{4, "赵六", {90.5, 87, 89}},
{5, "钱七", {82, 89, 93}}
};
接下来,我们可以通过一个for循环计算每个学生的平均分数:
for (int i = 0; i < 5; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += stu[i].cj[j];
}
float avg = sum / 3;
printf("学号:%d,姓名:%s,平均成绩:%.1f\n", stu[i].no, stu[i].name, avg);
}
最后,我们将原有数据和计算出的平均分数存放到磁盘文件stud中:
FILE *fp = fopen("stud.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
fprintf(fp, "学号:%d,姓名:%s,成绩:%.1f,%.1f,%.1f,平均成绩:%.1f\n",
stu[i].no, stu[i].name, stu[i].cj[0], stu[i].cj[1], stu[i].cj[2], (stu[i].cj[0]+stu[i].cj[1]+stu[i].cj[2])/3);
}
fclose(fp);
以上就是一个完整的解决方案了。希望对你有所帮助!