[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc

上传人:吴艺期 文档编号:498786 上传时间:2018-11-30 格式:DOC 页数:18 大小:110.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc_第1页
第1页 / 共18页
[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc_第2页
第2页 / 共18页
[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc_第3页
第3页 / 共18页
[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc_第4页
第4页 / 共18页
[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷8及答案与解析.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 8及答案与解析 一、选择题 1 若有以下程序 main()int c; c=105: printf(“ d n“, c); 则程序的输出结果是 ( A) 15 ( B) 10000 ( C) 5 ( D) 105 2 若有以下程序 main()int c; c=1315; printf(“ d n“, c); 则程序的输出结果是 ( A) 15 ( B) 18 ( C) 13 ( D) 5 3 有以下程序 main()int i=0; i= i: printf(“ d n“, i); 程序运行后的输出结果是 ( A) 0 ( B

2、) 1 ( C) 8 ( D)一 1 4 有以下程序 main()int i=1: i=i i; printf(“ d n“, i); 程 序运行后的输出结果是 ( A)一 1 ( B) 0 ( C) 1 ( D) 7 5 下面关于位运算符的叙述,正确的是 ( A) #表示 “按位异或 ”的运算 ( B) 表示 “按位或 ”的运算 ( C)表示 “按位异或 ”的运算 ( D) &表示 “按位与 ”的运算 6 以下叙述中正确的是 ( A)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( B)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数

3、据 ( C) C语言中的文件是流式文件,因此只能顺序存取数据 ( D)当对 文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 7 下列关于 C语言文件的叙述中正确的是 ( A)文件由结构序列组成,可以构成二进制文件或文本文件 ( B)文件由一系列数据依次排列组成,只能构成二进制文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 8 下面选项中关于 “文件指针 ”概念的叙述正确的是 ( A)文件指针就是文件位置指针,表示当前读写数据的位置 ( B)文件指针指向文件在计算机中的存储位置 ( C)文件指针是程序 中用 F

4、ILE定义的指针变量 ( D)把文件指针传给 fscanf函数,就可以向文本文件中写入任意的字符 9 设 fp已定义,执行语句 fp=fopen(“file”, “w”);后,以下针对文本文件 file操作叙述的选项中正确的是 ( A)写操作结束后可以从头开始读 ( B)只能写不能读 ( C)可以在原有内容后追加写 ( D)可以随意读和写 10 以下函数不能用于向文件中写入数据的是 ( A) fwrite ( B) fputc ( C) ftell ( D) fprintf 11 设文件指针 fp已定义,执行 语句 fp=fopen(“file“, “w“);后,以下针对文本文件 file操作

5、叙述的选项中正确的是 ( A)写操作结束后可以从头开始读 ( B)可以在原有内容后追加写 ( C)可以随意读和写 ( D)只能写不能读 12 有以下程序 #include stdio h main()FILE*f; f=fopen(“filea txt“, “w“); fprintf(f, “abc“); fclose(f); 若文本文件 filea txt中原有内容为: hello,则运行以上程序后,文件 filea txt中的内容为 ( A) abclo ( B) abc ( C) helloabc ( D) abchello 13 有以下程序 #inelude stdio h main(

6、) FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w+“); for(i=0; i; i+)fprintf(fp, “ d n“, ai); rewind(fp); for(i=O; i 6; i+)fscanf(fp, “ d“, &a5 i); fclose(fp); for(i=0; i 6; i+)printf(“ d“, ai); ( A) 1, 2, 3, 4, 5, 6 ( B) 6, 5, 4, 3, 2, 1, ( C) 4, 5, 6, 1, 2, 3, ( D) 1, 2, 3, 3, 2, 1, 14

7、执行以下程序后, test txt文件的内容是 (若文件能正常打开 ) #include stdio h main() FILE*fb; char*s1=“Fortran“, *s2=“Basic“; if(fb=fopen(“test txt“, “wb“)=NULL) printf(“Cant open test txt file n“); exit(1); fwrite(s1, 7, 1, fb); *把从地址 s1开始的 7个字符写到 fb所指文件中 * fseek(fb, 0L, SEEK SET); *文件位置指针移到文件开头 * fwrite(s2, 5, 1, fb); fcl

8、ose(fb); ( A) Basican ( B) BasicFortran ( C) Basic ( D) FortranBasic 15 读取二进制文件的函数调用形式为: fread(buffer,size, count, fp);其中 buffer代表的是 ( A)一个整型变量,代表待读取的数据的字节数 ( B)一个内存块的首地址,代表读入数据存放的地址 ( C)一个文件指针,指向待读取的文件 ( D)一个内存块的字节数 16 有下列程序: #include stdio h main() FILE*fp; int a10=1, 2, 3), i, n; fp=fopen(“d1 dat

9、“, “w“); for(i=0; i 3; i+)fprintf(fp, “ d“, ai); fprintf(fp, “ n“); fclose(fp); fp=open(“d1 dat“, “r“); fscanf(fp, “ d“, &n); fclose(fp); printf(“ d n“, n); 程序的运行结果是 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 17 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数

10、用于以二进制形式输出数据到文件 18 有以下程序 #include stdio h main() 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) Chinang ( B) China ( C) ChinaBeijing ( D) BeijingChina 19 有下列程序: #inclu

11、de stdio h 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, a2); fprintf(fp, “ d d d n“, a3, a4, a5); fclose(fp); fp=fopen(“d2 dat“, “r“); fscanf(fp, “ d d“, &k, &n); printf(“ d d n“, k, n); fclose(fp); 程序运行后的输出结果是 ( A) 1 4 ( B) 123 456 ( C) 123

12、 4 ( D) 1 2 20 有下列程序: #include stdio h main() FILE*fp; int a10=1, 2, 3, 0, 0, i; fp=fopen(“d2 dat“, “wb“); fwtite(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 10; i+)printf(“ d“, ai); 程序的运行结果是 ( A)

13、1, 2, 3, 1, 2, 3, 0, 0, 0, 0, ( B) 1, 2, 3, 0, 0, 1, 2, 3, 0, 0, ( C) 123, 0, 0, 0, 0, 123, 0, 0, 0, 0, ( D) 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 21 设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( A) 0 ( B) 0 ( C) NULL ( D)非 0值 22 有以下程序 #include stdio h main() FILE*fp; char str10; fp=fopen(“myfile dat“, “w“

14、); fputs(“abc“, fp); fclose(fp); fp=fopen(“myfile dat“, “a+“); fprintf(fp, “ d“, 28); rewind(fp); fscanf(fp, “ s“, str); puts(str); fclose(fp); 程序运行后的输出结果是 ( A) 28c ( B) abc28 ( C) abc ( D)因类型不一致而出错 23 以下程序依次把从终端输入的字符存放到 f文件中,用 #作为结束输入的标志,则在横线处应填入的选项是 #include stdio h main() FILE*fp; char ch; fp=fop

15、en(“fname“, “w“); while(ch=getchar()!=#) fputc(_); fclose(fp); ( A) fp, ch ( B) ch ( C) ch, “fname“ ( D) ch, fp 24 以下程序用来统计文件中 字符的个数 (函数 feof用以检查文件是否结束,结束时返回非零 ) #include stdio h main()FILE*fp; long num=0; fp=fopen(“fname dat“, “r“); while(_) fgetc(fp); num+; printf(“num= d n“, num); fclose(fp): 下面选

16、项中,填入横线处不能得到正确结果的是 ( A) feof(fp) ( B) feof(fp)=NULL ( C) !feof(fp) ( D) feof(fp)=0 25 下面关于 “EOF”的叙述,正确的是 ( A) EOF的值等于 0 ( B)文本文件和二进制文件都可以用 EOF作为文件结束标志 ( C) EOF是在库函数文件中定义的符号常量 ( D)对于文本文件, fgetc函数读入最后一个字符时,返回值是 EOF 26 若 fp已定义为指向某文件的指针,且没有读到该文件的末尾,则 C语言函数feof(fp)的函数返回值是 ( A) 0 ( B)非 0 ( C) 1 ( D) EOF 国

17、家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 8答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 按位异或 ( )的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。整数 10和 5的二进制编码分别为 1010和 0101,异或结果为 1111,其上进制数据位 15。 【知识模块】 结构体、共用体、位运算及文件操作 2 【正确答案】 C 【试题解析】 按位或 ( )的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为0时,该位的运算结

18、果才为 0。 13的二进制位 1101, 5的二进制位 0101,或运算的结果为 1101,因此值为 13。 【知识模块】 结构体、共用体、位运算及文件操作 3 【正确答案】 D 【试题解析】 运算符 ( )是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反 (使每一位上的 0变 1, 1变 0)。 i的 初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为 1的补码形式,因此输出结果为 1。 【知识模块】 结构体、共用体、位运算及文件操作 4 【正确答案】 B 【试题解析】 按位异或 ( )的运算规则是

19、:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。本题中表达式 i i的值必为 0,因为 i的各个位置的二进制值相同。 【知识模块】 结构体、共用体、位运算及文件操作 5 【正确答案】 D 【试题解析】 C语言提供了 6种位运算符,各种位运算符的含义见下表:【知识模块】 结构体、共用体、位运算及文件操作 6 【正确答案】 D 【试题解析】 在 C语言中,有两种对文件的存取方式;顺序存取和直接存取:如果以 “a”的方式对一个已打开的文件进行与操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以 “a+”的方式为读和写而打开一个文件,

20、则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读 (写 )操作完成之后,必颈将它关闭。 【知识模块】 结构体、共用体、位运算及文件操作 7 【正确答案】 C 【试题解析】 在 C语言中,对输入、输出的数据都按 “数据流 ”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的仔放形式分为文本文件和二进制文件。 【知识模块】 结构体、共用体、位运算及文件操作 8 【正确答案】 C 【试题解析】 文件指针实际上是指向一个结构体类型的指针,这个结构体中包含如缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是 “读

21、”或 “写 ”、是否出错、是否已经遇到文件结束标志等信息 。一般称文件指针结构体类型名为FILE,可以用此类型名来定义文件指针。 【格式】 FILE*指针变量名 【说明】 FILE是一个存储文件信息的结构体类型的变量。 注意不要和文件佗置指针混淆,在文什内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgetc晒数,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。而文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。 fscanf函数可以向文本文件和二进制文件输入数据。 【 知识模块】 结构体、共用体、位运算及文件操作 9

22、【正确答案】 B 【试题解析】 本题考查文件操作。 fopen的 mode参数有多种类型: r以只读方式打开文件、 r+以可读写方式打开文件、 rb+以读写方式打开一个二进制文件、 w以只写方式打开文件、 w+以读写方式打开文件、 wb+以读写方式打开二进制文件。 【知识模块】 结构体、共用体、位运算及文件操作 10 【正确答案】 C 【试题解析】 本题考查文件操作。 ftell函数返回文件指针的当前他置,其他的都写文件函数。 【知识模块】 结 构体、共用体、位运算及文件操作 11 【正确答案】 D 【试题解析】 在题目中函数 fopen以 “只写 ”方式打开文件 file。 【知识模块】 结

23、构体、共用体、位运算及文件操作 12 【正确答案】 B 【试题解析】 本题考查文件打开方式。格式:文件指针名 =fopen(文件名,使用文件方式 ) 需要注意的是:用 “w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。 【知识模块】 结构体、共用体、位运算及文 件操作 13 【正确答案】 B 【试题解析】 在程序中定义了一个整型数组 a6,并对它赋初值,并以写入的方式打开了文件 d2 dat。然后利用一个 for循环把数组 a中的元素数据写入文件d2 dat中,调用函数 rewind把将文件内部的位置指针重新

24、指向一个文件的开头,再利用 for循环语句把文件中的数据依次写入到倒序排列的数组 a中,最后输出数组 a中的数组元素。 【知识模块】 结构体、共用体、位运算及文件操作 14 【正确答案】 A 【试题解析】 本题主要考查文件的基本操作。在 main函 数中,首先打开text txt文件,然后通过 fwrite函数把 s1字符串写到文件中,接下来通过 fseek函数把文件指针移动到文件开始,再调用 fwrite函数把 s2字符窜写到文件中, s2的长度小于 s1的长度,因此第二次写的时候会覆盖第一次写的部分内容,程序运行后 test text中内容为 Basican。 【知识模块】 结构体、共用体

25、、位运算及文件操作 15 【正确答案】 B 【试题解析】 buffer是数据块的指针,对 fread来说,它是内存块的首地址,输入的数据存入此内存块中。 【知识 模块】 结构体、共用体、位运算及文件操作 16 【正确答案】 B 【试题解析】 本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(“d1 dat“, “w“);以可写的方式为输出建立新文本文件,调用 printf,输出 “123”, fp=fopen(“d1, dat“, “r“);以只读的方式打开文本文件,不能对文件内容进行操作。 【知识模块】 结构体、共用体、位运算及文件操作 17 【正确答案】 B 【试题解析

26、】 本题考查的是输入输出函数的使用, gets和 getchar函数用于从标准输入设备终端读入字符串和字符,并非从磁盘文件读入, fputs用于把字符串输出到文件, fwrite用于以二进制形式输出数据到文件。 【知识模块】 结构体、共用体、位运算及文件操作 18 【正确答案】 A 【试题解析】 本题主考查函数 fwrite的使用。函数 fwrite的调用形式为: int fwrite(char*pt, unsigned size, unsigned n, FILE*fp);其功能是把 pt所指向的n*size个字节输出到 fp所指文件中。在本题中 “fwrite(s2, 7, 1, pf;

27、”的功能是把字符串 “Beijing”输入到文件 abc dat中,然后调用 rewind(pf),把文件位置指针回到文件开头,再调用 “fwrite(s1, 5, 1, pf)”把字符串 “China”写入到文件abc dat中,所以此时文件 abc dat的内容为 Chinang。 【知识模块】 结构体、共用体、位运算及文件操作 19 【正确答案】 B 【试题解析】 用文件函数 fopen打开 d2 dat文件并把数组 a6中的元素分两行写入到 d2 dat文件中,关闭文件。然后再次打开文件 d2 dat,用 fscanf()函数读取文件 d2 dat中的数据,因为每行没有分隔符,所以每一

28、行会被认为是一个完整的数,并存入到变量 k和 n中,输出变量 k和 n的值为 123 456。 【知识模块】 结构体、共用体、位运算及文件操作 20 【正确答案】 B 【试题解析】 首先用函数 fopen()以 “wb”的方式开打文件 “d2 dat”,然后调用两次 fwrite函数将数组 a的 5个元素,依次输出到文件 fp中,共 10个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用 fread函数从文件 fb中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为 1, 2, 3, 0, 0,1, 2, 3, 0, 0,最后的输出结果为 “1, 2, 3, 0, 0

29、, 1, 2, 3, 0, 0”。 【知识模块】 结构体、共用体、位运算及文件操作 21 【正确答案】 D 【试题解析】 ANSI C提供的 feof函数的功能是判断 fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则 feof函数的值为 1,否则为 0,表不文件尚末结束。 【知识模块】 结构体、共用体、位运算及文件操作 22 【正确答案】 B 【试题解析】 存 程序中首先把字符串 abc写入到文件 myfile dat中,然后再把整数 28追加到字符串 abc的后面,最后把文件 myfile dat的内容读入到字符串str中,并把其内容输出。 【知识模块】 结构体、共用体、位运算及文件

30、操作 23 【正确答案】 D 【试题解析】 fputc()是以字符 (字节 )为单位的读写函数。每次可从文什读出或向文件写入一个字符。使用格式为 “fputc(ch, fp); ”。 其中 ch是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量;fp是文件指针。 fputc(ch, fp)的功能是将字符 ch写到文什指针 fp所指的文件中。如果输出成功, fbutc函数返回所输出的字符;如果输出失败,则返同一个 EOF值。 EOF是在 stdio.h库函数文件中定义的符号常量,其值等于一 1。 【知识模块】 结构体、共用体、位运算及文件操作 24 【正确答案】 C 【试题解析】 f

31、eof函数用来判断文件是否结束。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。题目横线用于判断文件不结束,读出字符。文件不结束feof、值为 0,若执行循环则应用表达式 !feof(fb)。 【知识模块】 结构体、共用体、位运算及文件操作 25 【正确答案】 C 【试题解析】 EOF是在 stdio h库函数文件中定义的符号常量,其值等于 1。EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgetc函数,每读写一次,该指针均向后移动, 【知识模块】 结构体、共用体、位运算及文件操作 26 【正确答案】 A 【试题解析】 feof用来判断文件是否结束。如果遇到文件结束,函数 feof(fb)的值为 1,否则为 0。 【 知识模块】 结构体、共用体、位运算及文件操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1