2013年计算机二级考试C语言第十六章课后题及参考答案

2014-11-07 14:30:06 · 作者: · 浏览: 41

第十六章


  一、选择题


  16.1 标准库函数fgets(s,n,f)的功能是


  A) 从文件f中读取长度为n的字符串存入指针s所指的内存


  B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存


  D) 从文件f中读取n个字符串存入指针s所指的内存


  D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存


  答案:D


  16.2 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是


  A) EOF


  B) -1


  C) 非零值


  D) NULL


  答案:C


  二、填空题


  16.3 以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。(假定文件名无误),请填空。


  #include "stdio.h"


  main(int argc, char *argv[])


  { FILE *f1,f2; char ch;


  if(argc<_____) { printf("命令行参数错!\\n"); exit(0); }


  f1=fopen(argv[1],"r");


  f2=fopen(argv[2],"w");


  while(_____) fputc(fgetc(f1),______);


  ________;_________;


  }


  答案:1 !feof(f1) f2 fclose(f1) fclose(f2)


  16.4 以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,


  用#号作为结束输入标志。请填空。


  #include "stdio.h"


  main()


  { FIlE *fp; char ch,fname[10];


  printf("Enter the name of file\\n"); gets(fname);


  if((fp=_____)==NULL) { printf("Open error\\n"); exit(0); }


  printf("Enter data:\\n");


  while((ch=getchar())!=\’#\’) fputc(_____,fp);


  fclose(fp);


  }


  答案:fopen(fname,"w") ch


  16.5 以下程序用来统计文件中字符的个数。请填空。


  #include "stdio.h"


  main()


  { FILE *fp; long num=0;


  if((fp=fopen("fname.dat",____)==NULL)


  { printf("Open error\\n"); exit(0); }


  while _____


  { _____; num++; }


  printf("num=%d\\n",num);


  fclose(fp);


  }


  答案:"r" (!feof(fp)) fgetc(fp)


  16.6 以下程序编译,连接后生成可执行文件cpy.exe。假定磁盘当前目录下有三个文本文件其文件名


  和内容分别为:


  文件名 内容


  a aaaa#


  b bbbb#


  c cccc#


  当在DOS当前目录下键入:cpy a b c (此处的 代表Enter键)


  则程序输出_______。


  #include "stdio.h"


  void fc(FILE *);


  main(int argc, char *argv[])


  { FILE *fp; int i=1;


  while(--argc>0)


  { fp=fopen(argv[i++],"r");


  fc(fp);


  fclose(fp);


  }


  }


  void fc(FILE *ifp)


  { char c;


  while (c=getc(ifp)!=\’#\’) putchar(c-32);


  }


  答案:AAAABBBBCCCC