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

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

1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 3及答案与解析 一、选择题 1 以下关于 typedef的叙述错误的是 ( A) typedef只是将已存在的类型用一个新的名字来代表 ( B)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( C)用 typedef可以增加新类型 ( D)用 typedef为类型说明一个新名,通常可以增加程序的可读性 2 以下叙述中错误的是 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 (

2、 D)用 typedef可以为各种类型起别名,但不能为变量起别名 3 若有定义 typedefchar T10; T*a;上述定义中 a的类型与下面选项中完全相同的是 ( A) char(*a)10; ( B) char*a; ( C) char a10; ( D) char*a10; 4 以下叙述中正确的是 ( A)使用 typedef说明新类型名时,其格式是: typedef新类型名原类型名; ( B)使用 typedef说 明新类型名时,后面不能加分号 ( C)在程序中,允许用 typedef来说明一种新的类型名 ( D)在使用 typedef改变原类型的名称后,只能使用新的类型名 5

3、下面结构体的定义语句中,错误的是 ( A) struct ord int x; int y; int z; ; struct ord a; ( B) struct ord int x; int y; int z; struct ord a; ( C) struct ord int x; int y; int z; a; ( D) struct int x; int y; int z; a; 6 有以下程序 struct Sint a, b; )data2=10, 100, 20, 200; main() struct S p=data1; printf(“ d n“, +(p a); ) 程序

4、运行后的输出结果是 ( A) 11 ( B) 20 ( C) 21 ( D) 10 7 有以下程序 struct Sint n; int a20; ); voidf(structS *p) int ij, t; for(i=0; i p- n-1; i+) for(j=i+l; j p- n; j+) if(p- aip- aj)t=p- ai; p- ai=p- aj; p- aj-t; main() int i; struct S s=10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9; f(&s); for(i=0; i s n; i+)printf(“ d, “, s

5、ai); ( A) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( B) 2, 3, 1, 6, 8, 7, 5, 4, 10, 9, ( C) 10, 9, 8, 7, 6, 1, 2,3, -4, 5, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 8 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、 p、 q均已正确定义,并用于指向链表结点,指针变量 s总是作为头指针指向链表的第一个结点。 若有以下程序段: q=s; s=s- next; p=s; while(p- next)p=p- next; p- next=q; q-ne

6、xt=NULL; 该程序段实现的 功能是 ( A)尾结点成为首结点 ( B)首结点成为尾结点 ( C)删除首结点 ( D)删除尾结点 9 若有以下语句 typedef struct Sint g; char h; )T;以下叙述中正确的是 ( A)可用 S定义结构体变量 ( B) S是 struct类型的变量 ( C) T是 struct S类型的变量 ( D)可用 T定义结构体变量 10 设有以下语句 typedefstruct TTchar c; int a4; CIN;则下面叙述中正确的是 ( A) TT是 struct类型的变量 ( B)可以 用 TT定义结构体变量 ( C) CIN是

7、 struct TT类型的变量 ( D)可以用 CIN定义结构体变量 11 有以下程序段 struct stint x; int*y; )*pt; int a=1, 2), b=3, 4); struct st c2=10, a, 20, b); pt=c; 以下选项中表达式的值为 11的是 ( A) pt- x ( B) *pt- y ( C) +pt- x ( D) (pt+)- x 12 有下列程序: #include #include typedef structchar name9; char sex; float score2; STU; STU f(STU a) STU b=“Z

8、hao“, m, 85 0, 90 0; int i; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; return a; main() STU c=“tQian“, f, 95 0, 92 0), d; d=f(c); printf(“ s, c, 2 0f, 2 0f n“, d neme, d sex,d score0, d score1); 程序的运行结果是 ( A) Qian, m, 85, 90 ( B) Zhao, f, 95, 92 ( C) Zhao, m, 85, 90 ( D

9、) Qian, f, 95, 92 13 有以下程序 #include #include structA int a; char b10; double c; ; void f(structA t); main() structA a=1001, “ZhangDa“, 1098 0); f(a); printf(“ d, s, 6 1f n“,a a, a b, a c); void f(structA t) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; ) 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 (

10、B) 1001, ChangRong, 1098 0 ( C) 1001, ZhangDa, 1098 0 ( D) 1002, ZhangDa, 1202 0 14 有以下程序 #include struct tt int x; struct tt*y; )*p; struct tt a4=20, a+1, 15, a+2, 30, a+3, 17, a; main() int i; p=a; for(i=1; i =2; i+)printf(“ d, “, p- x); p=p- y; ) 程序的运行结果是 ( A) 20, 15, ( B) 30, 17 ( C) 15, 30, ( D

11、) 20, 30, 15 设有定义: structchar mark12; int numl; double num2; )t1, t2;若变量均已正确赋初值,则以下语句中错误的是 ( A) t2 num1=t1 num1: ( B) t2 mark=t1 mark; ( C) t1=t2; ( D) t2 num2=t1 num2; 16 若有以下程序 struct stuchar*name, gender; int score; ; main() struct stu a=NULL, m, 290, b; a name=(char*)malloc(10); strcpy(a name, “

12、Zhao“); b=a b gender=f; b score=350; strcpy(b name, “Qian“); printf(“ s, c, d, “, a name, a gender, a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f, 350 ( B) Qian, f, 350, Qian, f, 350 ( C) Zhao, m, 290, Zhao, f, 350 ( D) Qian, m, 290, Qian, f, 350 17

13、若有以下程序 typedef struct stuchar name10, gender; int score; STU; void f(STU a, STU b) b=a: printff(“ s, c, d, “, b name, b gender, b score); main() STU a=“Zhao“, m, 290, b=“Qian“, f, 350; f(a, b); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Zhao, m, 2

14、90, Qian, f, 350 ( C) Qian, f, i350, Qian, f, 350 ( D) Zhao, m, 290, Zhao, f, 350 18 为了建立如图所示的存储结构 (即每个结点含两个域, data是数据域, next是指向结点的 指针域 ),则在 _处应填入的选项是 Struct linkchar data;_node; ( A) struct link*next; ( B) link next; ( C) link*next; ( D) struct link next; 19 以下叙述中正确的是 ( A)结构体类型中的成分只能是 C语言中预先定义的基本数据

15、类型 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中各个成分的类型必须是一致的 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 20 以下叙述中正确的是 ( A)函数的返回值不能是结构体类型 ( B)函数的返回值不能是结构体指针类型 ( C)在调用函数 时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 21 设有如下的说明和定义 structint a; char*s; x, *p=&x; x a=4;x s=“hello“;则以下叙述中正确的是 ( A)语句 +p- a;的效果是使 p增 1 ( B) (p+)- a

16、与 p+- a都是合语法的表达式,但二者不等价 ( C)语句 *p- s+;等价于 (*p)- s+; ( D)语句 +p- a;的效果是使成员 a增 1 22 若已建立以下链表结构,指针 p、 s分别指向如图所示结点则不 能将 s所指节点插入到链表末尾的语句组是 ( A) s- next= 0; p=p- next; p- next=s; ( B) p=p- next; s- next=p- next=s; ( C) p=p- next; s- next=p- next; P- next=s; ( D) p=(*p) next; (*S) next=(*p) next; (*p) next=

17、s; 23 以下叙述中错误的是 ( A)函数的返回值类型不能是结构体类型,只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以 通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 24 有以下程序 main() unsigned char a=2, b=4, c=5, d; d=a b; d&=c; printf(“ d n“, d); 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) 4 ( D) 6 25 若有以下程序段 int r=8; printf(“ d n“, r 1); 输出结果是 ( A) 8 ( B) 4 (

18、 C) 16 ( D) 2 26 有以下程序 #include stdio h main() int a=2, b; b=a 2; printf(“ d n“, b); ( A) 4 ( B) 6 ( C) 8 ( D) 2 27 有以下程序 #include main() int a=5, b=1, t; t=(a 2)b; printf(“ d n“, t); ( A) 11 ( B) 6 ( C) 21 ( D) 1 28 若有以下程序 main() int c: c=105: printf(“ d n“, c); 则程序的输出结果是 ( A) 1 5 ( B) 10000 ( C) 5

19、 ( D) 105 29 有以下程序 main() int i=0: 1=1: prinff(“ d n“, i); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) 8 ( D) -1 30 下面关于位运算符的叙述,正确的是 ( A) #表示 “按位异或 ”的运算 ( B) 表示 “按位或 ”的运算 ( C) 表示 “按位异或 ”的运算 ( D) &表示 “按位与 ”的运算 31 下列关于 C语言文件的叙述中正确的是 ( A)文件由结构序列组成,可以构成二进制文件或文本文件 ( B)文件由一系列数据依次排列组成,只能构成二进制文件 ( C)文件由数据序列组成,可以构成二进制文件或

20、文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 32 设文件指针 fp已定义,执行语句 fp=fopen(“file“, “w“);后,以下针对文本文件 file操作叙 述的选项中正确的是 ( A)写操作结束后可以从头开始读 ( B)可以在原有内容后追加写 ( C)可以随意读和写 ( D)只能写不能读 33 有以下程序 #inclllde main() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2 dat“, “w+“); for(i=0; i 6; i+)fprintf(fp, “ d n“, ai); rewind(fp);

21、 for(i=0; 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, 5 7文件的操作函数 34 有下列程序: #include main() FILE*fp; int a10=1, 2, 3, i, n; fp=fopen(“d1 dat“, “w“); for(i=0; i 3; i+)fprintf(

22、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 35 有以下程序 #include main() FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *

23、文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abe dat文件的内容是 ( A) Chinang ( B) China ( C) ChinaBeijing ( D) BeijingChina 36 有下列程序: #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); fclose(fp); fp=fope

24、n(“d2 dat“, “rb“); fread(a, sizeof(int), 1 0, fp); fclose(fp); for(i=0; i 1 0; i+)printf(“ d“ai); 程序的运行结果是 ( A) 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, 37 有以下程序 #include main() FILE*fp; char str10; fp=

25、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); 程序运行后的输出结果是 ( A) 28c ( B) abc28 ( C) abc ( D)因类型不一致而出错 38 以下程序用来统计文件中字符的个数 (函数 feof用以检查文件是否结束,结束时返回非零 ) #include main() FILE*fp; long nu

26、m=0; fp=fopen(“fname dat“, “r“); while(_) fgetc(fp); num+; printf(“num= d n“, num); fclose(fp); 下面选项中,填入横线处不能得到正确结果的是 ( A) feof(fp) ( B) feof(fp)=NULL ( C) !feof(fp) ( D) feof(fp)=0 39 若 fp已定义为指向某文件的指针,且没有读到该文件的末尾,则 C语言函数feof(fp)的函数返 回值是 ( A) 0 ( B)非 0 ( C) -1 ( D) EOF 国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟

27、试卷 3答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 C语言允许用 typedef说明一种新的类型名,其一般形式为:typedef类型名标识符;在此 “类型名 ”必须是在此语句之前已有定义的类型标识符。 “标识符 ”是一个用户定义标识符,用作新的类型名。 Typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原来的类型名依然有效,这样可以 增加程序的可读性。 【知识模块】 结构体、共用体、位运算及文件操作 2 【正确答案】 B 【试题解析】 C语言允许用 typedef说明一种新类型名。 typedef类型名标识符:其中 “类型名 ”必

28、须是在此语句之前已定义的类型标识符: “标识符 ”是一个用户定义标识符,用作新的类型名; typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。 【知识模块】 结构体、共用体、位运算及文件操作 3 【正确答案】 D 【试题解析】 题目中 利用 typedef定义了字符数组类型 T,而后定义了该类型的指针 a,因此 a为指针数组。 【知识模块】 结构体、共用体、位运算及文件操作 4 【正确答案】 C 【试题解析】 C语言允许用 typedef说明一种新类型名。定义形式如下: typedef 类型名 标识符:其中 “类型名 ”必须是在

29、此语句之前已定义的类型标识符; “标识符 ”是一个用户定义标识符,用作新的类型名; typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。 【知识模块】 结构体、共用体、位运算及文件操作 5 【正确答案】 B 【试题解析】 在选项 B)中,由于在定义完结构体后缺少分号 “; ”,所以这是一条不完整的语句,因而是错误的。 【知识模块】 结构体、共用体、位运算及文件操作 6 【正确答案】 C 【试题解析】 在题目中定义了结构体 S类型的数组变量 data,并对其赋初值。在程序中定义了指向结构体 S类型的变量 p,并把数组 data的第

30、二个元素 data1的值赋给它,所以此时成员变量 p a的值等于 20,在输出时分别加 1,所以输入结果为选项 A)。 【知识模块】 结构体、共用体、位运算及文件操作 7 【正确答案】 D 【试题解析】 void f(stmct S*p)函数的功能使用了结构体指针变量实现对一维数组的元素从小到大排序。用关系表达式 p- ai p- aj实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句 f(&s);的功能实现对结构体变量 s中一维数组的元素从小到大的排序,所以循环语句的输出结果为 1,2,3,4,5,6,7,8,9,10。 【知识模块】 结构体、共用体、位运算及文件

31、操作 8 【 正确答案】 B 【试题解析】 分析程序可知,程序段首先让 q指向链表的首结点, s指向链表的第二结点, p此时指向链表的第二个结点。然后在 while循环中,当 p的后继结点非空时,让 p指向链表的最后一个结点,退出循环。然后让尾结点指向首结点,并使首结点的后继结点为 NULL。所以最终实现链表的首结点成为尾结点。 【知识模块】 结构体、共用体、位运算及文件操作 9 【正确答案】 D 【试题解析】 本题考查 typedef, T是 struct S的新名称,因此可用 T定义结构体变量,但是 T并不是变量,只是 struct S的新名称。 【知识模块】 结构体、共用体、位运算及文件

32、操作 10 【正确答案】 D 【试题解析】 C语言允许用 typedef说明一种新的类型名,说明新类型名的语句为一般形式为: typedef类型名 标识符 在此, “类型名 ”必须是此语句之前已有定义的类型标识符。 “标识符 ”是一个用户定义标识符,用作新的类型名。 typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。在本题中用 typedef定义 CIN为 TT的一种新的类型名, 因而可以用它定义一个结构体变量。 【知识模块】 结构体、共用体、位运算及文件操作 11 【正确答案】 C 【试题解析】 由题目的已知条件可知, pt

33、指向结构体数组 c2的第一元素 c0,所以 pt- x=10,执行自加运算后为 11。 【知识模块】 结构体、共用体、位运算及文件操作 12 【正确答案】 D 【试题解析】 f()函数的功能是对形参 a的各个成员用结构体变量 b的各个成员进行赋值后,然后返回变量 a。在主函数中调用 f(c)函数时,将 STU类型的结构体变量 c的值传递给形参 a,函数 f()在对 a的各个成员进行重新赋值后,再将返回变量a的值传给 d,最后输出结构变量 d的各个成员的值。 【知识模块】 结构体、共用体、位运算及文件操作 13 【正确答案】 C 【试题解析】 本题主要考查是的函数调用时参数之间的传递问题。在 C

34、语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。所以对于本题来说,在主函数中执行 f(a),把结构体变量 a的值复制一份传递给形参变量 t,而实参变量 a的值保持不变。 【知识模块】 结构体、共用体、位运算及文件操作 14 【正确答案】 A 【试题解析】 程序定义了结构体类型 tt,其成员包括一个整型数据 x和指向其自身结构的指针变量 y。程序在定义结构体数组 a的同时对其进行了初始化。其元素a0的成员 y被赋值为元素 a1的地址, a1 y被赋值为 a2的地址, a2 y被赋予 a3的地址, a3 y被赋予 a0的地址。这就形成了一个单向的循环链表,每个

35、元素的指针成员都指向下一个元素的地址。在主函数中,通过一个 for循环语句,输出该链表前 2个节点数值成员的值,即 a0 x和 a1 x。 【知 识模块】 结构体、共用体、位运算及文件操作 15 【正确答案】 B 【试题解析】 这个题目主要涉及到结构体的定义与赋值操作。根据题意结构体变量 t1, t2的成员变量 mark是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项 A)是用数组名实现字符数组之间的赋值操作,是错误的。 【知识模块】 结构体、共用体、位运算及文件操作 16 【正确答案】 D 【试题解析】 主函数中定义结构体类型 stmct stu,有三个成员,

36、第一个成员为字符指针变量。主函数中为 stu类型变量 a赋值,首先为 a name成员分配存储空间,存入数据。 b=a;语句执行完毕以后, a和 b的各个成员值相同,需要注意的是 b name和 a name成员都保存了同一段内存的地址,因此当为变量 b赋值的时候,同样更改了 a的 name成员,而其他成员由于有单独的存储空间而不会发生改变。 【知识模块】 结构体、共用体、位运算及文件操作 17 【正确答案】 B 【试题解析】 函数 f(STU a, STU b)的主要功能是为把结构体变量 a的值存放到b中,然后输出 b中各个成员的值。主函数中调用函数 f(a, b),输出赋值以后 b的数据,

37、实际为 a“Zhao“, m, 290的数据,函数调用结束,形参 a和 b撤销,流程到主函数输出 b“Qian“, f, 350的数据。 【知识模块】 结构体、共用体、位运算及文件操作 18 【正确答案】 A 【试题解析】 单链表为动态分配的存储空间,在分配时,每个结点之间可以是不连续的 (结点内是连续的 )。结点之间的联系用指针实现, 即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域,该指针为了保持链表中结点的地址,因此 其基类型和结点的类型相同,选项为 A。 【知识模块】 结构体、共用体、位运算及文件操作 19 【正确答案】 D 【试题解析】

38、结构体类型,它是由若干 “成员 ”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前必须先定义它,也就是构造它。 定义一个结构的一般形式为: struct结构名 成员列表 ; 成员列表由若干个成员组成,对每个成员也必须作类型说明,其形式为: 类型说明符成员名: 可以说明类型不同的各个成员。 【知 识模块】 结构体、共用体、位运算及文件操作 20 【正确答案】 C 【试题解析】 和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。 【知识模块】 结构体、共用体、位运算及文件操作 21 【正确答案】 D 【试题解析】 p- a得到 p指向的

39、结构体变量中的成员 a的值。 p- a+得到 p指向的结构体变量中的成员 a的值,用完该值后使 p- a加 1。 +p- a得到 p指向的结构体变量中的成员 a的值使之加 1(先加 )。由此可见指向运算符 -优先级高于+,因此 *p- s+相当于 *(p- s)+,结合性自右至左,因此 p+- a和 (p+)- a等价。 【知识模块】 结构体、共用体、位运算及文件操作 22 【正确答案】 B 【试题解析】 选项 A)中首先 p后移, s的后继指针指向 p, p的后继指向 s,在 s和最后结点之间形成了圆圈,无法完成题中的操作。 【知识模块】 结构体、共用体、位运算及文件操作 23 【正确答案】

40、 A 【试题解析】 函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。 【知识模块】 结构体、共用体、 位运算及文件操作 24 【正确答案】 C 【试题解析】 本题考查位运算, f为按位或运算, &为按位与运算,按位与 ( )运算符的作用是:把参加运算的两个运算数按对应的二进制位分别进行 “与 ”运算,当两个相应的位都为 1时,该位的结果为 1;否则为 0。按位或 (1)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为 0时,该位的运算结果才为 0。首先 d=214值为 6, d=6&5值为 4。 【知识模

41、块】 结构体、共用体、位运算及文件操作 25 【正确答案】 B 【试题解析】 定义了整型变量 r,其值等于 8,在输出语句中。把变量 r的值向右移动一位,在 C语言中把变量向右移动一位,相当于其值除以 2,所以在题中把变量 r的值 8除 2,得到其值等于 4。 【知识模块】 结构体、共用体、位运算及文件操作 26 【正确答案】 C 【试题解析】 表达式 a 2,把 a向左移动 2位,相当于扩大 4倍。 【知识模块】 结构体、共用体、位运算及文件操作 27 【正确答案】 C 【试题解析】 本题考查位操作运算符。 是左移运算符,左移 一位相当于乘2, 是按位或运算符。 5左移两位相当于乘 4,得到

42、 20, 20的二进制数是00010100,和 00000001进行按位或操作得到 00010101,即十进制的 21。 【知识模块】 结构体、共用体、位运算及文件操作 28 【正确答案】 A 【试题解析】 按位异或 ( )的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。整数 10和 5的二进制编码分别为 1010和 0101,异或结果为 1111,其十进制数据位 15。 【知识模块】 结构体、共用体、位运算及文件操作 29 【正确答案】 D 【试题解析】 运算符 ( )是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右

43、边,其运算功能是把运算对象的内容按位取反 (使每一位上的 0变 1, 1变 0)。 i的初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为 -1的补码形式,因此输出结果为 -1。 【知识模块】 结构体、共用体、位运算及文件操作 30 【正确答案】 D 【试题解析】 C语言提供了 6种位运算符,各种位运算符的含义见下表:各种位运算符及其含义 【知识模块】 结构体、共用体、位运算及文件操作 31 【正确答案】 C 【试题解析】 在 c语言中,对输入、输出的数据都按 “数据流 ”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据

44、的存放形式分为文本文件和二进制文件。 【知识模块】 结构体、共用体、位运算及文件操作 32 【正确答案】 D 【试题解析】 在题目中函数 fopcn以 “只写 ”方式打开文件 file。 【知识模块】 结构体、共用体、位运算及文件操作 33 【正确答案 】 B 【试题解析】 在程序中定义了一个整型数组 a6,并对它赋初值,并以写入的方式打开了文件 d2 dat。然后利用一个 for循环把数组 a中的元素数据写入文件d2 dat中,调用函数 rewind把将文件内部的位置指针重新指向一个文件的开头,再利用 for循环语句把文件中的数据依次写入到倒序排列的数组 a中,最后输出数组 a中的数组元素。

45、 【知识模块】 结构体、共用体、位运算及文件操作 34 【正确答案】 B 【试题解析】 本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(“d1 dat“, “w“);以可写的方式为输出建立新文本文件,调用 printf,输出 “123”, fp=fopen(“d1, dat“, “r“);以只读的方式打开文本文件,不能对文件内容进行操作。 【知识模块】 结构体、共用体、位运算及文件操作 35 【正确答案】 A 【试题解析】 本题主考查函数 fwrite的使用。函数 fwrite的调用形式为 tint fwritet(char*pt,unsigned size,unsign

46、ed n,FILE*fp);其功能是把 pt所指向的 n*size个字节输 出到 fp所指文件中。在本题中 fwrite(s2, 7, 1, pf);的功能是把字符串“Beijing”输入到文件 abc dat中,然后调用 rewind, (pf),把文件位置指针回到文件开头,再调用 fwrite(s1, 5, 1, pf)把字符串 “China”写入到文件 abc dat中,所以此时文件 abc dat的内容为 Chinang。 【知识模块】 结构体、共用体、位运算及文件操作 36 【正确答案】 B 【试题解析】 首先用函数 fopen()以 “wb”的方式开打文件 “d2 dat”,然后调

47、用两次 fwrite函数将数组 a的 5个元素,依次输出到文件 fp中,共 10个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用 frcad函数从文件 fb中读取这 10个字节的数据到数组 a中,此时数组 a的内容就变为1,2,3,0,0,1,2,3,0,0,最后的输出结果为 “1,2,3,0,0,1,2,3,0,0”。 【知识模块】 结构体、共用体、位运算及文件操作 37 【正确答案】 B 【试题解析】 在程序中首先把字符串 abe写入到文件 myfile dat中,然后再把整数 28追加到字符串 abc的后 面,最后把文件 myfile dat的内容读入到字符串str中,并把其内容输出。 【知识模块】 结构体、共用体、位运算及文件操作 38 【正确答案】 C 【试题解析】 feof函数用来判断文件是否结束。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。题目横线用于判断文件不结束,读出字符。文件不结束 feof值为 0,若执行循环则应用表达式 !feof(fp)。 【知识模块】 结构体、共用体、位运算及文件操作 39 【正确答案】 A 【试题解析】 feof用来判断文件是否结束 。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。 【知识模块】 结构体、共用体、位运算及文件操作

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

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

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