1、国家二级 C语言机试(选择题)模拟试卷 64及答案与解析 一、选择题 1 下列关于 C语言文件的叙述中正确的是 ( )。 ( A)文件由一系列数据依次排列组成,只能构成二进制文件 ( B)文件由结构序列组成,可以构成二进制文件或文本文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 2 下面选项中关于 “文件指针 ”概念的叙述正确的是 ( )。 ( A)文件指针是程序中用 FILE定义的指针变量 ( B)文件指针就是文件位置指针,表示当前读 写数据的位置 ( C)文件指针指向文件在计算机中的存储位置 ( D)把文件指针传给 fsca
2、nf函数,就可以向文本文件中写入任意的字符 3 以下叙述中正确的是 ( )。 ( A)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 ( B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据 ( D) c语言中的文件是流式文件,因此只能顺序存取数据 4 有以下程序: #include main( ) FILE *fp; int a10=1, 2, 3, i, n; fp=fopen(“d1 dat“, “w“); for(i=0; i 3; i+)fprin
3、tf(fp, “ d“, ai); fprintf(fp, “ n“); fclose(fp); fp=fopen(“d1 dat“, “r“); fscanf(fp, “ d“, &n); fclose(fp); printf(“ d n“, n); 程序的运行结果是 ( )。 ( A) 321 ( B) 12300 ( C) 1 ( D) 123 5 设文件指针 fp已定义,执行语句 fp=fopen(“file“, “w“);后,以下针对文本文件file操作叙述的选项中正确的是 ( )。 ( A)只能写不能读 ( B)写操作结束后可以从头开始读 ( C)可以在原有内容后追加写 ( D)可
4、以随意读和写 6 有以下程序: #include main( ) FILE *f; f=fopen(“filea txt“, “w“); fprintf(f, “abc“); fclose(f); 若文本文件 filea txt中原有内容为: hello,则运行以上程序后,文件 filea txt中的内容为 ( )。 ( A) abclo ( B) abc ( C) laelloabc ( D) abchello 7 以下程序依次把从终端输入的字符存放到 f文件中,用 “ ”作为结束输入的标志,则在横线处应填入的选项是 ( )。 #include main( ) FILE *fp; char
5、ch; fp=fopen(“fname“, “w“); while(ch=getchar()!= )fputc(_); fclose(fp); ( A) ch, “fname“ ( B) fp, ch ( C) ch ( D) ch, fp 8 读取二进制文件的函数调用形式为: fread(buffer, size, count, fp);,其中buffer代表的是 ( )。 ( A)一个 内存块的字节数 ( B)一个整型变量,代表待读取的数据的字节数 ( C)一个文件指针,指向待读取的文件 ( D)一个内存块的首地址,代表读人数据存放的地址 9 有以下程序: #include main( )
6、 FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头木 fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 10 有以下程序: #include main( ) FILE *fp; int a10=1, 2, 3, 0, 0
7、, i; fp=fopen(“d2 dat“, “wb“); fwrite(a, sizeof(int), 5, fp); fwrite(a, sizeof(int), 5, fp); fclose(fp); fp=fopen(“d2 dat“, “rb“); fread(a, sizeof(int), 10, fp); fclose(fp); for(i=0; i main( ) FILE *fp; int k, n, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w“); fprintf(fp, “ d d d n“, a0, a1, ar z); fp
8、rintf(fp, “ d d d n“, a3, a4, a5); felose(fp); fp=fopen(“d2 dat“, “r“); fscanf(fp, “ d d“, &k, &n); printf(“ d d n“, k, n); felose(fp); 程序运行后的输出结果是 ( )。 ( A) 1 2 ( B) l 4 ( C) 123 4 ( D) 123 456 12 有以下程序: #include main( ) FILE*fp; char str10; fp=fopen(“myfile dat“, “w“); fputs(“abe“, fp); felose(fp)
9、; fp=fopen(“myfile dat“, “a+“); fprintf(fp, “ d, 28); rewind(fp); fseanf(fp, “ s“, sir); puts(str); fclose(fp); 程序 运行后的输出结果是 ( )。 ( A) abc ( B) 28c ( C) abc28 ( D)因类型不一致而出错 13 设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。 ( A) 0 ( B) 0 ( C)非 0值 ( D) NULL 14 以下程序用来统计文件中字符的个数 (函数 feof用以检查文件是否结束,结束
10、时返回非零值 ): #include main( ) FILE *fp; long num=0; fp=fopen(“fname dat“, “r“); while(_)fgetc(fp); nulll+; printf(“num= d n“, num); felose(fp); 下面选项中,填入横线处不能得到正确结果的是 ( )。 ( A) feof(fp)=NULL ( B) !feof(fp) ( C) feof(fp) ( D) feof(fp)=0 15 若 有以下程序: #include main( ) FILE*fp; int i, a6=1, 2, 3, 4, 5, 6, k;
11、 fp=fopen(“data dat“, “w+“); flor(i=0; i main( ) FILE *fp; int i, a6=1, 2, 3, 4, 5, 6, k; fp=fopen(“data dat“, “w+b“); for(i=0; i 6; i+) fseek(fp, OL, 0); fwrite(&a5-i, sizeof(int), 1, fp); rewind(fp); fread(&k, sizeof(int), 1, fp); felose(fp); printf(“ d“, k); 则程序的输出结果是 ( )。 ( A) 6 ( B) 1 ( C) 1234
12、56 ( D) 21 国家二级 C语言机试(选择题)模拟试卷 64答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 本题考查文件的概念。文件是由数据序列组成 ,可以构成二进制文件或文本文件,所以答案为 c选项。 2 【正确答案】 A 【试题解析】 在 C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位置指针,所以 B、 c选项错误, D选项中不可以写入任意的字符。 3 【正确答案】 A 【试题解析】 B选项中,打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。 C
13、选项中,在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开, 就能读到第 1个数据,用 fseek()函数进行重新定位即可。 D选项中, C语言中的文件可以进行随机读写。 4 【正确答案】 D 【试题解析】 程序首先将数组 a10中的元素 l、 2、 3分别写入了文件 d1 dat文件中,然后又将 d1 dat文件中的数据 “123”整体写入到了变量 n的空间中,所以打印 n时输出的数据为 123。 5 【正确答案】 A 【试题解析】 本题考查文件操作函数 fopen()的基础知识。以 “w”方式打开文件,只能写不能读,故选项 A正确。 6 【正确答案】 B 【试题解 析】 本题考
14、查文件操作函数。执行 “fprinff(f, “abc“); ”语句后 f文件的内容就变为了 “abc“,所以 B选项正确。 7 【正确答案】 D 【试题解析】 本题考查 fputc()函数。该函数将字符 “ch“写到文件指针 fp所指向的文件的当前写指针的位置。 fputc函数格式为: int fputc(int n, File*fp);,故答案为 D选项。 8 【正确答案】 D 【试题解析】 函数 fread(void*buffer, size t size, size t count, FILE*stream);的功能是从一个文件流中读数据。读取 count个元素,每个元素 size字节
15、,如果调用成功则返回 count。其中, buffer用于接收数据的内存地址,大小至少是size*count字节; size表示单个元素的大小,单位是字节; count表示元素的个数,每个元素是 size字节;蜘表示输入流。 9 【正确答案】 B 【试题解析】 本题考查文件操作函数 fwrite()和 rewind()。题目中先是将 s2字符串写入 adc dat中,然后将写指针回到文件开头,写入 s1字符串,那么 s1字符串 就将前五个字符覆盖,所以最终结果为 Chinang,选项 B正确。 10 【正确答案】 D 【试题解析】 本题考查文件操作函数 fwrite()。两次 fwrite后,
16、 fp文件中已经写入 1, 2, 3, 0, O, 1, 2, 3, 0, 0。然后将文件 fp中的内容重新写入数组 a中,最后输出 a为 1, 2, 3, 0, 0, 1, 2, 3, 0, 0,所以选项 D正确。 11 【正确答案】 D 【试题解析】 本题考查文件操作函数。执行 fopen函数打开硬盘文件 d2 dat,执行两次 frintf函数则向硬盘文件 d2 dat写入数据 123、 456,执行 fscanf函数时从硬盘文件 d2 dat中读取数据到两个整数 k和 n中,最后执行 printf函数打印读取的数据到屏幕上,显示 123 456。所以 D选项正确。 12 【正确答案】
17、C 【试题解析】 本题考查文件操作函数。执行 fopen函数打开硬盘文件myfile dat,执行 fputs函数则向硬盘文件 my-file dat输出字符串 abc,执行fprintf()函数时向硬盘文件 my-file dat中追加输出数据 28,最后执行 fscanf函数和 prinff函数打印文件中的数据到屏幕上, 显示 abc28。所以 c选项正确。 13 【正确答案】 C 【试题解析】 本题考查文件的定位。 feof()函数的用法是从输人流读取数据,如果到达文件末尾 (遇到文件结束符 ), feof()函数值为非零值,否则为 0,所以选项 C正确。 14 【正确答案】 C 【试题
18、解析】 本题考查文件的定位。 feof()函数的用法是从输入流读取数据,如果到达文件末尾 (遇到文件结束符 ), feof()函数值为非零值,否则为 0。 while判断条件应是如果没有到达文件末尾,所以选项 C不能得到正确的结果。 15 【正确 答案】 C 【试题解析】 本题考查文件操作函数 fseek()。 fseek()函数用于二进制方式打开的文件,移动文件的读写指针位置。题目中将文件内部的位置指针重新指向一个流 (数据流文件 )的开头,所以最后只保留了 6,答案为 C选项。 16 【正确答案】 B 【试题解析】 本题考查文件操作函数 fseek()。 fseek()函数用于二进制方式打开的文件,移动文件的读写指针位置。题目中将文件内部的位置指针重新指向一个流 (数据流文件 )的开头,所以最后只保留了 1,答案为 B选项。 =级 C语言无纸化考试真 考题库试卷 (1)