程序通过定义学牛结构体变量,存储学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是:从文件中找出指定学号的学牛数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中

admin2015-11-24  36

问题 程序通过定义学牛结构体变量,存储学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是:从文件中找出指定学号的学牛数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其他学生数据指定不变;若找不到,则不做任何操作。
    请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
    注意:部分源程序给出如下。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
#include<stdio.h>
#define N 5
typedef struct student{
    long Sno;
    char name[10];
    float Score[3];
}STU;
vold fun(char*filename,long sno)
(  FILE*fp;
    STU n;
    int i;
    fp=fopen(filename,“rb+”);
/**********found***********/
  while(!feof(【1】))
  (fread(&n,sizeof(STU),1,fp);
/**********found***********/
  if(n.sno 【2】sno)break;
    }
    if(!feof(fp))
    { for(i=0;i<3;i++)
    n.8coEe+=3;
/**********found***********/
    fseek(【3】,一(long)sizeof
(STU),SEEK CUR);
    fwrite(&n,sizeof(STU),1,fp);
    }
    fclose(fp),
}
main()
{  STU t[N]={{10001,“NaChao”,91,92,77},{10002,“CaoKai”,75,60,88},(10003,“LiSi”,85,70,78},{10004,“FangFang”,90,82,87},{10005,“ZhangSan”,95,80,88}},ss[N];
    int i,j;
    FILE*fp;
    fp=fopen(“student.dat”,“wb”);
    fwrite(t,sizeof(STU),N,fp);
    fclose(fp);
    printf(“\nThe original data:\n”),
    fp=fopen(“student.dat”,“rb”);
    fread(ss,sizeof(STU),N,fp);
    fclose(fp),
for(j=0;j<N;j++)
    {printf(“\nNo:%id Name:%一8s
Scores:”,ss[j].sno,ss[j].name);
    for(i=0;i(3;i++)
    printf(“%6.2f”,ss[j].
score);
    printf(“\n”);
    }
    fun(“student.dat”,10003);
    fp=fopen(“student.dat”,“rb”);
    fread(ss,sizeof(STU),N,fp);
    fclose(fp),
    printf(“\nThe data after modifing:\n”);
    for(j=0;j<N;j++)
    {printf(“\nNo:%id Name:%一8s
Scores:”,SS[j].sno,ss[j].name);
    for(i=0,i<3;i++)
    printf(“%6.2f”,SS[j].
    score);
    printf(“\n”);
    }
}

选项

答案(1)fp (2)== (3)fp

解析  填空1:while循环语句的循环条件是判断文件是否结束,配合feof函数来完成,其一般形式为“feof(文件指针);”。
    填空2:根据题日要求确定if语句条件表达式的内容,满足条件后跳出循环。
填空3:文件定位函数fseek,调用形式为“fseek(文件指针,位移量,起始点);”,此处文件指针是fp。
转载请注明原文地址:https://kaotiyun.com/show/BkID777K
0

相关试题推荐
最新回复(0)