成都工业学院程序设计基础(C语言)实验十一:文件

写在前面

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;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值