B054

01-程序填空题 田少松, 软件154 305浏览

所属年份:2010.9;2011.3;2012.3

下列给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!

#include    <stdio.h>
#include    <stdlib.h>
#define    N    5
typedef  struct
{  int  num;
   char  name[10];
   char  tel[10];
}STYPE;

void check();
/**********found**********/
int fun(___1___ *std)
{
/**********found**********/
   ___2___  *fp;     int  i;
   if((fp=fopen("myfile5.dat","wb"))==NULL)
      return(0);
   printf("\nOutput data to file !\n");
   for(i=0; i<N; i++)
/**********found**********/
      fwrite(&std[i], sizeof(STYPE), 1, ___3___);
   fclose(fp);
   return (1);
}

main()
{  STYPE  s[10]={ {1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},
                  {1,"ddddd","444444"},{1,"eeeee","555555"}};
   int  k;
   k=fun(s);
   if (k==1)
   {  printf("Succeed!");  check();  }
   else
      printf("Fail!");
}

void check()
{  FILE  *fp;     int  i;
   STYPE  s[10];
   if((fp=fopen("myfile5.dat","rb"))==NULL)
   { printf("Fail !!\n"); exit(0); }
   printf("\nRead file and output to screen :\n");
   printf("\n   num    name      tel\n");
   for(i=0; i<N; i++)
   {  fread(&s[i],sizeof(STYPE),1, fp);
      printf("%6d    %s    %s\n",s[i].num,s[i].name,s[i].tel);
   }
   fclose(fp);
}

【参考答案】

(1) STYPE  
(2) FILE  
(3) fp

【考点分析】
本题考查:函数定义;变量定义;写数据块函数fwrite。

【解题思路】
填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,因此填入STYPE。
填空2:fp是指向文件类型的指针变量,因此填入FILE。
填空3:函数fwrite调用的一般形式为”fwrite(buffer,size,count,fp);”。
buffer:是一个指针变量,在fread函数中它存放输入数据的首地址,在fwrite函数中,它存放输出数据的首地址。
size:表示数据块的字节数。
count:表示要读写的数据块数。
fp:表示文件指针。