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

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

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