课程设计代码

时间: 1ms        内存:128M

描述:

请提交如下内容,注意只允许提交一次

一、文件清单:

例如:
1. add.c
2. sub.c
3. score.c
4. score.h

二、各文件代码:

1. add.c 文件代码

*********
********
********
2. sub.c 文件代码
********
********
********
3. score.c 文件代码
********
********
********
4. score.h 文件代码
********
********
********




输入:

输出:

示例输入:

示例输出:

提示:

参考答案(内存最优[0]):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
  typedef struct //定义学生信息结构体
{
    char name[30];
    int num;
    float score[3];
}std;
int  record(FILE*fp)  // 测量函数,测量文件的长短
 {
     int n;
     fseek(fp,0,SEEK_END);
     n=ftell(fp)/sizeof(std);
      return n;

 }

 int findnum(FILE*fp,int num)//查找函数,用于查找文件中学生的学号
 {
     int no=-1;
     int i,n;
     std stud;
     n=record(fp);
     rewind(fp);
     for(i=0;i<n;i++)
    {
     fread((void*)&stud,sizeof(std),1,fp);
     if(stud.num==num)
         {
            no=i;
            break;
         }
    }
    return no;
 }
 void insertinfo()//输入函数,此函数主要用于增加学生信息
 {
     int i,n;
     int numb;
     std stu1[100];
     FILE *fp;
     fp=fopen("studentdata.dat","ab+");
     printf("是否自动产生学号?\n");//判断是否自动生成学号
     printf("1:  Yes       2:   No   \n");
     int sw;
     scanf("%d",&sw);
     printf("请输入您要增加的学生人数为:\n");
     printf("添加学生人数不能高于90\n");
     scanf("%d",&n);
     if(sw==2)//否,手动输入
     {
          printf("请输入您要增加的学生信息:\n");
     printf("学生信息包括学生姓名、学号以及高数 语文 英语成绩(每个数据间以空格断开)\n");
     printf("注:学生成绩按指定顺序键入 \n");
     for(i=0;i<n;i++)
         scanf("%s%d%f%f%f",stu1[i].name,&stu1[i].num,&stu1[i].score[0],&stu1[i].score[1],&stu1[i].score[2]);
         for(i=0;i<n;i++)
        fwrite((void*)(stu1+i),sizeof(std),1,fp);
     }
     if(sw==1)//是
     {
        printf("请输入您要增加的学生信息:\n");
        printf("学生信息包括学生姓名以及高数 语文 英语成绩(每个数据间以空格断开)\n");
        printf("注:学生成绩按指定顺序键入 \n");
      int o,c;
      o=record(fp);
      if(o==0)//判断文件中是否有学生信息,若无,学号默认从一开始
        numb=1;
         else//若有,学号从数据中最大的学号下一位开始
        {
            numb=com(fp);//调用比较函数
            numb=numb+1;//学号从下一位开始
        }
      for(i=0;i<n;i++)//将数据输入进文件中
           {
               scanf("%s%f%f%f",stu1[i].name,&stu1[i].score[0],&stu1[i].score[1],&stu1[i].score[2]);
               stu1[i].num=numb;
               numb++;
               fwrite((void*)(stu1+i),sizeof(std),1,fp);
           }
     }
      printf("您已成功添加!\n");
      fclose(fp);
 }
 FILE *delete(FILE *fp)//删除函数,将指定学生信息从文件中删除
 {
    int no,i,j,n;
    int num;
    std *ant;
    printf("请选择将要删除学生的学号\n");
    scanf("%d",&num);
    no=findnum(fp,num);//调用查找学号函数
    if(no==-1)//如果文件中没有学生信息
        {
            printf("this num don't exit!\n");
            return fp;
        }
    n=record(fp);//调用长度函数
    if(n==1)
    {
        fclose(fp);
        fp=fopen("studentdata.dat","wb+");
        return fp;
    }
    ant=(std*)malloc(sizeof(std)*(n-1));//重开一个数组空间,大小为n-1
    rewind(fp);//指针复位
    for(i=j=0;i<n;i++)
    {
        fread((void*)(ant+j),sizeof(std),1,fp);//读出文件信息,逐条
        if((ant+j)->num==num)//若找到该生学号,跳过
          {
                continue;
          }
        j++;
    }
      fclose(fp);//关闭文件
      fp=fopen("studentdata.dat","wb+");//以写入方式打开文件
      fwrite((void*)ant,sizeof(std),n-1,fp);//重写文件
       printf("删除成功!");
      return fp;
 }
int main()
{
    FILE*fp;
       int d;
     fp=fopen("studentdata.dat","ab+");
    printf("************************************************\n");
    printf("*************欢迎进入学生管理系统***************\n");
    printf("*************Welcome to the System***************\n");
    printf("                                               \n");
    printf("*************以回车键结束您的键入***************\n");
    printf("                                               \n");
    printf("*************请问您的要求为");
    printf("(请输入下列代码);*******\n");
    printf("                                               \n");
    printf("***********  1: Insert        2: Delete  ***********\n");
    printf("                                               \n");
    printf("***********  3: Change        4: Show    ***********\n");
    printf("                                               \n");
    printf("***********  5: Find          6: Count     ***********\n");
    printf("                                               \n");
    printf("***********  7:  Rank         0: Exit      ************ ");
    printf("                                               \n");
    printf("*****************************************************\n");
    printf("                                               \n");
    printf("                                               \n");

    while(d!=0)
   {
       printf("键入您选择的操作 enter your choice:  ");
    scanf("%d",&d);
    if(d!=1&&d!=2&&d!=3&&d!=4)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
        switch(d)
    {
        case 1:
           insertinfo();
            break;
        case 2:
         fp=delete(fp);
            break;
        case 3:
          fp=fopen("studentdata.dat","rb+");
          changeinfo(fp);
          break;
        case 4:
          screen(fp);
          break;
        case 5:
          find(fp);
          break;
        case 6:
          countnum(fp);
          break;
        case 7:
           ranknum(fp);
            break;
    }
   }
    }



  void changeinfo(FILE*fp)//修改函数,用于修改学生的信息
  {
      std stuc;
      int no,n,num;
      printf("请输入您要修改的学生的学号:");
      scanf("%d",&num);
      no=findnum(fp,num);//调用查找学号函数
      if(no==-1)
        {
         printf("this num don't exit!\n");
           return;
        }
      fseek(fp,no*sizeof(std),SEEK_SET);//定位该名学生的位置
      fread((void*)&stuc,sizeof(std),1,fp);
      printf("请输入学生姓名、学号、成绩:\n");
      scanf("%s%d%f%f%f",stuc.name,&stuc.num,&stuc.score[0],&stuc.score[1],&stuc.score[2]);
      fseek(fp,-1L*(long)sizeof(std),SEEK_CUR);//重输该生信息
      fwrite((void*)&stuc,sizeof(std),1,fp);
      printf("修改成功!\n");
      return;
  }
  void screen(FILE*fp)//显示函数
  {
      std stus;
      int i,n=0;
      n=record(fp);
      fp=fopen("studentdata.dat","r");
      printf("姓名\t学号\t高数\t英语\t中文\n");
       for(i=0;i<n;i++)
     {
         fread((void*)&stus,sizeof(std),1,fp);//循环显示文件中学生信息
        printf("%s\t%d\t%g\t%g\t%g\n",stus.name,stus.num,stus.score[0],stus.score[1],stus.score[2]);//显示在屏幕上
     }
    return;
  }
  void find(FILE*fp)//查找函数,用于查找学生信息
  {
      std stuf;
      int no=0,num;
      printf("请输入您要查找学生的学号:\n");
      scanf("%d",&num);
      no=findnum(fp,num);//调用查学号函数
      if(no==-1)//如果查不到
       {
           printf("查无此人!");
           return;
       }
      else//查到
      {
          fp=fopen("studentdata.dat","r");
        fseek(fp,no*sizeof(std),SEEK_SET);
        fread((void*)&stuf,sizeof(std),1,fp);
        printf("姓名\t学号\t高数\t中文\t外语\n");
        printf("%s\t%d\t%g\t%g\t%g\n",stuf.name,stuf.num,stuf.score[0],stuf.score[1],stuf.score[2]);//在屏幕中显示
      }
  }
 int com(FILE*fp)//比较函数,比较学生的信息
 {
     std stuco;
      int temp;
     int i,n;
     std stud;
     n=record(fp);
     int t[n+1];
     rewind(fp);
     for(i=0;i<n;i++)
     {
      fread((void*)&stuco,sizeof(std),1,fp);
      t[i]=stuco.num;
     }
     temp=t[0];
     for(i=1;i<n;i++)
        {
            if(t[i]>temp)
             temp=t[i];
        }
    return temp;//返回学生信息中最大的学号
 }
 void countnum(FILE*fp)//统计函数
 {
     std stucut;
     int n,num,ncount=0,i;
     float nmin,nmax;
     printf("请输入您要统计的学科:\n");
     printf("1:  数学       2:  中文   3:  外语\n");
     scanf("%d",&n);
     printf("请输入您要统计的分数段:\n");
     scanf("%f%f",&nmin,&nmax);
     fp=fopen("studentdata.dat","rb");
     num=record(fp);//记录数据条目
     if(n!=1&&n!=2&&n!=3)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
     switch(n)
     {
     case 1 :
         rewind(fp);//指针复位
         for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);//读出信息
             if(stucut.score[0]>=nmin&&stucut.score[0]<=nmax)//比较该生信息是否满足要求
                ncount++;//计数+1
         }
         break;
     case 2:
         rewind(fp);
          for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);
            if(stucut.score[1]>=nmin&&stucut.score[1]<=nmax)
                ncount++;
         }
         break;

     case 3:
         rewind(fp);
         for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);
             if(stucut.score[2]>=nmin&&stucut.score[2]<=nmax)
                ncount++;

         }
         break;

     }
     printf("统计人数为:%d\n",ncount);//输出结果
 }
void ranknum(FILE*fp)
{
    int n,i,j,d;
n=record(fp);
std stur[n],temp;
rewind(fp);
fp=fopen("studentdata.dat","rb");
printf("请选择您要排序的要求:\n");
printf("1: 高数     2: 外语      3:中文      4: 学号\n");
scanf("%d",&d);
if(d!=1&&d!=2&&d!=3&&d!=4)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
   switch(d)
{
case 1:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[0]<stur[j].score[0])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 2:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[1]<stur[j].score[1])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 3:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[2]<stur[j].score[2])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 4:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].num<stur[j].num)
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }

}

  printf("姓名\t学号\t高数\t英语\t中文\n");
       for(i=0;i<n;i++)
        printf("%s\t%d\t%g\t%g\t%g\n",stur[i].name,stur[i].num,stur[i].score[0],stur[i].score[1],stur[i].score[2]);//显示在屏幕上
    fclose(fp);
  fp=fopen("studentdata.dat","wb+");
  fwrite((void*)&stur,sizeof(std),n,fp);
  fclose(fp);
    }

参考答案(时间最优[0]):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
  typedef struct //定义学生信息结构体
{
    char name[30];
    int num;
    float score[3];
}std;
int  record(FILE*fp)  // 测量函数,测量文件的长短
 {
     int n;
     fseek(fp,0,SEEK_END);
     n=ftell(fp)/sizeof(std);
      return n;

 }

 int findnum(FILE*fp,int num)//查找函数,用于查找文件中学生的学号
 {
     int no=-1;
     int i,n;
     std stud;
     n=record(fp);
     rewind(fp);
     for(i=0;i<n;i++)
    {
     fread((void*)&stud,sizeof(std),1,fp);
     if(stud.num==num)
         {
            no=i;
            break;
         }
    }
    return no;
 }
 void insertinfo()//输入函数,此函数主要用于增加学生信息
 {
     int i,n;
     int numb;
     std stu1[100];
     FILE *fp;
     fp=fopen("studentdata.dat","ab+");
     printf("是否自动产生学号?\n");//判断是否自动生成学号
     printf("1:  Yes       2:   No   \n");
     int sw;
     scanf("%d",&sw);
     printf("请输入您要增加的学生人数为:\n");
     printf("添加学生人数不能高于90\n");
     scanf("%d",&n);
     if(sw==2)//否,手动输入
     {
          printf("请输入您要增加的学生信息:\n");
     printf("学生信息包括学生姓名、学号以及高数 语文 英语成绩(每个数据间以空格断开)\n");
     printf("注:学生成绩按指定顺序键入 \n");
     for(i=0;i<n;i++)
         scanf("%s%d%f%f%f",stu1[i].name,&stu1[i].num,&stu1[i].score[0],&stu1[i].score[1],&stu1[i].score[2]);
         for(i=0;i<n;i++)
        fwrite((void*)(stu1+i),sizeof(std),1,fp);
     }
     if(sw==1)//是
     {
        printf("请输入您要增加的学生信息:\n");
        printf("学生信息包括学生姓名以及高数 语文 英语成绩(每个数据间以空格断开)\n");
        printf("注:学生成绩按指定顺序键入 \n");
      int o,c;
      o=record(fp);
      if(o==0)//判断文件中是否有学生信息,若无,学号默认从一开始
        numb=1;
         else//若有,学号从数据中最大的学号下一位开始
        {
            numb=com(fp);//调用比较函数
            numb=numb+1;//学号从下一位开始
        }
      for(i=0;i<n;i++)//将数据输入进文件中
           {
               scanf("%s%f%f%f",stu1[i].name,&stu1[i].score[0],&stu1[i].score[1],&stu1[i].score[2]);
               stu1[i].num=numb;
               numb++;
               fwrite((void*)(stu1+i),sizeof(std),1,fp);
           }
     }
      printf("您已成功添加!\n");
      fclose(fp);
 }
 FILE *delete(FILE *fp)//删除函数,将指定学生信息从文件中删除
 {
    int no,i,j,n;
    int num;
    std *ant;
    printf("请选择将要删除学生的学号\n");
    scanf("%d",&num);
    no=findnum(fp,num);//调用查找学号函数
    if(no==-1)//如果文件中没有学生信息
        {
            printf("this num don't exit!\n");
            return fp;
        }
    n=record(fp);//调用长度函数
    if(n==1)
    {
        fclose(fp);
        fp=fopen("studentdata.dat","wb+");
        return fp;
    }
    ant=(std*)malloc(sizeof(std)*(n-1));//重开一个数组空间,大小为n-1
    rewind(fp);//指针复位
    for(i=j=0;i<n;i++)
    {
        fread((void*)(ant+j),sizeof(std),1,fp);//读出文件信息,逐条
        if((ant+j)->num==num)//若找到该生学号,跳过
          {
                continue;
          }
        j++;
    }
      fclose(fp);//关闭文件
      fp=fopen("studentdata.dat","wb+");//以写入方式打开文件
      fwrite((void*)ant,sizeof(std),n-1,fp);//重写文件
       printf("删除成功!");
      return fp;
 }
int main()
{
    FILE*fp;
       int d;
     fp=fopen("studentdata.dat","ab+");
    printf("************************************************\n");
    printf("*************欢迎进入学生管理系统***************\n");
    printf("*************Welcome to the System***************\n");
    printf("                                               \n");
    printf("*************以回车键结束您的键入***************\n");
    printf("                                               \n");
    printf("*************请问您的要求为");
    printf("(请输入下列代码);*******\n");
    printf("                                               \n");
    printf("***********  1: Insert        2: Delete  ***********\n");
    printf("                                               \n");
    printf("***********  3: Change        4: Show    ***********\n");
    printf("                                               \n");
    printf("***********  5: Find          6: Count     ***********\n");
    printf("                                               \n");
    printf("***********  7:  Rank         0: Exit      ************ ");
    printf("                                               \n");
    printf("*****************************************************\n");
    printf("                                               \n");
    printf("                                               \n");

    while(d!=0)
   {
       printf("键入您选择的操作 enter your choice:  ");
    scanf("%d",&d);
    if(d!=1&&d!=2&&d!=3&&d!=4)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
        switch(d)
    {
        case 1:
           insertinfo();
            break;
        case 2:
         fp=delete(fp);
            break;
        case 3:
          fp=fopen("studentdata.dat","rb+");
          changeinfo(fp);
          break;
        case 4:
          screen(fp);
          break;
        case 5:
          find(fp);
          break;
        case 6:
          countnum(fp);
          break;
        case 7:
           ranknum(fp);
            break;
    }
   }
    }



  void changeinfo(FILE*fp)//修改函数,用于修改学生的信息
  {
      std stuc;
      int no,n,num;
      printf("请输入您要修改的学生的学号:");
      scanf("%d",&num);
      no=findnum(fp,num);//调用查找学号函数
      if(no==-1)
        {
         printf("this num don't exit!\n");
           return;
        }
      fseek(fp,no*sizeof(std),SEEK_SET);//定位该名学生的位置
      fread((void*)&stuc,sizeof(std),1,fp);
      printf("请输入学生姓名、学号、成绩:\n");
      scanf("%s%d%f%f%f",stuc.name,&stuc.num,&stuc.score[0],&stuc.score[1],&stuc.score[2]);
      fseek(fp,-1L*(long)sizeof(std),SEEK_CUR);//重输该生信息
      fwrite((void*)&stuc,sizeof(std),1,fp);
      printf("修改成功!\n");
      return;
  }
  void screen(FILE*fp)//显示函数
  {
      std stus;
      int i,n=0;
      n=record(fp);
      fp=fopen("studentdata.dat","r");
      printf("姓名\t学号\t高数\t英语\t中文\n");
       for(i=0;i<n;i++)
     {
         fread((void*)&stus,sizeof(std),1,fp);//循环显示文件中学生信息
        printf("%s\t%d\t%g\t%g\t%g\n",stus.name,stus.num,stus.score[0],stus.score[1],stus.score[2]);//显示在屏幕上
     }
    return;
  }
  void find(FILE*fp)//查找函数,用于查找学生信息
  {
      std stuf;
      int no=0,num;
      printf("请输入您要查找学生的学号:\n");
      scanf("%d",&num);
      no=findnum(fp,num);//调用查学号函数
      if(no==-1)//如果查不到
       {
           printf("查无此人!");
           return;
       }
      else//查到
      {
          fp=fopen("studentdata.dat","r");
        fseek(fp,no*sizeof(std),SEEK_SET);
        fread((void*)&stuf,sizeof(std),1,fp);
        printf("姓名\t学号\t高数\t中文\t外语\n");
        printf("%s\t%d\t%g\t%g\t%g\n",stuf.name,stuf.num,stuf.score[0],stuf.score[1],stuf.score[2]);//在屏幕中显示
      }
  }
 int com(FILE*fp)//比较函数,比较学生的信息
 {
     std stuco;
      int temp;
     int i,n;
     std stud;
     n=record(fp);
     int t[n+1];
     rewind(fp);
     for(i=0;i<n;i++)
     {
      fread((void*)&stuco,sizeof(std),1,fp);
      t[i]=stuco.num;
     }
     temp=t[0];
     for(i=1;i<n;i++)
        {
            if(t[i]>temp)
             temp=t[i];
        }
    return temp;//返回学生信息中最大的学号
 }
 void countnum(FILE*fp)//统计函数
 {
     std stucut;
     int n,num,ncount=0,i;
     float nmin,nmax;
     printf("请输入您要统计的学科:\n");
     printf("1:  数学       2:  中文   3:  外语\n");
     scanf("%d",&n);
     printf("请输入您要统计的分数段:\n");
     scanf("%f%f",&nmin,&nmax);
     fp=fopen("studentdata.dat","rb");
     num=record(fp);//记录数据条目
     if(n!=1&&n!=2&&n!=3)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
     switch(n)
     {
     case 1 :
         rewind(fp);//指针复位
         for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);//读出信息
             if(stucut.score[0]>=nmin&&stucut.score[0]<=nmax)//比较该生信息是否满足要求
                ncount++;//计数+1
         }
         break;
     case 2:
         rewind(fp);
          for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);
            if(stucut.score[1]>=nmin&&stucut.score[1]<=nmax)
                ncount++;
         }
         break;

     case 3:
         rewind(fp);
         for(i=0;i<num;i++)
         {
             fread((void*)&stucut,sizeof(std),1,fp);
             if(stucut.score[2]>=nmin&&stucut.score[2]<=nmax)
                ncount++;

         }
         break;

     }
     printf("统计人数为:%d\n",ncount);//输出结果
 }
void ranknum(FILE*fp)
{
    int n,i,j,d;
n=record(fp);
std stur[n],temp;
rewind(fp);
fp=fopen("studentdata.dat","rb");
printf("请选择您要排序的要求:\n");
printf("1: 高数     2: 外语      3:中文      4: 学号\n");
scanf("%d",&d);
if(d!=1&&d!=2&&d!=3&&d!=4)//判断指令是否正确,保护数据
{
    printf("输入指令有错误,程序将于2秒后强行退出...\n");
    return 0;
}
   switch(d)
{
case 1:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[0]<stur[j].score[0])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 2:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[1]<stur[j].score[1])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 3:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].score[2]<stur[j].score[2])
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }
    break;
case 4:
    for(i=0;i<n;i++)
    fread((void*)(stur+i),sizeof(std),1,fp);
    for(i=1;i<n;i++)
        for(j=0;j<i;j++)
        {
            if(stur[i].num<stur[j].num)
              {
                  temp=stur[i];
                  stur[i]=stur[j];
                  stur[j]=temp;
              }
    }

}

  printf("姓名\t学号\t高数\t英语\t中文\n");
       for(i=0;i<n;i++)
        printf("%s\t%d\t%g\t%g\t%g\n",stur[i].name,stur[i].num,stur[i].score[0],stur[i].score[1],stur[i].score[2]);//显示在屏幕上
    fclose(fp);
  fp=fopen("studentdata.dat","wb+");
  fwrite((void*)&stur,sizeof(std),n,fp);
  fclose(fp);
    }

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。