学生信息文件管理

定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩从键盘输入10个学生的以上内容,存入文件stud.txt,关闭文件打开stud.txt文件,将数据读出,查看是否正确写入,关闭文件。打开文件stud.txt文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.txt中。studsort.txt 文件中读取第246810个学生的数据。首先将学生信息输入到stud.txt文件中,(此文件有自己输入,然后由程序打开!)


#include<stdio.h>

#include<stdlib.h>

struct student{

  int number;

  charname[20];

  floatChinese;

  float math;

  floatEnglish;

  floataverage;

}stu[10];

int main()

{

  int i,j;

  structstudent stu1;

  FILE *fp;

  FILE *fa;

  if((fp=fopen("stud.txt","r"))==NULL)

  {

         printf("Cannotopen this file!\n");

         exit(0);

  }

  printf("打开文本文件检查\n");

  for(i=0;i<10;i++)

  {

         fscanf(fp,"%d%s%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English);

         printf("%8d%8s%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);

  }

  fclose(fp);

  if((fp=fopen("stud.txt","r"))==NULL)

  {

         printf("Cannotopen this file!\n");

         exit(0);

  }

  printf("第二次打开文本文件\n");

  for(i=0;i<10;i++)

  {

         fscanf(fp,"%d%s%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English);

         stu[i].average=(stu[i].Chinese+stu[i].math+stu[i].English)/3;

         printf("%8d%8s%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);

  }

  for(j=1;j<10;j++)

         for(i=0;i<10-j;i++)

         {

                if(stu[i].average<stu[i+1].average)

                {

                       stu1=stu[i];

                       stu[i]=stu[i+1];

                       stu[i+1]=stu1;

                }

         }

         if((fa=fopen("studsort.txt","w+"))==NULL)

         {

                printf("Cannotopen this file!\n");

                exit(0);

         }

         printf("按平均分从高到低排序后\n");

         for(i=0;i<10;i++)

         {

                printf("%8d%8s%8.2f%8.2f%8.2f%8.2f",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);

                fprintf(fa,"%8d%8s%8.2f%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);

                printf("\n");

         }

         printf("\n");

         fclose(fp);

         if((fa=fopen("studsort.txt","r"))==NULL)

         {

                printf("Cannot open thisfile!\n");

                exit(0);

         }

         for(i=0;i<10;i++)

         {

                fscanf(fa,"%d%s%f%f%f%f",&stu[i].number,stu[i].name,&stu[i].Chinese,&stu[i].math,&stu[i].English,&stu[i].average);

         }

         printf("stdusort.txt中读取第2,4,6,8,10个学生的数据\n");

         for(i=1;i<10;i+=2)

         {

                printf("%8d%8s%8.2f%8.2f%8.2f%8.2f\n",stu[i].number,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English,stu[i].average);

         }

}


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值