1、国家二级 C语言(结构体、共用体、位运算及文件操作)机试模拟试卷 9及答案与解析 一、选择题 1 有以下程序 #include main() char a=4; printf(“ d n“, a=a main() int a=5, b=1, t; t=(a 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) abch
2、ello 14 有以下程序 #inClude main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w+“); for(i=0; i main() FILE*fp; int a10=1, 2, 3, i, n; fp=fopen(“d1 dat“, “w“); for(i=0; i main() FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到
3、文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( A) Chinang ( B) China ( C) ChinaBeijing ( D) BeijingChina 19 有下列程序: #include 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); fcl
4、ose(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 4 ( D) 1 2 20 有下列程序: #include 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);
5、 fclose(fp); fp=fopen(“d2 dat“, “rb“); fread(a, sizeof(int), 10, fp); fclose(fp); for(i=0; i main() FILE*fp; char str10; fp=fopen(“myfile dat“, “w“); fputs(“abc“, fp); fclose(fp); fp=fopen(“myfile dat“, “a+“); fprintf(fp, “ d“, 28); rewind(fp); fscanf(fp, “ s“, str); puts(str); fclose(fp); 程序运行后的输出结
6、果是 ( A) 28c ( B) abc28 ( C) abc ( D)因类型不一致而出错 23 以下程序依次把从终端输入的字符存放到 f文件中,用 #作为结束输入的标志,则在横线处应填入的选项是 #include main() FILE*fp; char ch; fp=fopen(“fname“, “w“); while( ( ch=getchar() !=# ) fputc( ); fclose(fp); ( A) fp, ch ( B) ch ( C) ch, “fname“ ( D) ch, fp 24 以下程序用来统计文件中字符的个数 (函数 feof用以检查文件是否结束,结束时返回
7、非零 ) #inciude main() FILE*fp; iong num=0; fp=fopen(“fname dat“, “r“); whiie( )f fgetc(fp); num+; ) printf(“num= d n“, num); fciose(fp); ) 下面选项中,填入横线处不能得到正确结果的是 ( A) feof(fp) ( B) feof(fp)=NULL ( C) !feof(fp) ( D) feof(fp)=0 25 下面关于 “EOF”的叙述,正确的是 ( A) EOF的值等于 0 ( B)文本文件和二进制文件都可以用 EOF作为文件结束标志 ( C) EOF
8、是在库函数文件中定义的符号常量 ( D)对于文本文件, fgetc函数读入最后一个字符时,返回值是 EOF 26 若 fp已定义为指向某文件的指针,且没有读到该文件的末尾,则 C语言函数feof(fp)的函数返同值是 ( A) 0 ( B)非 0 ( C) -1 ( D) EOF 国家二级 C语言(结构体、共用体、位运算及文件操作)机试模拟试卷 9答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 本题主要考查按位右移运算。 a=4的二进制为 00000100, a1后为 00001000,其值为十进制数值 8。 【知识模块】 结构体、共用体、位运算及文件操作 2 【正确答案】 C 【
9、试题解析】 本题考查位操作运算符。 是左移运算符,左移一位相当于乘 2, |是按位或运算符。 5左移两位相当于乘 4,得到 20, 20的二进制数是 00010100,和 00000001进行按位或操作得到00010101,即十进制的 21。 【知识模块】 结构体 、共用体、位运算及文件操作 3 【正确答案】 D 【试题解析】 “核位异或 ”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为 0;若数不同,则该位的结果为 1。因为语句s=32; s=32:相当于 s与自身做按位异或运算,所以其结果等于 0。 【知识模块】 结构体、共用体、位运算及文件操作 4 【正确
10、答案】 A 【试题解析】 按位异或 ()的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。整数 10和 5的二进制编码分别为 1010和 0101,异或结果为 1111,其十进制数据位 15。 【知识模块】 结构体、共用体、位运算及文件操作 5 【正确答案】 C 【试题解析】 按位或 (1)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为0时,该位的运算结果才为 0。 13的二进制位 1101, 5的二进制位 0101,或运算的结果为 1101,因此值为
11、13。 【知识模块】 结构体、共用体、位运算及文件操作 6 【正确答案】 D 【试题解析】 运算符 ( )是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反 (使每一位上的 0变 l, 1变 0)。 i的初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为 -1的补码形式,因此输出结果为 -1。 【知识模块】 结构体、共用体、位运算及文件操作 7 【正确答案】 B 【试题解析】 按位异或 ()的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。
12、本 题中表达式 ii的值必为 0,因为 i的各个位置的二进制值相同。 【知识模块】 结构体、共用体、位运算及文件操作 8 【正确答案】 D 【试题解析】 C语言提供了 6种位运算符,各种位运算符的含义见下表:各种位运算符及其含义 【知识模块】 结构体、共用体、位运算及文件操作 9 【正确答案】 D 【试题解析】 在 C语言中,有两种对文件的存取方式;顺序存取和直接存取;如果以 “a”的方式对一个已打开的文件进行写操作后,则原有文件 rfl内容将保存,新的数据写在原有内容之后。如果以 “a+”的方 式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文
13、件,可以从头开始读。当对文件的读 (写 )操作完成之后,必须将它关闭。 【知识模块】 结构体、共用体、位运算及文件操作 10 【正确答案】 C 【试题解析】 在 C语言中,对输入、输出的数据都按 “数据流 ”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。 【知识模块】 结构体、共用体、位运算及文件操作 11 【正确答案】 C 【试题解析】 文件指针实际上是指向一个结构体类型的指针,这个结构体中包含如缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是 “读 ”或 “写 ”、是否出错、是否已经遇到文件结束标志等信息。 一般称文
14、件指针结构体类型名为 FILE,可以用此类型名来定义文件指针。 格式 FILE*指针变量名 说明 FILE是一个存储文件信息的结构体类型的变量。 注意不要和文件位置指针混淆,在文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用龟 etc函数,每读写一次,该指针均向后移动 ,它不需在程序中定义说明,而是由系统自动设置的。而文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。 fscanf函数可以向文本文件和二进制文件输入数据。 【知识模块】 结构体、共用体、位运算及文件操作 12 【正确答案】 D 【试题解析】 在题目中函数 fopen以 “只写 ”方式
15、打开文件 file。 【知识模块】 结构体、共用体、位运算及文件操作 13 【正确答案】 B 【试题解析】 本题考查文件打开方式。格式:文件指针名 =fopen(文件名,使用文件 方式 ) 需要注意的是:用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。 【知识模块】 结构体、共用体、位运算及文件操作 14 【正确答案】 B 【试题解析】 在程序中定义了一个整型数组 a6,并对它赋初值,并以写入的方式打开了文件 d2 dat。然后利用一个 for循环把数组 a中的元素数据写入文件d2 dat中,调用函数 r
16、ewind把将文件内部的位置指针重新指向一个文件的开头,再利用 for循环语句把文件 中的数据依次写入到倒序排列的数组 a中,最后输出数组 a中的数组元素。 【知识模块】 结构体、共用体、位运算及文件操作 15 【正确答案】 B 【试题解析】 buffer是数据块的指针,对 fread来说,它是内存块的首地址,输入的数据存入此内存块中: 【知识模块】 结构体、共用体、位运算及文件操作 16 【正确答案】 B 【试题解析】 本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(“d1 dat“, “w“):以可写的方式为输出建立新文本文件,调用 printf,输出 “123”,
17、fp=fopen(“dl, dat“, “r“);以只读的方式打开文本文件,不能对文件内容进行操作。 【知识模块】 结构体、共用体、位运算及文件操作 17 【正确答案】 B 【试题解析】 本题考查的是输入输出函数的使用, gcts和 getchar函数用十从标准输入设备终端读入字符串和字符,并非从磁盘文件读入, fputs用于把字符串输出剑文件, fwritc用于以二进制形式输出数据到文件。 【知识模块】 结构体、共用体、位运算及文件操作 18 【正确答案】 A 【试 题解析】 本题主要查函数 fwtite的使用。函数 fwrite的凋用形式为: int fwrite(chat*pt, uns
18、igned sizc, unsigncd n, FILE*fp);其功能是把 pt所指向的n*size个字节输出到 fn所指文件中。在本题中 fwritc(s2, 7, 1, pf);的功能是把字符串 “Beijing”输入到文件 abc dat中,然后调用 rewind(pf),把文件位置指针回到文件开头,再调刚 fwrite(s1, 5, 1, pf)把字符串 “china”写入到文件 abc dat中,所以此时文件 abc dat的内容为 Chinang。 【知识模块】 结构体、共用体、位运算及文件操作 19 【正确答案】 B 【试题解析】 用文件函数 fopcn打开 d2 dat文件并
19、把数组 a6中的元素分两行写入到 d2 dat文件中,关闭文件。然后冉次打开文件 d2 dat,用 fscanf()函数读取文件 d2 dat中的数据,因为每行没有分隔符,所以每一行会被认为是一个完整的数,并存入到变量 k和 n中,输出变量 k和 n的值为 123 456。 【知识模块】 结构体、共用体、位运算及文件操作 20 【正确答 案】 B 【试题解析】 首先用函数 fopen()以 “wb”的方式打开文件 “d2 dat”,然后调用两次 fwtite函数将数组 a的 5个元素,依次输出到文件 fp中,共 10个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用 fread函
20、数从文件 fp中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为 1, 2, 3, 0, 0,1, 2, 3, 0, 0,最后的输出结果为 “1, 2, 3, 0, 0, 1, 2, 3, 0, 0”。 【知识模块】 结构体、共用体、位运算及文件操作 21 【正确答案】 D 【试题解析】 ANSIC提供的 feof函数的功能是判断 fb所指的文件的位置是否已达到文件尾,如果达到文件尾,则 feof函数的值为 1,否则为 0,表示文件尚未结束。 【知识模块】 结构体、共用体、位运算及文件操作 22 【正确答案】 B 【试题解析】 在程序中首先把字符串 abc写入到文件 myfile
21、 dat中,然后再把整数 28追加到字符串 abc的后面,最后把文件 myfile dat的内容读入到字符串str中,并把其内容输出。 【知识模块】 结构体、共用体、位运算及文件操作 23 【正确 答案】 D 【试题解析】 fputc()是以字符 (字节 )为单位的读写函数。每次可从文件读出或向文件写入一个字符。使用格式为 fputc(ch, fp); 其中 ch是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量; fp是文件指针。 fputc(ch, fp)的功能是将字符 ch写到文件指针 fp所指的文件中。如果输 成功, fputc函数返同所输出的字符;如果输出失败,则返同个
22、EOF值。 EOF是在 stdio h库函数文件中定义的符号常量,其值等于 -1。 【知识模块】 结构体、共用体、位运算 及文件操作 24 【正确答案】 C 【试题解析】 feof函数用来判断文件是否结束。如果遇剑文件结束,函数 feof(fp)的值为 1,否则为 0。题目横线用于判断文件不结束,读出字符。文件不结束 feof值为 0,若执行循环则应用表达式 !feof(fp)。 【知识模块】 结构体、共用体、位运算及文件操作 25 【正确答案】 C 【试题解析】 EOF是在 stdio h库函数文件中定义的符号常量,其值等于 -1。EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当 前读写位置。使用 fgetc函数,每读写一次,该指针均向后移动, 【知识模块】 结构体、共用体、位运算及文件操作 26 【正确答案】 A 【试题解析】 feof用来判断文件是否结束。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。 【知识模块】 结构体、共用体、位运算及文件操作
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1