编写一个c语言程序:有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
时间: 2024-01-04 09:01:57 浏览: 84
好的,下面是实现这个功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 5
#define MAX_NAME_LEN 20
typedef struct {
int id;
char name[MAX_NAME_LEN];
int grades[3];
float avg_grade;
} Student;
int main() {
Student students[MAX_STUDENTS];
// 从键盘读入学生数据
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("Input student data for student %d:\n", i + 1);
printf("ID: ");
scanf("%d", &students[i].id);
printf("Name: ");
scanf("%s", students[i].name);
printf("Grades for 3 courses: ");
scanf("%d %d %d", &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
// 计算平均成绩
students[i].avg_grade = (float)(students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3;
}
// 将数据写入文件
FILE* fp = fopen("stud.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
for (int i = 0; i < MAX_STUDENTS; i++) {
fprintf(fp, "ID: %d, Name: %s\n", students[i].id, students[i].name);
fprintf(fp, "Grades: %d %d %d, Avg grade: %.2f\n", students[i].grades[0], students[i].grades[1], students[i].grades[2], students[i].avg_grade);
}
fclose(fp);
printf("Data saved to file stud.txt.\n");
return 0;
}
```
这个程序定义了一个 `Student` 结构体,包含学生的学号、姓名、3门课程的成绩和平均成绩。然后,从键盘读入每个学生的数据,计算平均成绩,并将所有数据写入文件 `"stud.txt"` 中。
注意:这里没有进行错误处理,如文件无法打开等情况。在实际开发中,需要添加相应的错误处理代码。
阅读全文