文章教程

全国计算机等级考试二级C语言12.5综合自测

8/22/2020 10:24:52 PM 人评论 次浏览

12.5 综合自测

一、选择题

1.C语言中系统的标准输出文件是指(  )。

A.显示器    B.键盘    C.软盘    D.硬盘

2.若fp是指向某文件的指针,且未读到文件的末尾,则表达式feof(fp)的返回值是(  )。

A.EOF    B.1    C.0    D.非零值

3.已知一个文件中存放了若干学生的档案记录,其数据结构如下:

struct st

{ char num[10];

int age;

float score [5];

};

定义一个数组:structsta[10];

假定文件已正确打开,不能正确地从文件中读入10名学生数据到数组中的是(  )。

A.fread(a,sizeof(structst),10,fp);

B.for(i=0;i<10;i++)fread(a[i],sizeof(structst),1,fp);

C.for(i=0;i<10;i++)fread(a+i,sizeof(structst),1,fp);

D.for(i=0;i<10;i+=2)fread(a+i,sizeof(structst),2,fp);

4.如果需要打开一个已经存在的非空文件“FILE”并向文件尾添加数据,正确的打开语句是(  )。

A.fp=fopen("FILE", "r");    B.fp=fopen("FILE", "r+");

C.fp=fopen("FILE", "w+");    D.fp=fopen("FILE","a+");

5.若以下程序所生成的可执行文件名为filel.exe,当输入以下命令执行该程序时:

FILEL CHINA BEIJING SHANGHAI

程序的输出结果是(  )。

main(int argc,char *argv[])

{ while(argc-->0)

++argv;printf("% s ",*argv);

A.CHINABEIJINGSHANGHAI    B.FILELCHINABEIJING

C.CBS    D.FCB

6.在高级语言中,对文件操作的一般步骤是(  )。

A.打开文件->操作文件->关闭文件   B.操作文件->修改文件->关闭文件

C.读写文件->打开文件->关闭文件   D.读文件->写文件->关闭文件

7.C语言可以处理的文件类型是(  )。

A.文本文件和数据文件    B.文本文件和二进制文件

C.数据文件和二进制文件    D.以上答案都不完全

8.以下叙述中,错误的是(  )。

A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B.在程序结束时,应当用函数fclose()关闭已打开的文件

C.在利用函数fread()从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D.不可以用FILE定义指向二进制文件的文件指针

9.函数调用语句fseek(fp,10L,2);的含义是( )。

A.将文件位置指针移动到距离文件头10个字节处

B.将文件位置指针从当前位置向文件尾方向移动10个字节

C.将文件位置指针从当前位置向文件头方向移动10个字节

D.将文件位置指针从文件末尾处向文件头方向移动10个字节

10.若要用fopen()函数打开一个新的二进制文件,该文件要既能读也能写,则打开方式是(  )。

A."ab+"    B."wb+"    C."rb+"    D."ab"

11.有以下程序(提示:程序中“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

12.若要以"a+"方式打开一个已存在的文件,则以下叙述正确的是(  )。

A.文件打开时,原有文件内容不被删除,位置指针移动到文件末尾,可做添加和读操作

B.文件打开时,原有文件内容不被删除,位置指针移动到文件开头,可做重写和读操作

C.文件打开时,原有文件内容被删除,只可做写操作

D.以上各种说法都不正确

13.fscanf()函数的正确调用形式是(  )。

A.fscanf(文件指针,格式字符串,输出列表);

B.fscanf(格式字符串,输出列表,文件指针);

C.fscanf(格式字符串,文件指针,输出列表);

D.fscanf(文件指针,格式字符串,输入列表);

14.函数ftell(fp)的作用是(  )。

A.得到流式文件中的当前位置    B.移动流式文件的位置指针

C.初始化流式文件的位置指针    D.以上答案均正确

15.fgetc()函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(  )。

A.只写    B.追加

C.读或读写    D.选项B和选项C都正确

16.在执行fopen()函数时,ferror()函数的初值是(  )。

A.TURE    B.-1    C.1    D.0

二、操作题

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

注意:不得增行或删行,也不得更改程序的结构。

试题程序

#include <stdio.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 = 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 numnametel\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);

教程类别