假设有5个学生,每个学生有3门课成绩,从键盘输入以上数据(包括学生号,姓名,3门课分数),计算出平均分数,将原有的数据和计算出的平均分数存放在磁盘文件“stud”中。用c语言
时间: 2024-01-01 17:05:07 浏览: 89
有5个学生,么个学生有三门课成绩,从键盘键入以上数据,存放在文件中
5星 · 资源好评率100%
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define STUDENT_NUM 5
#define COURSE_NUM 3
typedef struct {
int id;
char name[20];
int scores[COURSE_NUM];
float avg_score;
} Student;
int main() {
Student students[STUDENT_NUM];
// 从键盘输入数据
for (int i = 0; i < STUDENT_NUM; i++) {
printf("请输入第%d个学生的学号、姓名和3门课成绩,用空格分隔:", i+1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name,
&students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
}
// 计算平均分数
for (int i = 0; i < STUDENT_NUM; i++) {
int total_score = 0;
for (int j = 0; j < COURSE_NUM; j++) {
total_score += students[i].scores[j];
}
students[i].avg_score = (float) total_score / COURSE_NUM;
}
// 将数据存入文件
FILE *fp;
fp = fopen("stud", "w");
if (fp == NULL) {
printf("无法打开文件!");
exit(1);
}
for (int i = 0; i < STUDENT_NUM; i++) {
fprintf(fp, "%d %s %d %d %d %.2f\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].avg_score);
}
fclose(fp);
printf("数据已存入文件!");
return 0;
}
```
代码解释:
1. 定义了一个结构体 `Student`,表示一个学生,包含学号、姓名、3门课成绩和平均分数。
2. 从键盘输入数据,用循环输入STUDENT_NUM个学生的数据。
3. 计算每个学生的平均分数,用循环计算每个学生的总分并除以COURSE_NUM。
4. 将数据存入文件,用 fopen() 打开文件,用 fprintf() 写入数据。文件格式为:学号 姓名 3门课成绩 平均分数。
5. 关闭文件,完成存储。
注意:文件名为“stud”,需要在当前目录下创建一个空文件,否则打开文件会失败。
阅读全文