习题10.5 有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件”stud“中

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
int main()
{
    FILE *fp;
    int i;

    struct student
    {
        int num;
        char name[20];
        float score1;
        float score2;
        float score3;
        float ave;
    }stu[SIZE];

    //输入5个学生信息
    printf("请依次输入5个学生的学号、姓名、三门课程成绩:\n");
    for(i=0;i<SIZE;i++)
    {
        printf("No.");
        scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
        stu[i].ave=(stu[i].score1+stu[i].score2+stu[i].score3)/3.0;
    }

    //将学生信息写入文件stud.dat中
    if((fp=fopen("stud.dat","w"))==NULL)
    {
        printf("该文件打开失败!");
        exit (0);
    }    
    for(i=0;i<SIZE;i++)
    {
        fprintf(fp,"%d\t",stu[i].num);
        fprintf(fp,"%s\t",stu[i].name);
        fprintf(fp,"%.2f\t%.2f\t%.2f\t%.2f",stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
        if(i!=4) fputs("\n",fp);
    }
    fclose(fp);

    //再从文件stud.dat文件中读取数据并打印至屏幕
    if((fp=fopen("stud.dat","r"))==NULL)
    {
        printf("该文件打开失败!");
        exit (0);
    }
    i=0;
    putchar(10);
    putchar(10);
    while(!feof(fp))
    {
        fscanf(fp,"%d",&stu[i].num);
        fscanf(fp,"%s",stu[i].name);
        fscanf(fp,"%f%f%f%f",&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
        printf("NO.%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
    }
    fclose(fp);

    return 0;
}

在这里插入图片描述
在这里插入图片描述

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页