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

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

1、国家二级 C语言(结构体、共用体、位运算及文件操作)机试模拟试卷 2及答案与解析 一、选择题 1 有以下定义和语句: struct workers int num; char name20; char c; struct int day; int month; int year; s; ; struct workers w, *pw; pw=&w; 能给 w中 year成员赋 1980的语句是 ( A) w year=1980; ( B) pw-year=1980; ( C) w s year=1 980; ( D) *pw year=1980; 2 有以下程序 #include struct

2、 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; ix); p=p-y; 程序的运行结果是 ( A) 20, 15, ( B) 30, 17 ( C) 15, 30, ( D) 20, 30, 3 有以下程序 #include #include“string h“ typedef structchar name9; char sex; float score2; STU; void f(STU a) STU b=“Zhao“,m,

3、85 0, 90 0); int i; strcpy(a name, b name); a sex=b sex; for(i=0; in) ( B) (*p) n ( C) P-n+ ( D) P-n 12 以下叙述中正确 的是 ( A)结构体类型中的成分只能是 C语言中预先定义的基本数据类型 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中各个成分的类型必须是一致的 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 13 以下叙述中正确的是 ( A)结构体类型中的各个成分均不能是数组或指针 ( B)结构体类型的变量,不能在声明结构体类型组成时一起定

4、义 ( C)使用 typedef定义新类型名后,新类型名与原类型名实际上是等价的 ( D)元素为结构体类型的数组,只能在声明过结构体类型之后 ,单独进行定义 14 以下叙述中正确的是 ( A)函数的返回值不能是结构体类型 ( B)函数的返回值不能是结构体指针类型 ( C)在调用函数时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 15 以下叙述中正确的是 ( A)结构体变量的地址不能作为实参传给函数 ( B)结构体数组名不能作为实参传给函数 ( C)即使是同类型的结构体变量,也不能进行整体赋值 ( D)结构体中可以含有指向本结构体的指针成员 16 设有如下的说明和定

5、义 structint a; char*s; )x, *p=&x; x a=4;x s=“hello“;则以下叙述中正确的是 ( A)语句 +p-a;的效果是使 P增 1 ( B) (p+)-a与 p+-a都是合语法的表达式,但二者不等价 ( C)语句 *p-s+;等价于 (*p)-s+; ( D)语句 +p-a;的效果是使成员 a增 1 17 有以下程序 struct Sint a; int b; ; main() struct S a, *P=&a; a a=99; printf(“ d n“, _); 程序要求输出结构体中成员 a的数据,以下不能填入横线处的内容是 ( A) a a (

6、B) *p a ( C) p-a ( D) (*p) a 18 若已建立以下链表结构,指针 p、 s分别指向如图所示结点则不能将 s所指节点插入到链表末尾的语句组是 ( A) s-next= 0: p=p-next; p-next=s; ( B) p=p-next; s-next=p; P-next=s; ( C) p=p一 next; s-next=P-next; p-next=s; ( D) p=(*p) next; (*s) next=(*p) next; (*p) next=s; 19 有以下程序 #include struct STUchar name9; char sex; int

7、 score2; ; void ffstruct STU a11) struct STU b=“zhao“, m, 85, 90; a1=b; main() struct STU c2=“Qian“, f, 95, 92, “Sun“, m, 98, 99; f(c); printf(“ s, c, d, d, “, c0 name, c0 sex, c0 score0,c0 score1); printf(“ s, c, d, d n, “, c1 name, c1 sex, c1 score0,c1 score1); 程序运行后输出结果是 ( A) Qian, f,95, 92, Sun,

8、 m, 98, 99 ( B) Zhao, m, 85, 90, Sun, m, 98, 99 ( C) Qian, f,95, 92, Zhao, m, 85, 90 ( D) Zhao, m, 85, 90, Qian, f595, 92 20 以下叙述中错误的是 ( A)函数的返回值类型不能是结构体类型,只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 21 有以下程序 main() unsigned char a=8, c; C=a3: printf(“ d n“, c); 程

9、序运行后的输出结果是 ( A) 16 ( B) 32 ( C) 1 ( D) 0 22 有以下程序 main() unsigned char a=2, b=4, c=5, d; d=a I b; d&=c; printf(“ d n“, d); 程序运行后的输出结果是 ( A) 3 ( B) 5 ( C) 4 ( D) 6 23 下面选项中关于位运算的叙述正确的是 ( A)位运算符都需要两个操作数 ( B)左移运算的结果总是原 操作数据 2倍 ( C)右移运算时,高位总是补 0 ( D)位运算的对象只能是整型或字符型数据 24 若有以下程序段 int r=8; printf(“ d n“, r

10、1); 输出结果是 ( A) 8 ( B) 4 ( C) 16 ( D) 2 25 有以下程序 main() int a=1, b=2, c=3, x; X=(ab)&c; printf(“ d n“, x); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 0 26 有以下程序 #include main() int a=2, b; b=an)为前缀自加表达式, p-n和 a0 n等价,其值为 5,前缀自加 后值为 6。选项 B中表达式 (*p) n和选项 D的表达式 p-n含义相同,表示取结构指针 p所指向的成员,因此值为 5。选项 C中表达式 p-n+为后缀自加表达

11、式,相当于 (p-n)+,表达式值为 5。 【知识模块】 结构体、共用体、位运算及文件操作 12 【正确答案】 D 【试题解析】 结构体类型,它是由若干 “成员 ”组成,每一个成员可以是一个基本数据类型或者是 个构造类型。在说明和使用之前必须先定义它,也就是构造它。 定义一个结构的一般形式为: struct结构名 成员列 表 ; 成员列表由若干个成员组成,对每个成员也必须作类型说明,其形式为: 类型说明符成员名; 可以说明类型不同的各个成员。 【知识模块】 结构体、共用体、位运算及文件操作 13 【正确答案】 C 【试题解析】 C语言允许用 typedef说明一种新类型名, typedef语句

12、的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。结构体变量定义有下面三种形式: (1)先定义结构,再说明结构变量。 (2)在定义结构类型的同时说明结构变量。 (3)直接说明结构变量。 【知识模块】 结构体、共用体、位运算及文件操作 14 【正确答案】 C 【试题解析】 和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。 【知识模块】 结构体、共用体、位运算及文件操作 15 【正确答案】 D 【试题解析】 一个结构体变量包含若干成员,这些成员可以是数值类型、字符类型、数组类型,也可以是指针类型,甚至可以是正在

13、定义的结构体类型指针。用结构体变量作实参时,采取的是 “值传递 ”的方式,将结构体变量所占的内存单 元的内容伞部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了 “地址传递 ”的方式,形参须为同类型的结构指针或者形参结构数组。 【知识模块】 结构体、共用体、位运算及文件操作 16 【正确答案】 D 【试题解析】 p-a得到 p指向的结构体变量中的成员 a的值。 p-a+得到 p指向的结构体变量中的成员 a的值,用完该值后使 p-a加 1。 +p-a得到 p指向的结构体变量中的成员 a的值使之加 l(先加 )。由此可见指向运算符 -优先级高于+,因此 *p-s+相当于

14、 *(p-s)+,结合性自右至左,因此 p+-a和 (p+)-a等价。 【知识模块】 结构体、共用体、位运算及文件操作 17 【正确答案】 B 【试题解析】 如果 p指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量成员名、 (*p)成员名、 p-成员名。 【知识模块】 结构体、共用体、位运算及文件操作 18 【正确答案】 B 【试题解析】 选项 A中首先 p后移, s的后继指针指向 p, p的后继指向 s,在 s和最后结点之间形成了圆圈,无法完成题中的操作。 【知识模块】 结构体、共用体、位运算及文件操作 19 【正确答案】 C 【试题解析】 在主函数中,定义了结构体 STU数组

15、 c2,并对其赋初始值。执行 f(c)时,在函数 f()中,把结构体变量 b的值赋给了 c1。 【知识模块】 结构体、共用体、位运算及文件操作 20 【正确答案】 A 【试题解析】 函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。 【知识模块】 结构体、共用体、位运算及文件操作 21 【正确答案】 C 【试题解析】 在程序中对无符号字符变量 a的值执 行右移 3位运算后,相当于 a 8。其值等于 1,再赋给变量 c。 【知识模块】 结构体、共用体、位运算及文件操作 22 【正确答案】 C 【试题解析】 本题考查位运算, |为按位或运算, &为按位与运算,按位与 (&)运算符的作用

16、是:把参加运算的两个运算数按对应的二进制位分别进行 “与 ”运算,当两个相应的位都为 1时,该位的结果为 1;否则为 0。按位或 (I)的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1:只有当两个相应位的数都为 0时,该位的运算结果才为 0。首先 d=21|4值为 6, d=6&5值为 4。 【知识模块】 结构体、共用体、位运算及文件操作 23 【正确答案】 D 【试题解析】 位运算则是以位 (bit)一级进行的运算,位运算符中除 “ ”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,

17、右端 (低位 )移出的二进制数舍弃,左端 (高位 )移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的 2倍。 【知识模块】 结构体、共用体、位运算及文件操作 24 【正确答案】 B 【试题解析】 定义了整型变量 r,其值等于 8,在输出语句中,把变量 r的值向右移动一位,在 C语言中把变量向右移动一位,相当于其值除以 2,所以在题中把变量 r的值 8除 2,得到其值等于 4。 【知识模块】 结构体、共用体、位运算及文件操作 25 【正确答案】 C 【试题解析】 1、 2、 3的二进制形式分别为 00000001、 00000010、 00000011。首先计算 1与 2的或运算,即 12=(00000001)(000000lO)=00000011,再将其与 3进行 “与 ”运算,结果为 (00000011)&(00000011)=00000011,即十进制数 3。 【知识模块】 结构体、共用体、位运算及文件操作 26 【正确答案】 C 【试题解析】 表达式 a2,把 a向左移动 2位,相当于扩大 4倍。 【知识模块】 结构体、共用体、位运算及文件操作

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

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

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