您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 模拟题 >> 正文    
  全国计算机等级考试二级C语言之文件 【注册男护士专用博客】          

全国计算机等级考试二级C语言之文件

www.nanhushi.com     佚名   不详 

一、选择题:
(1)以下叙述中错误的是
 A)C语言中对二进制文件的访问速度比文本文件快
 B)C语言中,随机文件以二进制代码形式存储数据
 C)语句 FILE  fp; 定义了一个名为fp的文件指针
 D)C语言中的文本文件以ASCII码形式存储数据

(2)有以下程序
 #include    <stdio.h>
 main()
 { FILE  *fp;      int  i, k, n;
   fp=fopen("data.dat", "w+");
   for(i=1; i<6; i++)
   {  fprintf(fp,"%d   ",i);
      if(i%3==0)  fprintf(fp,"\n");
   }
   rewind(fp);
   fscanf(fp, "%d%d", &k, &n);  printf("%d %d\n", k, n);
   fclose(fp);
 }
程序运行后的输出结果是
 A)0  0   
 B)123  45  
 C)1  4   
 D)1  2

(3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是              
 A)feof(fp)
 B)ftell(fp)
 C)fgetc(fp)
 D)rewind(fp)

(4)有以下程序
#include  "stdio.h"
void WriteStr(char  *fn,char  *str)
{
   FILE  *fp;
   fp=fopen(fn,"W");
   fputs(str,fp);
   fclose(fp);
}
main()
{
   WriteStr("t1.dat","start");
   WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是                       
 A)start
 B)end
 C)startend
 D)endrt

(5) 有如下程序
#include <stdio.h>
main()
{FILE  *fp1;
   fp1=fopen("f1.txt","w");
   fprintf(fp1,"abc");
   fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为
 A) goodabc   
 B) abcd    
 C) abc    
 D) abcgood

(6) 有以下程序
#include <stdio.h>
main( )
{  FILE *fp;  int i,k=0,n=0;
   fp=fopen(“d1.dat”,”w”);
   for(i=1;i<4;i++)   fprintf(fp,”%d”,i);
   fclose(fp);
   fp=fopen(“d1.dat”,”r”);
   fscanf(fp,”%d%d”,&k,&n);   printf(“%d %d\n”,k,n);
   fclose(fp);
}
执行后输出结果是
 A) 1  2    
 B) 123  0    
 C) 1  23    
 D)  0   0

 (7) 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include <stdio.h>
main( )
{ FILE *fp;  int i,a[4]={1,2,3,4},b;
  fp=fopen("data.dat","wb");
  for(i=0;i<4;i++)  fwrite(&a[i],sizeof(int),1,fp);
  fclose(fp);
fp=fopen("data.dat
","rb");
fseek(fp,-2L*sizeof(int).SEEK_END) ;
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",B) ;
}
执行后输出结果是
 A) 2     
 B) 1     
 C) 4     
 D) 3



(8) 若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
 A) 0             
 B) 1         
 C) -1         
 D) 一个非0值

(9) 下列关于C语言数据文件的叙述中正确的是
 A) 文件由ASCII码字符序列组成,C语言只能读写文本文件
 B) 文件由二进制数据序列组成,C语言只能读写二进制文件
 C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
 D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

(10) 以下叙述中不正确的是
 A)C语言中的文本文件以ASCⅡ码形式存储数据
 B)C语言中对二进制文件的访问速度比文本文件快
 C)C语言中,随机读写方式不适用于文本文件
 D)C语言中,顺序读写方式不适用于二进制文件

(11) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
#include <stdio.h>
main()
{ FILE *fout; char ch;
 fout=fopen(’abc.txt’,’w’);
ch=fgetc(stdin);
while(ch!=’#’)
 { fputc(ch,fout);
  ch=fgetc(stdin);
 }
 fclose(fout);
}
 出错的原因是
 A) 函数fopen调用形式错误    B) 输入文件没有关闭
 C) 函数fgetc调用形式错误    D) 文件指针stdin没有定义

(12) 有以下程序
#include <stdio.h>
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen(“d1.dat”“w”);
fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”j);
fclose(fp);
fp=fopen(“d1.dat”, “r”);
fp=fscanf(fp,“%d%d”,&k,&n);  printf(“%d%d\n”,k,n);
fclose(fp);
}
程序运行后的输出结果是
 A) 20  30    
 B) 20  50  
 C) 30  50   
 D) 30  20

(13) 以下叙述中错误的是
 A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以
 B) 在程序结束时,应当用fclose函数关闭已打开的文件
 C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
 D) 不可以用FILE定义指向二进制文件的文件指针

(14) 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
 A) fopen("A:\user\abc.txt","r")    
 B) fopen("A:\\user\\abc.txt","r+")
 C) fopen("A:\user\abc.txt","rb")   
 C) fopen("A:\\user\\abc.txt","w")

(15) 下面的程序执行后,文件testt.t中的内容是
#include   <stdio.h>
void fun(char   *fname.,char   *st)
{   FILE  *myf;    int   i;
myf=fopen(fname,“w” );
for(i=0;i<strlen(st); i++)fputc(st[i],myf);
fclose(myf);
}
main()
{ fun(“test”,“new world”; fun(“test”,“hello,”0;)
 A)hello,   
 B)new worldhello,
 C)new world     
 D) hello, rld

(16) 若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
 A) EOF          
 B) -1            
 C) 非零值        
 D) NULL


(17) 在C程序中,可把整型数以二进制形式存放到文件中的函数是
 A) fprintf函数  
 B) fread函数      
 C) fwrite函数    
 D) fputc函数

(18) 标准函数 fgets(s, n, f) 的功能是
 A) 从文件f中读取长度为n的字符串存入指针s所指的内存
 B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
 C) 从文件f中读取n个字符串存入指针s所指的内存
 D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存
二、填空题:
(1) 已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是 【1】 。
#include <stdio.h>
main()
{ FILE *fr; char str[40];
……
 fgets(str,5,fr);
 printf("%s\n",str);
 fclose(fr);
}

(2) 若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(    [2]    );。

(3) 以下程序用来统计文件中字符个数。请填空。
 #include  "stdio.h"
 main()
 { FILE  *fp;   long  num=0L;
    if((fp=fopen("fname.dat","r"))==NULL)
    {  pirntf("Open error\n");  exit(0);}
     while( 【3】 )    
     { fgetc(fp); num++;}
     printf("num=%1d\n",num-1);
     fclose(fp);
 }

(4) 以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE  *myf;   ling  f1;
myf= 【4】 (“test.t”,“rb”);   
fseek(myf,0,SEEK_END); f1=ftel(myf);
fclose(myf);
printf(“%d\n”,f1);

(5) 下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。
#include   “stdio.h”
FILE  *fp;
{  char  ch;
   if( (fp=fopen (  【5】  ) )= = NULL)exit(0);  
   while( (ch=getchar( )) !=’@’) fputc (ch,fp);
   fclose(fp);
}


(6) 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。
  #include <stdio.h>
    main(  )
    {      FILE    *fp;
           char    ch,fname[32];   int  count=0;
           printf("Input the filename :"); scanf("%s",fname);
        if((fp=fopen(  【6】   ,"w+"))==NULL)   
      {    printf("Can’t open file:%s \n",fname); exit(0);}
      printf("Enter data:\n");
      while((ch=getchar())!="#"){   fputc(ch,fp);  count++;}
      fprintf(  【7】   ,"\n%d\n", count);    
      fclose(fp);
    }

(7) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.
     #include<stdio,h>
     FILE  *fp;
     main()
    {  int i,j;
       if((fp=fopen( 【8】,    "wb"))==NULL)  exit(0);   
       for(i=0;  i<10; i++)
      {  scanf("%d",&j);
        fwrite(&j,sizeof(int),1, 【9】  );  
     }
     fclose(fp);
}

(8) 以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。
     #include
     main()
     { FILE     *fp;
       char    str[100];    int   i=0;
       if((fp=fopen("text.txt",【10】))==NULL) 
        { printf("can’t open this file.\n");exit(0);}
        printf("input astring:\n");    gest(str);
        while (str[i])
        { if(str[i]>=’a’&&str[i]<=’z’)
            str[i]=【11】; 
            fputc(str[i],fp);
            i++;
        }
        fclose(fp);
        fp=fopen("test.txt",【12】);  
        fgets(str,100,fp);
        printf("%s\n",str);
        fclose(fp);
     }


(9) 下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。
#include <stdio.h>
FILE *fp;
main()
{ char ch;
if((fp=fopen( 【13】))==NULL)exit(0); 
while ((ch=getchar())!=’@’)fputc(ch,fp); 【14】   

(10) 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志.请填空.
#include <stdio.h>
main()
{ FILE * fp;
char ch,fname[10];
printf("lnput the name of file\n");
gets(fname);
if((fp=【15】)==NULL)  
{ printf("Cannot open\n");    exit(0);}
printf("Enter data\n");
while((ch=getchar())!=’#’)   fputc(【16】,fp);  
fclose(fp);     }

(11) 下面的程序用来统计文件中字符的个数,请填空。
#include <stdio.h>
main()
{ FILE *fp;
long num=0;
if(( fp=fopen("fname.dat","r"))==NULL)
{ printf( "Can’t open file! \n"); exit(0);}
while  【17】    
{ fgetc(fp); num++;}
printf("num=%d\n", num);
fclose(fp);
          }

(12)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。
#include <stdio.h>
main(int argc, char *argv)
{ FILE *f1,*f2;  char ch;
  if(argc< 【18】 )  
{ printf("Parameters missing!\n");  exit(0); }
  if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
  while( 【19】 )fputc(fgetc(f1),f2);  
  fclose(f1);  fclose(f2); }



答案:

一、选择题:
01) C 02) D 03) D 04)  B 05) C 
06) B  07) D  08) A  09) D  10) D

11) A  12) A  13) D  14) B  15) A 
16) C  17) A  18) B 
二、填空题:

(1) Hell

(2) “d1.dat”,”rb”或 “d1.dat”,”r+b”或”d1.dat”,”rb+”

(3) !feof(fp)

(4) fopen

(5) “bi.dat”,“w”或“bi.dat”,“wt”或“bi.dat”,“w+t”

(6) fname

(7) fp

(8) "bi.dat"

(9) fp

(10) "w"或"w+"或"wt"或"w+t"或"""wt+"

(11) str[i]-32 或str[i]-(’a’-’A’或str[i]-’a’+’A’

(12) "r"或"r+"或"r+t"或"rt+"

(13) "bi.dat","w"

(14) fclose(fp)

(15) fopen(fname,"w")

(16) ch

(17) (!feof(fp))

(18) 3

(19) !feof(f1)

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目