写在前面
1、基于2021级计算机类实验指导书
2、代码仅提供参考
3、如果代码不满足你的要求,请寻求其他的途径
运行环境
window11家庭版
CLion 2023.2.2
实验要求、源代码和运行结果
1、将一个实型变量f=55.56和一个整型数组a[5]的数据写到磁盘文件TEXT.dat中,然后再读回到另一个实型变量ff及另一个整型数组b[5]中。
要求:
对整型数组a[5]直接初始化方式赋值。
输出实型变量ff(精度为小数点后三位)和数组b[5]的内容。
#include <stdio.h>
int main() {
float f = 55.56;
int a[5] = {1, 2, 3, 4, 5};
// 写入数据到文件
FILE *file = fopen("TEXT.dat", "wb");
fwrite(&f, sizeof(float), 1, file);
fwrite(a, sizeof(int), 5, file);
fclose(file);
// 从文件读取数据
float ff;
int b[5];
file = fopen("TEXT.dat", "rb");
fread(&ff, sizeof(float), 1, file);
fread(b, sizeof(int), 5, file);
fclose(file);
// 输出结果
printf("读取到的实型变量ff为:%.3f\n", ff);
printf("读取到的整型数组b的内容为:");
for (int i = 0; i < 5; i++) {
printf("%d ", b[i]);
}
printf("\n");
return 0;
}
2、有五个学生,每个学生有三门课的成绩,从键盘键入以下数据(包括学号、姓名、三门课成绩),计算出平均成绩,将原有数据和平均分存放在stuinfo.tex文件中。
要求:
(1)设五名学生的学号、姓名、三门课成绩如下:
99101 Wang 83 92 67
99103 Li 67 80 90
99106 Fun 75 91 99
99110 Ling 100 50 62
99113 Yuan 55 68 71
(2)在屏幕上输出stuinfo.txt文件的内容。
#include <stdio.h>
typedef struct {
int id;
char name[20];
float scores[3];
float average;
} Student;
int main() {
Student students[5];
FILE *file;
// 输入学生信息
printf("请输入五名学生的学号、姓名和三门课成绩:\n");
for (int i = 0; i < 5; i++) {
printf("学生%d的学号:\n", i + 1);
scanf("%d", &students[i].id);
printf("学生%d的姓名:\n", i + 1);
scanf("%s", students[i].name);
printf("学生%d的第一门课成绩:\n", i + 1);
scanf("%f", &students[i].scores[0]);
printf("学生%d的第二门课成绩:\n", i + 1);
scanf("%f", &students[i].scores[1]);
printf("学生%d的第三门课成绩:\n", i + 1);
scanf("%f", &students[i].scores[2]);
}
// 计算平均成绩并写入文件
file = fopen("stuinfo.txt", "w");
for (int i = 0; i < 5; i++) {
float sum = students[i].scores[0] + students[i].scores[1] + students[i].scores[2];
students[i].average = sum / 3;
fprintf(file, "%d %s %.2f %.2f %.2f %.2f\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average);
}
fclose(file);
// 输出文件内容
file = fopen("stuinfo.txt", "r");
char ch;
while ((ch = fgetc(file)) != EOF) {
printf("%c", ch);
}
fclose(file);
return 0;
}