使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。程序的功能是调用fun()函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读人,每个人的信息作为一个

admin2023-02-27  42

问题 使用VC++2010打开考生文件夹下blankl中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。程序的功能是调用fun()函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读人,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
    请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
    注意:部分源程序给出如下。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
1 #include(stdio.h>
2 #include<stdlib.h>
3 #define N 5
4 typedef struct
5 {  int num;
6   char name[10];
7  char tel[10];
8 }STYPE;
9 void check();
10  /*********found*********/
11 int fun(<u>【1】</u>std)
12 {
13  /*********found*********/
14  <u>【2】</u>*fp;  int i;
15    if((fp=fopen("myfile5.dat","wb"))==NULL)
16    return(0);
17    printf("\nOutput data to file!\n");
18    for(i=0;i<N;i++)
19  /*********found*********/
20    fwrite(&std,sizeof(STYPE),1,<u>【3】</u>);
21    fclose(fp);
22    return(1);
23 }
24 main()
{STYPE s[10]=f{1,"aaaaa","111111"},  {1,"  bbbbb","222222"},    {  1,    "ccccc","333333"},  { 1,"  ddddd","444444"},  {1,"  eeeee","555555"}};
25     int k;
26    k=fun (s);
27    if(k==1)
28    {printf("Succeed!");check();}
29    else
30    printf("Fail!");
31 }
32 void check()
33 {  FILE*fp;int i;
34  STYPE s[10];
35  if((fp=fopen("myfile5.dat","rb"))==NULL)
36  {printf("Fail!\n");exit(0);}
37  printf("\nRead file and output to screen:\n");
38  printf("\n num name tel\n");
39  for(i=0;i<N;i++)
40    {  fread(&s,sizeof (STYPE),1,fp);
41    printf("%6d %s %s\n",s.num,s.name,s.tel);
42    }
43    fclose(fp);
44 }

选项

答案(1)STYPE (2)FILE (3)fp [*] 本题考查:函数定义、变量定义、写数据块函数fwrite()。

解析 填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,故空1处应该填STYPE。
    填空2:"fp"是指向文件类型的指针变量,故空
2处应该填FILE。
    填空3:函数fwrite()调用的一般形式为fwrite(buffer,size,count,fp);。
    buffer:一个指针变量,在fread()函数中,它用来存放输入数据的首地址;在fwrite()函数中。它用来存放输出数据的首地址。
    size:表示数据块的字节数。
    count:表示要读写的数据块数。
    fp:表示文件指针。
    故空3处应该填fp。   
转载请注明原文地址:https://kaotiyun.com/show/1P0D777K
0

最新回复(0)