codecrystal321 2022-12-23 09:41 采纳率: 100%
浏览 276
已结题

C语言文件设计题,写入文件stud.txt三个学生的成绩

一道C语言文件设计题目

题目:

假设有3个学生,每个学生有三门课的成绩,设计程序从键盘输入每个学生的相关数据(具体包括学号、姓名、语文成绩、数学成绩、英语成绩,每个学生的具体数据内容由设计者自定),并要求计算出每个学生的平均成绩并进行保存。存储学生数据的结构模型可以选择线性表或者单向链表,数据结构中结构变量的组成元素和类型由设计者根据题目要求自己定义。

将已输入的学生数据信息和计算出的平均分数写入文件stud.txt,并通过读取该文件显示到屏幕上来检查stud.txt文件中的学生平均分计算是否正确。

要求:

1、提供实现以上题目要求的源代码程序(包括对代码中的主要函数及程序段进行注释说明)

2、实验报告中要提供程序运行过程及各步骤执行结果的截图

  • 写回答

7条回答 默认 最新

  • 语言-逆行者 2022-12-23 11:15
    关注

    简单啊,可以写给你
    运行截图:

    img

    文件内容:

    img

    #include<stdio.h>
    #define N 3
    typedef struct Student{
    long long int id;
    char name[20];
    float chinese;
    float math;
    float english;
    float avg;
    }Student;
    Student student[N];
    Student student1[N];
    /**控制台录入信息*/
    void insert(Student student[N])
    {
        int i;
        for(i=0;i<N;i++)
        {
            printf("请输入第%d位学生的信息:\n",i+1);
            scanf("%lld %s %f %f %f",&student[i].id,student[i].name,&student[i].chinese,&student[i].math,&student[i].english);
            student[i].avg=(student[i].chinese+student[i].math+student[i].english)/(N*1.0);
        }
        
    }
    /**信息存储到stud.txt文件*/
    void ctrl_s(Student student[N])
    {
       FILE*f;
       int i;
       f=fopen("stud.txt","w");
       for(i=0;i<N;i++)
       {
          fprintf(f,"%lld\t%s\t%f\t%f\t%f\t%f\n",
          student[i].id,student[i].name,student[i].chinese,student[i].math,student[i].english,student[i].avg);
       }
       fclose(f);
    }
    void print(Student student1[N])
    {
       FILE*f;
       int i;
       f=fopen("stud.txt","r");
       if(f==NULL){printf("文件打开失败!\n");}
       else
       {
       for(i=0;i<N;i++)
       {
          fscanf(f,"%lld\t%s\t%f\t%f\t%f\t%f\n",
          &student1[i].id,student1[i].name,&student1[i].chinese,&student1[i].math,&student1[i].english,&student1[i].avg);
       }
       for(i=0;i<N;i++)
       {
           printf("学号:%lld 姓名:%s 语文:%.2f 数学:%.2f 英语:%.2f 平均分:%.2f\n",
          student1[i].id,student1[i].name,student1[i].chinese,student1[i].math,student1[i].english,student1[i].avg);
       }
       }
       fclose(f);
      
    }
    int main()
    {
        insert(student);
        ctrl_s(student);
        printf("学生信息如下:\n");
        print(student1);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了