国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷14
选择题
1.有以下程序
#include
main()
{ int a=5,b=1,t;
t=(a<<2)|b;printf(\\(C)
A. 11
B. 6
C. 21
D. 1
解析:本题考查位操作运算符。
“<<”是左移运算符,左移一位相当于乘2,“|”是按位或运算符。5序移两位相当于乘4,得到20,20的二进制数是00010100,和00000001进行按位或操作得到00010101,即十进制的21。
2.若变量已正确定义,则以下语句的输出结果是
s=32;
s^=32;
printf(\\(D)
A. -1
B. 1
C. 32
D. 0
解析:“按位异或”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为0;若数不同,则该位的结果为1。因为语句“s=32;s^=32;”相当于s与自身做按位异或运算,所以其结果等于0。
3.若有以下程序
main(){int c;
c=10^5;
printf(\\(A)
A. 15
B. 10000
C. 5
D. 105
解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。整数10和5的二进制编码分别为1010和0101,异或结果为1111,其十进制数据位15。
4.若有以下程序
main(){int c;
C=1315;
printf(\\(C)
A. 15
B. 18
C. 13
D. 5
解析:按位或(|)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为1,则该位的运算结果即为1:只有当两个相应位的数都为0时,该位的运算结果才为0。13的二进制位1101,5的二进制位0101,或运算的结果为1101,因此值为13。
5.有以下程序
main(){int i=0;
i=~i;
printf(\\(D)
A. 0
B. 1
C. 8
D. -1
解析:运算符(~)是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反(使每一位上的0变1,1变0)。i的初值为0,二进制位00000000,因此取反后结果为11111111,最高位为符号位,为一1的补码形式,因此输出结果为一1。
6.有以下程序
main(){int i=1;
i=i^i;
printf(\\(B)
A. -1
B. 0
C. 1
D. 7
解析:按位异或(n)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0:若数不同,该位的结果为1。本题中表达式i^i的值必为0,因为i的各个位置的二进制值相同。
7.下面关于位运算符的叙述,正确的是(D)
A. #表示“按位异或”的运算
B. ‖表示“按位或”的运算
C. ~表示“按位异或”的运算
D. &表示“按位与”的运算
解析:C语言提供了6种位运算符,各种位运算符的含义见下表:
8.以下叙述中正确的是(D)
A. 打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
B. 在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
C. C语言中的文件是流式文件,因此只能顺序存取数据
D. 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
解析:在C语言中,有两种对文件的存取方式;顺序存取和直接存取;如果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。
9.下列关于C语言文件的叙述中正确的是(C)
A. 文件由结构序列组成,可以构成二进制文件或文本文件
B. 文件由一系列数据依次排列组成,只能构成二进制文件
C. 文件由数据序列组成,可以构成二进制文件或文本文件
D. 文件由字符序列组成,其类型只能是文本文件
解析:在C语言中,对输入、输出的数据都按“数据流”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。
10.下面选项中关于“文件指针”概念的叙述正确的是(C)
A. 文件指针就是文件位置指针,表示当前读写数据的位置
B. 文件指针指向文件在计算机中的存储位置
C. 文件指针是程序中用FILE定义的指针变量
D. 把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符
解析:文件指针实际上是指向一个结构体类型的指针,这个结构体中包含如缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是“读”或“写”、是否出错、是否已经遇到文件结束标志等信息。一般称文件指针结构体类型名为FILE,可以用此类型名来定义文件指针。
[格式]FILE*指针变量名
[说明]FILE是一个存储文件信息的结构体类型的变量。
注意不要和文件位置指针混淆,在文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用fgetc函数,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。而文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。fscanf函数可以向文本文件和二进制文件输入数据。
11.设fp已定义,执行语句fp=fopen(“file”,“W”);后,以下针对文本文件file操作叙述的选项中正确的是(B)
A. 写操作结束后可以从头开始读
B. 只能写不能读
C. 可以在原有内容后追加写
D. 可以随意读和写
解析:本题考查文件操作。fopen的mode参数有多种类型:r以只读方式打开文件、r+以可读写方式打开文件、rb+以读写方式打开一个二进制文件、w以只写方式打开文件、w+以读写方式打开文件、wb+以读写方式打开二进制文件。
12.以下函数不能用于向文件中写入数据的是(C)
A. fwrite
B. foutc
C. ftell
D. fprintf
解析:本题考查文件操作。ftell函数返回文件指针的当前位置,其他的都写文件函数。
13.设文件指针fp已定义,执行语句fp=fopen(\\(D)
A. 写操作结束后可以从头开
本文档预览:3600字符,共8498字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载