用c语言写:有N个学生,每个学生有3门课的成绩,从键盘输入学生的信息(包括学号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.dat”(二进制文件)中;再读盘并以表格形式在显示器上输出。
时间: 2024-01-01 21:05:56 浏览: 92
好的,下面是用C语言实现这个功能的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 3 // 学生数
#define M 3 // 科目数
typedef struct {
int num; // 学号
char name[20]; // 姓名
float score[M]; // 成绩
float avg; // 平均分
} Student;
int main() {
Student stu[N];
FILE *fp;
int i, j;
// 输入学生信息
printf("请输入%d个学生的信息:\n", N);
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的学号、姓名和三门课成绩:\n", i + 1);
scanf("%d%s%f%f%f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / M;
}
// 写入文件
if ((fp = fopen("stud.dat", "wb")) == NULL) {
printf("无法打开文件!\n");
exit(0);
}
fwrite(stu, sizeof(Student), N, fp);
fclose(fp);
printf("已将学生信息写入文件stud.dat中!\n");
// 从文件中读取数据并输出
if ((fp = fopen("stud.dat", "rb")) == NULL) {
printf("无法打开文件!\n");
exit(0);
}
fread(stu, sizeof(Student), N, fp);
fclose(fp);
printf("从文件中读取的学生信息如下:\n");
printf("学号\t姓名\t科目1\t科目2\t科目3\t平均分\n");
for (i = 0; i < N; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg);
}
return 0;
}
```
代码解释:
1. 定义了一个`Student`结构体,包括学号、姓名、三门课成绩和平均分四个成员变量;
2. 在`main()`函数中,先输入学生信息并计算平均分,然后将数据写入文件`stud.dat`中,最后从文件中读取数据并输出;
3. 写入文件的操作使用了`fwrite()`函数,读取文件的操作使用了`fread()`函数;
4. 输出表格形式的数据使用了`printf()`函数,格式化输出每个学生的信息。
注意事项:
1. `fwrite()`和`fread()`函数的第二个参数是每个数据块的大小,这里设为了`sizeof(Student)`,即一个`Student`结构体的大小;
2. 表格形式的输出使用了制表符`\t`来分隔每个数据,输出时需要保持对齐;
3. 本代码只是一个简单的示例,实际应用中需要进行错误处理和数据校验等操作。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)