ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:69KB ,
资源ID:498779      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-498779.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷1及答案与解析.doc)为本站会员(孙刚)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 1及答案与解析 一、选择题 1 若定义: int array9, *p=array;并在以后的语句中未改变 p的值,不能表示array1地址的是 ( )。 ( A) p+1 ( B) array+ ( C) array+1 ( D) +p 2 在说明语句 “int*f(); ”中,标识符 f代表的是 ( )。 ( A)一个用于指向函数的指针变量 ( B)一个返回值为指针类型的函数名 ( C)一个用于指向一维数组的行指针 ( D)一个用于 指向整型数据的指针变量 3 不合法的 main(、 )函数命令行参数表示形式是 ( )。 (

2、 A) main(int a, char*c) ( B) main(int argv, char*argc) ( C) main(int arc, char*arv) ( D) main(int argc,char*argv) 4 有函数如下: char fun(char*p) return p; 该函数的返回值是 ( )。 ( A)无确切的值 ( B)形参 p自身的地址值 ( C)形参 p中存放的地址值 ( D)一个临时存储单元的地址 5 下列程序的输出结果是 ( )。 struct U int x, y, z; ; main() struct U s2=1, 2, 3, 4, 5, 6);

3、 int t; t=s0 x+s1 y; printf(“ d n“, t); ( A) 5 ( B) 6 ( C) 7 ( D) 8 6 变量 m所占内存字节数是 ( )。 Union U char s4; int i; long 1; ; struct M int c; union U u; m; ( A) 4 ( B) 5 ( C) 6 ( D) 8 7 根据下面的定义,能打印出字母 P的语句是 ( )。 struct student char name10; int age; ; stmct student stu10= “John“, 11, “Paul“, 12, “Mary“,

4、11, “adam“, 12 ; ( A) printf(“ c“, stu3 name); ( B) printf(“ c“, stu3 name1); ( C) printf(“ c“, stu2 name1); ( D) printf(“ c“, stu1 name0); 8 若有如下说明和定义: typedef a int x; char y; float z; union Uchar ul5l; int u22; u; mya; 则 sizeof(struct a)的值是 ( )。 ( A) 12 ( B) 16 ( C) 14 ( D) 9 9 以下程序: #include std

5、io h struct student int num; charname10; int age; ; void fun(stmct student*p) printf(“ s n“, (*p) name); main() struct student students3=9801, “Zhang“, 20, 9802, “Wang“, 19,9803, “Zhao“,18; fun(students+2); 输出结果是 ( )。 ( A) Zhang ( B) Zhao ( C) Wang ( D) 18 10 设有以下定义和语句,输出的结果是 (用 small模式编译,指针变量占 2个字节

6、 )( )。 struct U long*cat; stmct U*next; double dog; u; printf(“ d“, sizeof(u); ( A) 20 ( B) 16 ( C) 14 ( D) 12 11 下面的程序的输出为 ( )。 struct A int m; int*n: *p; int data4=10, 20, 30, 40); struct A aa4=50, &data0, 60, &data1, 70, &data2, 80, data3; main() p=aa; printf(“ d n“, +p- m); printf(“ d n“, (+p)-

7、m); printf(“ d n“, +(*p- n); ( A) 10 20 20 ( B) 50 60 21 ( C) 51 61 20 ( D) 60 70 31 12 若已建立如下图所示的单链表结构:且该链表结构中,指针 p和q分别指向图中所示节点,则不能将 q所指的节点插入到链表末尾来构成单向链表的语句是 ( )。 ( A) p=p- next; q- next=p; p- next=q; ( B) p=p- next; q- next=p- next; p- next=q; ( C) q- next=NULL; p=p- next; p- next=q; ( D) p=(*p) n

8、ext; (*q) next=(*p) next; (*p) next=q; 13 若有以下定义: struct List int data; struct List*next; a,b, c, *p, *q; 且变量 a和 b之间已有如下图所示的链表结构:指针 P指向变量 a, q指向变量 c,则能够 c插入 a和 b之间形成新的链表的语句组是 ( )。 ( A) a next=c; c next=b ( B) p next=q; q next=p next; ( C) p- next=&c; q- next=p- next; ( D) (*p) next=q; (*q) next=&b;

9、14 有以下定义: union A char st4; int i; long 1; ; struct B int c; union A b; b; 变量 b所占内存字节数 是 ( )。 ( A) 4 ( B) 5 ( C) 6 ( D) 8 15 以下枚举类型名的定义中正确的是 ( )。 ( A) enum e=a, b, c); ( B) enum ea=9, b=-1, c); ( C) enum e=“a“, “b“, “c“); ( D) enum e“a“, “b“, “c“); 16 若要说明一个类型名 Type,使得定义 Type p;等价于 char*p;以下选项中正确的是

10、( )。 ( A) typedef Type char *P ( B) typedef *char Type; ( C) typedef Type *char; ( D) typedef char *Type; 17 设有以下语句: typedefstruct S int g, char h; )ST; 则下面叙述中正确的是 ( )。 ( A)可用 S定义结构变量 ( B)可用 ST定义结构变量 ( C) S是 struct类型的变量 ( D) ST是 struct类型的变量 18 若 x=2, y=3,则 x&y的结果是 ( )。 ( A) 0 ( B) 2 ( C) 3 ( D) 5 19

11、 设 x和 y为 int型变量,且 x的值为 15, xy的值为 240,则表达式 (x&y)&yy的结果为 ( ) ( A) 0 ( B) FALSE ( C) TRUE ( D) 1 20 在位运算中,操作数每右移两位,其结果相当于 ( )。 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 4 ( D)操作数乘以 4 21 设 x=061, y=016,则 z=x y的值是 ( )。 ( A) 00001111 ( B) 11111111 ( C) 00111111 ( D) 11000000 22 下 述程序的输出结果是 ( )。 #include stdio h v

12、oid main() char a=1, b=2; char c=ab 2; printf(“ n d“, c); ) ( A) 9 ( B) 10 ( C) 12 ( D) 2 23 要找一个已存在的非空文本文件 “file“用于修改,正确的语句是 ( )。 ( A) fp=fopen(“file“, “r“); ( B) fp=fopen(“file“, “rb+“); ( C) fp=fopen(“file“, “w“); ( D) fp=fopen(“file“, “r+“); 24 在 C语言中,可以把整数以二进制形式存放到文件中的函数是 ( )。 ( A) fprintf()函数

13、( B) fread()函数 ( C) fwrite()函数 ( D) fputc()函数 25 有如下程序: #include stdio h main() FILE*fp1; fp1=fopen(“f1 txt“, “w“); fprintf(fp1, “abc“); fclose(fp1); 若文本文件 f1 txt中原有内容为 good,则运行以上程序后,文件 f1 txt中的内容为 ( )。 ( A) goodabc ( B) abcd ( C) abe ( D) abcgood 26 使用 fgets(str,n, p)函数从文件中读入一个字符串,以下叙述错误的是 ( )。 ( A

14、)字符串读入后会自动加入 0 ( B) fp是指向该文件的文件型指针 ( C) fgets函数将从文件中最多读入 n-1个字符 ( D) fgets函数将从文 件中最多读入 n个字符 27 函数 fseek(fp, -10L, SEEK_END)的含义是 ( )。 ( A)将文件位置指针从当前位置向后移动 lO个字节 ( B)将文件位置指针移到距离文件头 10个字节处 ( C)将文件位置指针从文件末尾处向后退 10个字节 ( D)将文件位置指针移到离当前位置 10个字节处 28 函数 rewind(fp)的作用是 ( )。 ( A)使 fp指定的文件的位置指针重新定位到文件的开始位置 ( B)

15、将 fp指定的文件的位置指针指向文件中所要求的特定位置 ( C)使 fp指定的文 件的位置指针向文件的末尾 ( D)使 fp指定的文件的位置指针自动移至下一个字符位置 29 已知函数的调用形式为 fread(buffer,size, count, fp);,其中 buffer代表的是( )。 ( A)一个整型变量,代表要读入的数据项总数 ( B)一个文件指针,指向要读的文件 ( C)一个指针,是指向的输入数据放在内存中的起始位置 ( D)一个存储区,存放要读的数据项 30 函数 ftell(fp)的作用是 ( )。 ( A)得到 fp所指向文件的当前读写位置 ( B)初始化文件的位置指针 (

16、C)移动文件的位置指针 ( D)以上答案均正确 国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 1答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 本题选项 C)中 array+是先取 array的值,后自增,所以是错误的。 【知识模块】 编译预处理和指针 2 【正确答案】 B 【试题解析】 本题主要考查指针函数和函数指针,本题申是指针函数,即 f指向一个返回值为指针的函数。 【知识模块】 编译预处理和指针 3 【正确 答案】 C 【试题解析】 C语言中规定:在 main()函数中使用命令行参数时,第二个参数应该为字符型指针数组或字符型二级指针。 【知识模块】 编译

17、预处理和指针 4 【正确答案】 C 【试题解析】 本题中 p是一个字符型的指针, p是一个地址,因此返回的是形参p中地址值。 【知识模块】 编译预处理和指针 5 【正确答案】 B 【试题解析】 本题中的 ”struct U”结构含有 3个数值域,并定义了一个结构数组S,计算 s0的 x域与 s1的 y域之和,故 s0 x+s1 y=1+5=6,答案为 B)。 【知识模块】 结构体、共用体、位运算及文件操作 6 【正确答案】 C 【试题解析】 a的类型是 struct M,它包括一个 int型,占 2字节,一个 union U类型,占 4字节。故变量 m所占字节数 =2+4=6。答案为 C)。

18、【知识模块】 结构体、共用体、位运算及文件操作 7 【正确答案】 D 【试题解析】 本题 stu数组下标为 1的元素的 name域中含有 P字符。 P在 name域的第 0位置。 【知识模块】 结构体、共用体、位运算及文件操作 8 【正确答案】 A 【试题解析】 “struct a”所占字节数为: x为 2, y为 1, z为 4, u为 5。故 “struct a”所占字节数 =2+1+4+5=12,答案为 A)。 【知识模块】 结构体、共用体、位运算及文件操作 9 【正确答案】 B 【试题解析】 被调用函数 fun()中的形式参数 p是一个 student型的结构指针。程序执行时,它接收

19、main()函数传递过来的地址 students+2,该地址是数组元素students2的首地址,因此程序输出是 “Zhao“。 【知识模块】 结 构体、共用体、位运算及文件操作 10 【正确答案】 D 【试题解析】 当结构成员是指针时,它将占用 2字节的存储单元 (在 small编译模式下 ),而与它所指向的数据类型无关。本题中,指针 cat的长度为 2字节; next是指向结构 struct U的指针,但它本身也只是一个指针,其长度也是 2字节;double型变量 dog的长度为 8字节。因此,结构变量 u的总长度为 12字节。 【知识模块】 结构体、共用体、位运算及文件操作 11 【正确

20、答案】 C 【试题解析】 运算符 -的优先级高于 +和木。在 第一条 printf()语句中,先将aa0中成员 m的值增 1,再取其值,输出 51;在第二条 printf()语句中,先将 p指针指向 aa1,然后取其成员 m的值,输出 60;在第三条 printf()语句中,先取aa1的成员 n(这时, n是一个指向数组元素 data1的指针 ),然后将该指针所指存储单元的值 20增 1,输出 21。 【知识模块】 结构体、共用体、位运算及文件操作 12 【正确答案】 A 【试题解析】 解决本题的关键是如何将一个节点插入到链表的末尾。应先将节点q的地址赋给原尾节点的 next域,然后将 q节点

21、的 next域赋 NULL。选项 B)先将指针 p指向 data域为 F的节点,然后将 data域为 F节点的 next域值 0赋给 q节点的 next域,即将其置为 0,再将 p所指的节点 next域放入指针 q的值,从而把 data域为 q节点连接在末尾;选项 C)先将 q的 next域置成 NULL(NULL与 0等价 ),然后将指针 p指向 data域为 F的节点,最后将 p所指节点的 next域置成q的值,同样可把 data域为 G的节点连接在末尾;选项 D)与选项 B)完全等价。因此,选项 B), C), D)都能达到题目的要求。而 选项 A)则先将指针 p指向 data域为 F的

22、节点,然后将 q的 next域置成 p的值,最后再将 data域为 F的节点又连接在 data域为 F的节点之后,从而使这两个节点的 next域都是 0,实际上已将data域为 F的节点排除在链表之外。 【知识模块】 结构体、共用体、位运算及文件操作 13 【正确答案】 D 【试题解析】 选项 A)将结构变量名赋给结构变量的指针成员,数据类型不匹配;选项 B)用指针引用结构成员时使用了 “ ”运算符;选项 C)使 a链接了 c,而c又链接了 c;选项 D)使 a链接了 c,使 c链接了 b,是正确的。 【知识模块】 结构体、共用体、位运算及文件操作 14 【正确答案】 C 【试题解析】 结构变

23、量所占的内存字节数等于其中各个成员所占的字节数的总和,而联合变量所占的内存字节数是其中最长的成员所需要的字节数。本题中结构变量 b有两个成员,一个是整型变量 c,它占 2字节内存,另一个是联合变量a,它自己也含有三个成员,其中占用内存空间最长的成员的变量 1,占 4字节内存,因此,联合变量 a所占内存字节数为 4,结构变量 b所占总的内存字节数为变量 c与变量 a所占字节数之和,即 2+4=6。 【知识 模块】 结构体、共用体、位运算及文件操作 15 【正确答案】 B 【试题解析】 枚举类型的定义形式与结构和联合类似,类型名后面直接跟花括号,花括号中放置枚举元素名,各枚举元素可以单独设置初值。

24、因此选项 B)是正确的定义方式。选项 A)中,类型名 e后多了一个 “=“;选项 C)中,枚举类型名 e后多了一个 “=“,枚举元素名多了双引号。选项 D)中,枚举元素名多了双引号。 【知识模块】 结构体、共用体、位运算及文件操作 16 【正确答案】 D 【试题解析】 用 typedef定义类型 char*时,按 下列步骤进行: 先用常规定义的方式写出定义: char*p; 再将上面定义的变量名 p用新类型标识符 Type替换: char*Type; 替换的结果就是新类型标识符,最后将 typedef放在替换式子的前面,就得到正确的类型定义形式: typedefchar*Type;。因此,本题

25、的正确选项是 D)。 【知识模块】 结构体、共用体、位运算及文件操作 17 【正确答案】 B 【试题解析】 本题中, struct是结构类型关键字, struct S是结构类型名, ST是结构类型名 structS的替换类型名,因此, 选项 B)是正确的。 【知识模块】 结构体、共用体、位运算及文件操作 18 【正确答案】 B 【试题解析】 将 x和 y化为二进制数分别得: x=0000 0010, y=0000 0011,则x&y=00000010&0000 0011=0000 0010,即 2,故本题的答案为 B)。 【知识模块】 结构体、共用体、位运算及文件操作 19 【正确答案】 D

26、【试题解析】 &运算比 运算优先级略高,最后执行逻辑或运算,不管位运算结果多少,因为 y不等于 0,最后进行或运算,逻辑位为 “真 ”,即 结果为 1。 【知识模块】 结构体、共用体、位运算及文件操作 20 【正确答案】 C 【试题解析】 在位运算中,操作数右移时,右端移出的部分舍弃,左端的移入分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1,因此对于操作数,每右移两位,其结果相当于进行了除以 4操作。 【知识模块】 结构体、共用体、位运算及文件操作 21 【正确答案】 C 【试题解析】 将八进制的 x和 y化为二进制数,分别得: x=0011 0001, y=0000

27、1110,则 z=x y=00110001 0000 1110=0011 1111,故本题的答案为 C)。 【知识模块】 结构体、共用体、位运算及文件操作 22 【正确答案】 A 【试题解析】 本题主要考查位运算符的优先级。由于左移运算符 ” ”的优先级较逻辑异或运算符 “ ”的优先级高,所以 c=a b 2=a (b 2)。由于 a=1,b=2,其二进制形式分别为 0000 0001和 0000 0010。代入 c=a b 2中得c=0000 0001 (oooo 0010 2)=0000 0001 0000 1000=0000 1001,即为 9。答案为 A)。 【知识模块】 结构体、共用

28、体、位运算及文件操作 23 【正确答案】 D 【试题解析】 本题考查文件打开方式。其中 “r“表示为输入打开一个文件, “w“表示为输出打开一个文本文件, “rb+“表示为读写打开一个二进制文件, “r+“表示以读写方式打开一个文本文件。 【知识模块】 结构体、共用体、位运算及文件操作 24 【正确答案】 C 【试题解析】 fprintf()函数可将各种类型的数据以格式化的形式写入文件, fread()函数以二进制数据块的形式从 二进制文件中读取数据, fwrite()函数以二进制数据块的形式将数据写入二进制文件, fputc()函数将一个字符写入文本文件。 【知识模块】 结构体、共用体、位运

29、算及文件操作 25 【正确答案】 C 【试题解析】 当用 “w“方式打开一个已有内容的文件时,文件中的已有内容将全部丢失,新写入的内容就是文件的内容。 【知识模块】 结构体、共用体、位运算及文件操作 26 【正确答案】 D 【试题解析】 字符串输入函数 fgets的调用形式为: fgets(s; n; fp);, fgets函数 的功能是:从 fp所指向的文件中读取长度不超过 n-1个字符的字符串,并将该字符串放到字符数组 s中,在读入字符串后会自动在字符串末尾加上 0结束符,表示字符串结束。 【知识模块】 结构体、共用体、位运算及文件操作 27 【正确答案】 C 【试题解析】 本题只要考查

30、fseek函数的使用。 fseek函数用来定位,是指向 fp文件的位置指针放在指定的位置上。 fseek(fp, offset, omg)的功能是将指针指到以omg为初始位置且偏移量为 offset个字节的地方。其中, offset是一个长整数, 表示指针移动的字节数。为负时,表示向文件头的方向移动;为正时,向文件尾的方向移动;为 0时不移动。 Omg用来指定指针的初始位置。本题中 fseek(fp, -10L, SEEK_END)含义是将指针 fp指到距离文件末尾向左偏移 10字节的地方。 【知识模块】 结构体、共用体、位运算及文件操作 28 【正确答案】 A 【试题解析】 位置指针重返文件

31、头指针 rewind的调用形式为: rewind(fp):,rewind(fp)的功能是:使 fp指定的文件的位置指针重返定位到文件的开始位置。 【知识模块】 结构体、共用体、位运算及文件操作 29 【正确答案】 C 【试题解析】 fread函数的调用形式为: ffead(buffer, size, count, fp);。其中, “buffer”是一个指针,对 fread来说,它是读入数据的存放地址,对 fwrite来说,是输出数据的地址; “size”是要读写的字节数; “cccount”是要进行读写多少个size字节的数据项; “fp”是指文件类型指针。 【知识模块】 结构体、共用体、位运算及文件操作 30 【正确答案】 A 【试题解析】 flell函数的调用形式为: long t=ftell(fp);。其中 fp是文件指针, t是所获得的文件当前位置指针的位置。 ftell(fp);的功能是给出当前位置指针相对于文件开头的字节数。本题答案为 A)。 【知识模块】 结构体、共用体、位运算及文件操作

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