填空题 下列给定程序的功能是调用fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下画线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #include <stdio.h> #include <stdlib.h> #define N 5 typedef struct { int num; char name[10]; char tel[10]; }STYPE; void cheek(); /**********found**********/ int fun(______ *std) { /**********found**********/ ______*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,______); felose(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);} plintf("/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、
【正确答案】 1、STYPE FILE fp    
【答案解析】[考点] 本题考查:函数定义;变量定义;写数据块函数fwrite。 [解析] 填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,因此填入STYPE。 填空2:fp是指向文件类型的指针变量,因此填入FILE。 填空3:函数fwrite调用的一般形式为“fwrite(buffer,size,count,fp);”。 buffer:是一个指针变量,在fread函数中它存放输入数据的首地址,在fwrite函数中,它存放输出数据的首地址。 size:表示数据块的字节数。 count:表示要读写的数据块数。 fp:表示文件指针。