假设有5个学生,每个学生有3门课成绩,从键盘输入以上数据(包括学生号,姓名,3门课分数),计算出平均分数,将原有的数据和计算出的平均分数存放在磁盘文件“stud”中。写出C语言的代码
时间: 2024-01-01 20:05:42 浏览: 64
好的,以下是实现你要求的C语言代码:
```c
#include <stdio.h>
#define N 5 // 学生数
#define M 3 // 课程数
// 学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
float score[M]; // 分数
float avg; // 平均分
} Student;
int main() {
Student students[N]; // 存放学生数据的数组
FILE *fp; // 文件指针
// 从键盘输入学生数据
printf("请输入%d个学生的数据:\n", N);
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的学号、姓名和%d门课成绩:\n", i + 1, M);
scanf("%d %s", &students[i].id, students[i].name);
for (int j = 0; j < M; j++) {
scanf("%f", &students[i].score[j]);
}
}
// 计算平均分
for (int i = 0; i < N; i++) {
float sum = 0;
for (int j = 0; j < M; j++) {
sum += students[i].score[j];
}
students[i].avg = sum / M;
}
// 将学生数据和平均分存入文件
fp = fopen("stud", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return 1;
}
fprintf(fp, "学号\t姓名\t");
for (int i = 1; i <= M; i++) {
fprintf(fp, "课程%d\t", i);
}
fprintf(fp, "平均分\n");
for (int i = 0; i < N; i++) {
fprintf(fp, "%d\t%s\t", students[i].id, students[i].name);
for (int j = 0; j < M; j++) {
fprintf(fp, "%.1f\t", students[i].score[j]);
}
fprintf(fp, "%.1f\n", students[i].avg);
}
fclose(fp);
printf("学生数据已成功存入文件!\n");
return 0;
}
```
这段代码可以从键盘输入5个学生的学号、姓名和3门课程成绩,然后计算每个学生的平均分,最后将学生数据和平均分存入文件“stud”中。
阅读全文