C语言有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总、平均成绩,并计算出每人的平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stu.txt中。
时间: 2023-12-15 10:14:35 浏览: 189
C语言程序设计-有一个一维数组score,内放10个学生的成绩,用一个函数来求平均成绩;
5星 · 资源好评率100%
好的,这是一个关于C语言的问题,我可以给您提供一段代码来实现这个功能。请注意,以下代码仅供参考,您可以根据自己的需要进行修改和优化。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 10 // 最大学生数
#define MAX_NAME_LEN 20 // 姓名最大长度
// 学生结构体
typedef struct student {
int id; // 学号
char name[MAX_NAME_LEN]; // 姓名
float score[3]; // 3门课的成绩
float average_score; // 平均成绩
} Student;
// 计算总分和平均分
void calc_score(Student *stu, int num) {
for (int i = 0; i < num; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += stu[i].score[j];
}
stu[i].average_score = sum / 3;
}
}
int main() {
Student stu[MAX_STUDENT_NUM]; // 学生数组
int num; // 学生数
printf("请输入学生数(不超过%d):", MAX_STUDENT_NUM);
scanf("%d", &num);
// 输入学生信息
for (int i = 0; i < num; i++) {
printf("请输入第%d个学生的学号、姓名和3门课的成绩(用空格隔开):", i + 1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
// 计算总分和平均分
calc_score(stu, num);
// 打印每个学生的平均成绩
printf("每个学生的平均成绩如下:\n");
for (int i = 0; i < num; i++) {
printf("%d %s %.2f\n", stu[i].id, stu[i].name, stu[i].average_score);
}
// 存储每个学生的信息到文件中
FILE *fp = fopen("stu.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
fprintf(fp, "学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (int i = 0; i < num; i++) {
fprintf(fp, "%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average_score);
}
fclose(fp);
return 0;
}
```
这段代码可以实现您所需的功能:从键盘输入学生信息,计算每个学生的平均成绩,打印每个学生的平均成绩,并将每个学生的信息存储到磁盘文件中。
阅读全文