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

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

1、国家二级 C语言机试(结构体、共同体、位运算及文件操作)模拟试卷 12及答案与解析 一、选择题 1 关于 typedef的叙述中错误的是 ( )。 ( A)用 typedef可以为各种类型起别名,但不能为变量起别名 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)可以用 typedef将已存在的类型用一个新的名字来代表 2 正确的结构体类型说明和变量定义是 ( )。 ( A) typedef struct fint n; char c; STR; STR t1, t2; ( B) struct STR; int n; char

2、 C; ; STR t1, t2; ( C) typedef stmct STR; int n=0; char c=A; t1, t2; ( D) structint n; char c; STR; STR t1, t2; 3 若 typedef int*T; T a5;则与 a的定义相同的是 ( )。 ( A) int*a5; ( B) int(*a)5 ( C) int, *a; ( D) int a5; 4 关于结构体说明和变量定义 中,正确的是 ( )。 ( A) typedef struct abcint n; double m; ABC; ABC x, y; ( B) struct

3、 abcint n; float m; struct abc x, y; ( C) struct ABCint n; float m; struct ABC x, y; ( D) struct abcint n; float m; ; abc x, y; 5 关于 typedef的叙述中错误的是 ( )。 ( A)用 typedef可以说明一种新的类型名 ( B) typedef说明的新类型名必须使用大写字母,否则会出编译错误 ( C)可以用 typedef说明的新类型名来定义变量 ( D) typedef的作用是用一个新的标识符来代表已存在的类型名 6 下面结构体的定义语句中,错误的是 (

4、)。 ( A) struct STRint x; int y; int z; ; struct STR a; ( B) struct STRint x; int y; int z; struct STR a; ( C) struct STRint x; int y; int z; a; ( D) structint x; int y; int z; a; 7 设有定义: struct STRint real, unreal; ) datal=1, 8, data2; 则以下赋值语句中错误的是 ( )。 ( A) data2=(2, 6); ( B) data2=data1; ( C) data

5、2 real=data 1 real; ( D) data2 real=data 1 unreal; 8 以下程序的输出结果是 ( )。 #nclude #include typedef structchar name9; char sex; int score2; STU; STU fun(STU a) STU b=Tom, m, 85, 90; int i; strcpy(Aname , Bname) ; Asex=Bsex ; for(i=O; i 2; i+)Ascorei=Bscorei ; return a; main() STU c=Lily, f, 95, 92, d; d=f

6、un(c); printf( s, c, d, d, , dname , dsex , dscore0 , dscore1) ; printf( s, c, d, d, , cname , csex , cscore0 , cscore1) ; ( A) Tom, m, 85, 90, Tom, m, 85, 90 ( B) Lily, f, 95, 92, Lily, f, 95, 92 ( C) Tom, m, 85, 90, Lily, f, 95, 92 ( D) Lily, f, 95, 92, Tom, m, 85, 90 9 若 typedef struct STRint g;

7、char h; T;以下叙述中正确的是 ( )。 ( A) T是 stmct STR类型的变量 ( B) STR是 struct类型的变量 ( C)可用 STR定义结构体变量 ( D)可用 T定义结构体变量 10 设 typedef struet STRchar c; int a4; TV;则下面叙述中正确的是 ( )。 ( A) STR是 struct类型的变量 ( B)可以用 STR定义结构体变量 ( C) TV是 struct STR类型的变量 ( D)可以用 TV定义结构体变量 11 有以下程序段: struet strint x; int*y; *pt; int a=1, 2, b=

8、3, 4; struet str c2=10, a, 20, b; pt=c; 以下选项中表达式的值为 11的是 ( )。 ( A) (pt+)一 x ( B) pt一 x ( C) +pt一 x ( D) *pt一 y 12 关于结构体类型的叙述中正确的是 ( )。 ( A)结构体类型中各个成分的类型必须是一致的 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中的成分只能是 C语言中预先定义的基本数据类型 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 13 关于结构体函数的叙述中正确的是 ( )。 ( A)函数的返回值不能是结构体指针类型 (

9、B)函数的返回值不能是结构体类型 ( C)在调用函数时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 14 以下程序的输出结果是 ( )。 main()unsigned char a=8, c; c=a 3; printf( d n, c); ( A) 1 ( B) 2 ( C) 4 ( D) 64 15 关于位运算的 叙述中正确的是 ( )。 ( A)右移运算时,高位总是补 0 ( B)左移运算的结果总是原操作数据 2倍 ( C)位运算符都需要两个操作数 ( D)位运算的对象只能是整型或字符型数据 16 以下程序段的输出结果是 ( )。 int r=8; prin

10、tf( d n, r 1); ( A) 2 ( B) 4 ( C) 16 ( D) 32 17 以下程序的输出结果是 ( )。 #include main() int a=2, b; b=a 2; printf( d n, b); ( A) 2 ( B) 4 ( C) 8 ( D) 16 18 以下程序的输出结果是 ( )。 #include main() int a=5, b: 1, t; t: (a 2) b; printf( d n, t); ( A) 1 ( B) 11 ( C) 21 ( D) 20 19 以下程序的输出结果是 ( )。 main()int c; c=10 5; pr

11、intf( d n, c); ( A) 15 ( B) 0 ( C) 5 ( D) 100000 20 以下程序的输 出结果是 ( )。 main() int i=0; i=一 i; printf( d, i); ( A) 0 ( B) 1 ( C)编辑出错 ( D)一 1 21 关于 C语言文件的叙述中正确的是 ( )。 ( A) C语言中的文件是流式文件,因此只能顺序存取数据 ( B)文件由一系列数据依次排列组成,只能构成二进制文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 22 设 fp=fopen(“file”, “w”

12、);,关于文件操作叙述的选项中正 确的是 ( )。 ( A)可以使用二进制读写 ( B)只能写不能读 ( C)可以随意读和写 ( D)可以在原有内容后追加写 23 设文件指针 fp已定义,执行语句 fp=fopen(file, r);后,以下针对文本文件file操作叙述的选项中正确的是 ( )。 ( A)只能检索不能读写 ( B)只能写不能读 ( C)可以读和写 ( D)只能读不能写 24 关于 C语言的输入输出函数,以下叙述中错误的是 ( )。 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘 文件读入字符 ( C) puts函数用于把字符串输出到终端设备

13、( D) write函数用于以二进制形式输出数据到文件 25 若 fp是指向某文件的指针,且不是末尾,则 feod(fp)的函数返回值是 ( )。 ( A) 0 ( B)非 0 ( C) 1 ( D) EOF 国家二级 C语言机试(结构体、共同体、位运算及文件操作)模拟试卷 12答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 C语言允许用 typedef说明一种新类型名或为现有类型起个别名,而不是创建新类型,说明新类型名的语句一般形式为: typedef类型名标识符;在此, “类型名 ”必须是在此语句之前已有定义的类型标识符。标识符是一个用户定义标识符,用作新的类型名。 typed

14、ef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。 【知识模块】 结构体及文件操作 2 【正确答案】 A 【试题解析】 定义结构体类型的一般形式为: struct结构体名 成员列表 ; struct结构体名后不能加 “: ”号。但定义完之后要在句末加分号,所以选项 B、 C有误,选项 D中定义无名称的结构体类型同时定义结构体变量形式应为 “stmct t1,t2; ”。选项 A为用户自定义类型,其为正确的定义形式。 【知识模块】 结构体及文件操作 3 【正确答案】 A 【试题解析】 typedef的主要功能是为存在的类型指定一个新的别名

15、,后面的代码中可以利用该新定义的别名定义变量,题目定义了整型指针类型 T,而后利用 T定义了整型指针数组 a,含有 5个元素,选项 A中定义了整型指针数组 a,选项 B定义了一个指向一维数组的指针 a,选项 C定义指针变量,而选项 D为定义整型数组最常用的形式,数组 a中可以存放 5个数据元素。 【知识模块】 结构体及文件操作 4 【正确答案】 A 【试题解析】 结构体的定义是正常的 C语言语句。选项 B中结构体定义中每个成员后面的分号都不能省略,选项 C结构体类型定义完毕后的 外没加分号,选项D中定义变量要加上关键字 struct。 【知识模块】 结构体及文件操作 5 【正确答案】 B 【试

16、题解析】 C语言规定 typedef语句的作用仅仅是用 “标识符 ”来 代表已存在的“类型名 ”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示,但也可以是小写。 【知识模块】 结构体及文件操作 6 【正确答案】 B 【试题解析】 结构体的定义是正常的 C语言语句。在选项 B中,由于在定义完结构体后缺少分号所以这是一条不完整的语句,因而是错误的。 【知识模块】 结构体及文件操作 7 【正确答案】 A 【试题解析】 本题主要考查结构体变量的定义与初始化。题目中定义了 STR类型的结构体变量 data1和 data2, 并对 data1进行了初始化。结构

17、体变量 Q的负值比较灵活,可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。 【知识模块】 结构体及文件操作 8 【正确答案】 C 【试题解析】 在 C语言的非指针调用函数中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调 fun(c)后,实参c的值并不会变化,仍是原值。在函数 f中把局部变量 b的值依次返回给变量 d。 【知识模块】 结构体及文件操作 9 【正确答案】 D 【试题解析】 题目中本题考查 typedef, T是用 typed

18、ef定义的 struct STR的新名称,因此可用 T定义结构体变量,但是 T并不是变量,只是 struct STR的新名称。 【知识模块】 结构体及文件操作 10 【正确答案】 D 【试题解析】 C语言允许用 typedef说明一种新的类型名,用标识符代替类型名,在此, “类型名 ”必须是此语句之前已有定义的类型标识符。 “标识符 ”是一个用户定义标识符,用作新的类型名。 typedef语句的作用仅仅是用 “标识符 ”来代表已存在的 “类型名 ”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义 STR为 TV的一种新的类型名,因而可以用它定义一个结构体变量。 【知识模

19、块】 结构体及文件操作 11 【正确答案】 C 【试题解析】 本题定义了指针 pt, pt指向结构体数据 c2的第一个元素 c0,所以 pt x=10,执行自加运算后为 11。 【知识模块】 结构体及文件操作 12 【正确答案】 D 【试题解析】 C语言中的结构体类型,它是由 若干 “成员 ”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前先定义它,也就是构造它。 【知识模块】 结构体及文件操作 13 【正确答案】 C 【试题解析】 C语言中的结构体普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。 【知识模块】 结构体及文件操作 1

20、4 【正确答案】 A 【试题解析】 在程序中对无符号字符变量 a的值执行右移 3位运算后,相当于 a 8,其值等于 1,再赋给变量 c。 【知识模块】 结构体及文件操 作 15 【正确答案】 D 【试题解析】 C语言中的位运算则是以位 (bit)级进行的运算,位运算符中除 “ ”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端 (低位 )移出的二进制数舍弃,左端(高位 )移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的 2倍。 【知识模块】

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

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

23、每一位上的 0变 1, 1变 0)。 i的初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为一 1的补码形式,因此输出结果为一 1。 【知识模块】 结构体及文件操作 21 【正确答案】 C 【试题解析】 在 C语言中,对输入、输出的数据都按 “数据流 ”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。 【知 识模块】 结构体及文件操作 22 【正确答案】 B 【试题解析】 本题考查文件操作。 fopen的 mode参数有多种类型: rw以只读方式打开文件、 r+以可读写方式打开文件、

24、rb+以读写方式打开一个二进制文件、 w以只写方式打开文件、 w+以读写方式打开文件、 wb+以读写方式打开二进制文件。 【知识模块】 结构体及文件操作 23 【正确答案】 D 【试题解析】 在题目中函数 fopen以 “只读 ”方式打开文件 file。 【知识模块】 结构体及文件操作 24 【正确答案】 B 【 试题解析】 本题考查的是输入输出函数的使用, gets和 getehar函数用于从标准输入设备终端读入字符串和字符,并非从磁盘文件读入, puts用于把字符串输出到文件, fwrite用于以二进制形式输出数据到文件。 【知识模块】 结构体及文件操作 25 【正确答案】 A 【试题解析】 Feof用来判断文件是否结束。如果遇到文件结束,函数 feof()的值为 1,否则为 0。 【知识模块】 结构体及文件操作

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

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

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