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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言(结构体和共用体、文件)机试模拟试卷 1及答案与解析 一、选择题 1 若有语句 typedef struet Sint g; char h; T;,则下列叙述中正确的是 ( )。 ( A)可用 S定义结构体变量 ( B)可用 T定义结构体变量 ( C) S是 struct类型的变量 ( D) T是 struet S类型的变量 2 设有语句 typedef struet Trchar c; int a4; CIN;,则下列叙述中正确的是( )。 ( A) CIN是 struct TT类型的变量 ( B) TT是 struct类型的变量 ( C)可以用 TT定义结构体变量 ( D)

2、可以用 CIN定义结构体变量 3 下列叙述中错误的是 ( )。 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)用 typedef可以为各种类型起别名,但不能为变量起别名 4 有以下程序: #include main() struet STU char name9; char sex: double score2; ; struct STU a=“Zhao”, m, 85 0, 90 0, b=“Qian“, f, 95 0, 92 0; b=a: prinff

3、(“ s, c, 2 0f, 2 0f n”, b name, b sex, b score0,b 8core1); 程序的运行结果是 ( )。 ( A) Qian, m, 85, 90 ( B) Zhao, m, 85, 90 ( C) Zhao, f, 95, 92 ( D) Qian, f, 95, 92 5 下列结构体类型说明和变量定义中正确的是 ( )。 ( A) struct REC; int n; char C; ; REC t1, t2; ( B) typedef struct int n; char c; REC; REC t1, t2; ( C) typedef struc

4、t REC; int n=0; char c=A; t1, 12; ( D) struct int n; char c: REC; REC t1, t2; 6 下列结构体的定义语句中错误的是 ( )。 ( A) stmct ordint x; int y; int z; struct ord a; ( B) struct ordint x; int y; int z; ; struct ord a; ( C) struct ordint x; int y; int z; a; ( D) structint x; int y; int z; a; 7 设有定义: struct complex i

5、nt real, unreal; datal=1, 8, data2; 则下列赋值语句中错误的是 ( )。 ( A) data2=(2, 6); ( B) data2=datal; ( C) data2 real=datal real; ( D) data2 real=datal unreal; 8 有以下程序: #include int a; char b10; double c; ; stmct A f(stmct A t); main() stmct A a=1001, “ZhangDa”, 1098 0; a=f(a); prinff(“ d, s, 6 1f n”, a a, a b

6、, a e); struct A f(stmct A t) t a=1002; strcpy(t b, “ChangRong”); t c=1202 0; return t; 程序的运行结果是 ( )。 ( A) 1002, ZhangDa, 1202 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1001, ZhangDa, 1098 0 9 有以下程序: struct stint x; int*y; *pt; int a=1, 2, b=3, 4; struct st e12=10, a, 20, b; 以

7、下选项中表达式值为 11的是 ( )。 ( A) +ptx ( B) pt一 x ( C) *pt一 y ( D) (pt+)一 x 10 有以下定义和语句: int Rum; char name20; char c; struct int day; int month; int year; s; ; stmct workers w, *pw; pw=&w: 能给 w中 year成员赋 1980的语句是 ( )。 ( A) pw一 year=1980; ( B) w year=1980; ( C) w s year=1980; ( D) *pw year=1980; 11 有以下程序: #in

8、clude struct ttint x; struct *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, 30, ( B) 30, 17 ( C) 15, 30, ( D) 20, 15, 12 设有定义: structchar mark12; int numl; double num2; t1, t2;,若变量均已正确赋初值,则下列语句中错误的是 ( )。 ( A) t1=t2; ( B) t2 numl

9、=t1, num1; ( C) t2 mark=t1 mark; ( D) t2 num2=t1 hum2; 13 有以下程序: #include struct S int a, b; data2=10, 100, 20, 200; main() struct S P=data1; prinff(“ d n”, +(P a); 程序的运行结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 14 有以下结构体说明、变量定义和赋值语句: struct STDchar name10; int age;char sex; $5, *ps; ps=&s0;则下列 scanf

10、函数调用语句有错误的是 ( )。 ( A) scanf(“ s”, s0 name); ( B) scant(“ d”, &s0 age); ( C) scanf(“ c”, &(ps一 sex); ( D) scanf(“ d”, ps一 age); 15 有以下程序: #include typedef structint b, P; A; void f(AC) *注意: c是结构变量名 * int j; c b+=1; c P+=2: main() int i; A a=1, 2; f(a); prinff(“ d, d n”, a b, a P); 程序的运行结果是 ( )。 ( A)

11、2, 4 ( B) 1, 2 ( C) 1, 4 ( D) 2, 3 16 有以下程序: #include struet S int n; int a20; ; void f(8truer S*p) int i, j, t; fbr(i=0; in一 1; i+) flor(j=i+1; jn; j+) if(P一 aiP一 aj) t=P一 ai; P一 ai=P一 aj; P一 aj=t; main() int i; struet S s=10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9; f(&s); for(i=0; inext: P=s: while(P一 next

12、)P=P一 next; P一 next=q: q一 next=NULL: 该程序段实现的功能是 ( )。 ( A)删除尾节点 ( B)尾节点成为首节点 ( C)删除首节点 ( D)首节点成为尾节点 18 假定已建立以下链表结构,且指针 P和 q已指向如图所示的节点。则下列选项中可将 q所指节点从链表中删除并释放该节点的语句组是 ( )。 ( A) P一 next=q一 next; free(q); ( B) p=q一 next; free(q); ( C) P=q; free(q); ( D) (*P) next=(*q) next; free(P); 19 下列关于 C语言文件的叙述中正确的

13、是 ( )。 ( A)文件由一系列数据依次排列组成,只能构成二进制文件 ( B)文件由结构序列组成,可以构成二进制文件或文本文件 ( C)文件由数据序列组成,可以构成二进制文件或文本文件 ( D)文件由字符序列组成,其类型只能是文本文件 20 下列关于 C语言文件的叙述中正确的是 ( )。 ( A)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 ( B)打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中对文件进行写操作后,必须先关闭该文件然后再打 开才能读到第一个数据 ( D) C语言中的文件是流式文件,因此只能顺序存取数据 21

14、有以下程序: #include main() FILE*fp; int a10=1, 2, 3, i, n; fp=fopen(“d1 dat”, ”W”); for(i=0; i main() FILE*f: f=fopen(“filea txt”, “w”); fprinff(f, “abc”); fclose(f); 若文本文件 filea txt中原有内容为 hello,则运行以上程序后,文件 filea, txt中的内容为 ( )。 ( A) abclo ( B) abc ( C) helloabc ( D) anchelle 24 读取二进制文件的函数调用形式为: fread(bu

15、ffer, size, count, fp);,其中buffer代表的是 ( )。 ( A)一个内存块的字节数 ( B)一个整型变量,代表待读取的数据的字节数 ( C)一个文件指针,指向待读取的文件 ( D)一个内存块的首地址,代表读人数据存放的地址 25 有以下程序: #include main() FILE* pf; char*s1=“China”, *s2=“Beijing”; pf=fopen(“abe dat”, “wb+”); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose

16、(pf); 程序执行后, abe dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 26 有以下程序: #include main() FILE* fp; char str10; fp=fopen(”myfile dat”, “w”); fputs(“abe”, fp); fclose(fp); fp=fopen(“myfile dat”, “a+”); fprintf(fp, “ d”, 28); rewind(fp); fscanf(fp, “ s”, str); puts(str); fc

17、lose(fp); 程序的运行结果是 ( )。 ( A) abe ( B) 28c ( C) abc28 ( D)因类型不一致而出错 27 设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。 ( A) 0 ( B) 0 ( C)非 0值 ( D) NULL 国家二级 C语言(结构体和共用体、文件)机试模拟试卷 1答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 本题考查 typedef重新声明一种结构体类型。那么 T为结构体类型,而不是结构体变量,所以 B选项正确。 【知识模块】 结构体和共用体 2 【正确 答案】 D 【试题解析】 本

18、题考查 typedef重新声明一种结构体类型。其中 CIN为结构体类型名,而不是结构体变量,所以 D选项正确。 【知识模块】 结构体和共用体 3 【正确答案】 B 【试题解析】 本题考查 typedef的用法。 typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以 B选项错误。 【知识模块】 结构体和共用体 4 【正确答案】 B 【试题解析】 本题考查结构体初始化操作。本题中可以直接将结构体 a赋值给b,所以输出的结果和 a一样 , B选项正确。 【知识模块】 结构体和共用体 5 【正确答案】 B 【试题解析】 本题考查结构体的相关知识。选项 A中 struct

19、REC后面不能有分号, C选项中 typedef struct REC的后面也不能有分号,选项 D中 REC已经是结构体变量,不能当作结构体类型来使用。 【知识模块】 结构体和共用体 6 【正确答案】 A 【试题解析】 A选项错误,不能在定义结构体的同时,又用结构体类型名定义变量,应该写成 B选项或者 D选项的格式。 【知识模块】 结构体和共用体 7 【正确答案】 A 【试题解析】 A选项中可以在声明变量的同时为 data2赋值,但是 data2=(2,6);应写作 data2=2, 6;,所以选择 A选项。 【知识模块】 结构体和共用体 8 【正确答案】 B 【试题解析】 本题考查结构体变量

20、的引用以及作为函数参数。题目虽然看似复杂,其实比较容易。 f函数的参数是结构体变量,然后对参数重新赋值并返回,所以选择 B选项。 【知识模块】 结构体和共用体 9 【正确答案】 A 【试题解析】 本题考查结构体数组初始化以及结构体变量的 引用。题目中定义了一个结构体数组 c并初始化,指针 pt指向 c的第一个元素,那么 pt一 x为 10,+pt一 x为 11, *pt一 y为 1, (pt+)一 x为 20,所以选择 A选项。 【知识模块】 结构体和共用体 10 【正确答案】 C 【试题解析】 木题考查结构体变量的引用。题目中定义了一个结构体,其中结构休中的变量又是一个结构体, w为外层结构

21、体,如果给内层结构体赋值,先要得到内层结构体变量,即 w s,若要给 year赋值,表示为 w s year即可,选项C正确。 【知识模块】 结构体和共用 体 11 【正确答案】 D 【试题解析】 本题考查结构体变量的引用以及结构体数组。 p指向 a数组的第一个元素,所以 p一 x为 20,然后 p=p一 y后, p指向数组 a的第二个元素,所以输出 15,选项 D正确。 【知识模块】 结构体和共用体 12 【正确答案】 C 【试题解析】 本题考查结构体变量的引用。 C选项中 mark为结构体中的数组,不能直接赋值,所以 C选项错误。 【知识模块】 结构体和共用体 13 【正确答案】 D 【试

22、题解析】 声明 data是结构 s数组,初始化 data0 a=10; data0 b:100; data1 a=20: data1 b=200。主函数中 p=data1;即p a=data1 a; p b=data1 b;,执行语句 printf(“ d n”, +(p a);,打印输出时, p a先增 1再打印, p a=data1 a=20,先增 1等于 21。 【知识模块】 结构体和共用体 14 【正确答案】 D 【试题解析】 本题考查结构体的相关知识。题目中需要输入一个变量, scanf要求参数为指针,而 D选项中 ps一 age为一个变量,不是指针,所以错误。 【知识模块】 结构体

23、和共用体 15 【正确答案】 B 【试题解析】 结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名,以实现传值调用,实参将副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响,所以选择 B选项。 【知识模块】 结构体和共用体 16 【正确答案】 C 【试题解析】 本题中子函数 f的功能是对结构体变量 s中第二个成员数组中的所有数据 进行从小到大的冒泡排序,所以结果是 C选项。 【知识模块】 结构体和共用体 17 【正确答案】 D 【试题解析】 本题考查链表的操作。本题中首先是 s指向了它的下个节

24、点,题目中说明了 s总是指向链表的第一个节点。然后 while循环找到链表的最后一个元素,最后一个元素指向了之前链表的头节点,之前头节点指向了空节点,所以本题实现的效果是使首节点成为尾节点,选项 D正确。 【知识模块】 结构体和共用体 18 【正确答案】 A 【试题解析】 本题考查删除链表中的节点操作。其方法是将要删除节点 的上个节点的下个节点指向要删除节点的下个节点,然后释放该要删除的节点,所以选项A正确。 【知识模块】 结构体和共用体 19 【正确答案】 C 【试题解析】 本题考查文件的概念。文件由数据序列组成,可以构成二进制文件或文本文件,所以答案为 C选项。 【知识模块】 文件 20

25、【正确答案】 A 【试题解析】 B选项中打开一个已存在的文件并进行写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。 C选项中在一个程序中对文件进行写操作后,不是先关闭该文件然后再打开才 能读到第一个数据,用fseek()函数进行重新定位即可。 D选项中, C语言中的文件可以进行随机读写。 【知识模块】 文件 21 【正确答案】 D 【试题解析】 程序首先将数组 a10中的元素 1、 2、 3分别写入了文件 d1 dat文件中,然后又将 d1 dat文件中的数据 123整体写到变量 n的空间中,所以打印 n时输出的数据为 123。 【知识模块】 文件 22 【正确答案】

26、 A 【试题解析】 考查文件操作函数 fopen的基础知识。以 w方式打开文件时只能写不能读。 【知识模块】 文件 23 【正确答案】 B 【试题解析】 本题考查文件操作函数。执行 fprintf(f, “abc”);后, f文件的内容就变为了 abc,所以 B选项正确。 【知识模块】 文件 24 【正确答案】 D 【试题解析】 fread(void术 buffer, size t size, size t count, FILE* stream)的功能是从一个文件流中读数据,读取 count个元素,每个元素 size字节,如果调用成功,返回 count。 buffer用于接收数据的内存地址,

27、大小至少是 size*count字节;size是单个元素的大小,单位是字节; count是元素的个数,每个元素是 size字节; stream是输入流。 【知识模块】 文件 25 【正确答案】 B 【试题解析】 本题考查文件操作函数: fwrite和 rewind函数。题目中先是将 s2字符串写入 adc dat中,然后将写指针回到文件开头,然后写入 s1字符串,那么s1字符串就将前 5个字符覆盖,所以最终结果为 chinang, B选项正确。 【知识模块】 文件 26 【正确答案】 C 【试题解析】 本题考查文件操作函 数: fprintf()函数。 fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件,或是相当于在文件的设备上执行两次 fprintf后,文件中有 abc28,所以 C选项正确。 【知识模块】 文件 27 【正确答案】 C 【试题解析】 本题考查文件的定位。 feof函数的用法是从输人流读取数据,如果到达文件末尾 (遇文件结束符 ), eof函数值为非零值,否则为 0,所以 C选项正确。 【知识模块】 文件

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