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