[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷4及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷4及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷4及答案与解析.doc(27页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 4及答案与解析 一、选择题 1 以下叙述中错误的是 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)用 typedef可以为各种类型起别名,但不能为变量起别名 2 以下结构体类型说明和变量定义中正确的是 ( A) typedefstructintn; charc; REC; RECtl, t2; ( B) structREC; intn; charc; ); RECt1, t2; ( C) typ
2、edefstructREC; intn=0; charc=A; tl, t2; ( D) structintn; charc; REC; RECtl, t2; 3 若有定义 typedefint*T; Ta10;则 a的定义与下面哪个语句等价 ( A) int*a10; ( B) int(*a)10; ( C) int*a; ( D) inta10; 4 下结构体说明和变量定义中,正确的是 ( A) typedefstructabcintn; doublem; abc; abcx, y; ( B) structabcintn; doublem); structabcx, y; ( C) str
3、uctabcintn; doublem; structabcx, y; ( D) structabcintn; doublem; ; abcx, y; 5 以下叙述中错误的是 ( A) typedef的作用是用一个新的标识符来代表已存在的类型名 ( B) typedef说明的新类型名必须使用大写字 *,否则会出编译错误 ( C)可以用 typedef说明的新类型名来定义变量 ( D)用 typedef可以说明一种新的类型名 6 下面结构体的定义语句中,错误的是 ( A) structordintx; inty; intz; ); structorda; ( B) structordintx;
4、inty; intz; structorda; ( C) structordintx; inty; intz; )a; ( D) structintx; inty; intz; a; 7 有以下程序 structSinta, b; data2=10, 100, 20, 200; main( ) structSp=data1; printf(” dkn”, +(p a); 程序运行后的输出结果是 ( A) 11 ( B) 20 ( C) 21 ( D) 10 8 有以下程序 structSintn; inta20; ); voidf(structS*p) inti,j, t; for(i=0;
5、i p- n-1; i+) for(j i+1 j p- n j+) if(p- ai p- aj)t P- ai; p- ai=p- aj; p- aj t; main( ) inti; structSs=10, 2,3, l, 6, 8, 7, 5, 4, 10, 9); f( s); for(i=0; i s-n; i+)printf( d, , s ai); ( A) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( B) 2,3, 1, 6, 8, 7, 5, 4, 10, 9, ( C) 10, 9, 8, 7, 6, 1, 2, 3, 4, 5, ( D) l,
6、2, 3, 4, 5, 6, 7, 8, 9, 10 9 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 S、 P、 q均已正确定义,并用于指向链表结点, 指针变量 S总是作为头指针指向链表的第一个结点。 若有以下程序段: q s; S=S- next; p s; while(p- next)p=p- next; p- next=q; q-next=NULL;该程序段实现的功能是 ( A)尾结点成为首结点 ( B)首结点成为尾结点 ( C)删除首结点 ( D)删除尾结点 10 若有以下语句 typedefstructSintg; charh; T;以下叙述中正确的是 ( A)可用
7、S定义结构体变量 ( B) S是 struct类型的变量 ( C) T是 structS类型的变量 ( D)可用 T定义结构体变量 11 设有以下语句 typedefstructTTcharc; inta4; CIN;则下面叙述中正确的是 ( A) TT是 struct类型的变量 ( B)可以用 TT定义结构体变量 ( C) CIN是 structTT类型的变量 ( D)可以用 CIN定义结构体变量 12 有以下程序段 structstintx; int*y; )*pt; inta=1, 2), b=3, 4); structstc2=10, a, 20, b); pt=c; 以下选项中表达式
8、的值为 11的 是 ( A) pt- x ( B) *pt- y ( C) +pt- x ( D) (pt+)- x 13 有下列程序: #include stdio h #include string h typedefstructcharname9; charsex; floatscore2; STU; STUf(STUa) STUb=Zhao, m, 85 0, 90 0); inti; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; returna; main( ) STUc=“Qian,
9、f, 95 0, 92 0, d; d=f(c); printf(” s, c, 2 0f, 2 0fW,d neme, d sex, d score0,d score1); 程序的运行结果是 ( A) Qian, m, 85, 90 ( B) Zhao, f,95, 92 ( C) Zhao, m, 85, 90 ( D) Qian, f,95, 92 14 有以下程序 #include stdio h #include string_h structA inta; charb10; doublec; ); voidf(structAt); main( ) structAa=1001,Zha
10、ngDa”, 1098 0; f(a); printf(” d, s, 6 1fn”, a a, a b, a c); voidf(structAt) t a=1002; strcpy(t_b, ”ChangRong”); t c=1202 0; 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 ( B) 1001, ChangRong, 1098 0 ( C) 1001, ZhangDa, 1098 0 ( D) 1002, ZhangDa, 1202 0 15 有以下程序 #include stdio h structtt intx; structtt*y;
11、 )*p; structtta4=20, a+l, 15, a+2, 30, a+3, 17, a; main( ) inti; p a; for(i=l; i =2; i+)printf( d, ”, p- x); p=p y; ) 程序的 运行结果是 ( A) 20, 15, ( B) 30, 17 ( C) 15, 30, ( D) 20, 30 16 设有定义: structcharmark12; intnuml; doublenum2; tl, t2;若变量均已正确赋初值 ,则以下语句中错误的是 ( A) t2 numl=t1 numl: ( B) t2 mark=t1 mark;
12、( C) tl=t2; ( D) t2 num2=t1 num2; 17 若有以下程序 structstuchar*name, gender; intscore; ); main( ) structstua=NULL, m, 290, b; a name=(char*)malloc(10); strcpy(a name, Zhao); b a; b gender=f; b score=350; strcpy(b name, “Qian”); printf(” s, c, d, ”, a name, a gender,a score); printf(” s, c, dn”, b name, b
13、 gender, b score); ) 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f,350 ( B) Qian, f,350, Qian, f,350 ( C) Zhao, m, 290, Zhao, f,350 ( D) Qian, m, 290, Qian, f,350 18 若有以下程序 typedefstructstucharname10, gender; intscore; )STU; voidf(STUa, STUb) b=a: printf(” s, c, d, ”, b name, b gender,b score); main( ) STUa=
14、Zhao, m, 290, b=Qian, f, 350; f(a, b); printf(” s, c, dha”, b name, b gender,b score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Zhao, m, 290, Qian, f,350 ( C) Qian, f,350, Qian, f,350 ( D) Zhao, m, 290, Zhao, f,350 19 为了建立如图所示的存储结构 (即每个结点含两个域, data是数据域, next是指向结点的指针域 ),则在 【】 处应填入的选项是 Structlin
15、kchardata; 【】 node; ( A) structlink*next; ( B) linknext; ( C) link*next; ( D) structlinknext; 20 以下叙述中正确的是 ( A)结构体类型中的成分只能是 C语言中预先定义的基本数据类型 ( B)在定义结构体类型时,编译程序就为它分配了内存空间 ( C)结构体类型中各个成分的类型必须是一致的 ( D)一个结构体类型可以由多个称为成员 (或域 )的成分组成 21 以下叙述中正 确的是 ( A)函数的返回值不能是结构体类型 ( B)函数的返回值不能是结构体指针类型 ( C)在调用函数时,可以将结构体变量作为
16、实参传给函数 ( D)结构体数组不能作为参数传给函数 22 设有如下的说明和定义 structinta; 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 23 若已建立以下链表结构,指针 P、 S分别指向如图所示结点则不能将 S所指节点插入到链表末尾的语句组是 ( A) S- next=0; p: P- next; P- n
17、ext=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; 24 以下叙述中错误的是 ( A)函 数的返回值类型不能是结构体类型,只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 25 有以下程序 main( ) unsignedchara=8, c; C=a 3:
18、 printf(” dkn”, c); 程序运行后的输出结果是 ( A) 16 ( B) 32 ( C) 1 ( D) 0 26 下面选项中关于位运算的叙述正确的是 ( A)位运算符都需要两个操作数 ( B)左移运算的结果总是 原操作数据 2倍 ( C)右移运算时,高位总是补 0 ( D)位运算的对象只能是整型或字符型数据 27 若有以下程序段 intr=8; printf( dn, r 1); 输出结果是 ( A) 8 ( B) 4 ( C) 16 ( D) 2 28 有以下程序 #include stdio h main( ) inta=2, b; b=a 2; printf(” dn”,
19、 b); ( A) 4 ( B) 6 ( C) 8 ( D) 2 29 有以下程序 #include stdio h main( ) inta=5, b=1, t; t (a 2)Ib; printf( dn, t); ( A) 11 ( B) 6 ( C) 21 ( D) 1 30 若有以下程序 main( ) intc; c=105; printf( dkn, c); ) 则程序的输出结果是 ( A) 15 ( B) 10000 ( C) 5 ( D) 105 31 有以下程序 main( ) inti=0; i=-i; printf( dn, i); ) 程序运行后的输出结果是 ( A)
20、 0 ( B) 1 ( C) 8 ( D) 0.1 32 下面关于位运算符的叙述,正确的是 ( A) #表示 按位异或 的运算 ( B) Il表示 按位或 的运算 ( C)表示 按位异或 的运算 ( D)表示 按位与 的运算 33 以下叙述中正确的是 ( A)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( B)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据 ( C) C语言中的文件是流式文件,因此只能顺序存取数据 ( D)当对文件 的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 34 下面选项中关于 文件指针 概念
21、的叙述正确的是 ( A)文件指针就是文件位置指针,表示当前读写数据的位置 ( B)文件指针指向文件在计算机中的存储位置 ( C)文件指针是程序中用 FILE定义的指针变量 ( D)把文件指针传给 fscanf函数,就可以向文本文件中写入任意的字符 35 设文件指针 fp已定义,执行语句 fp=fopen(file, w);后,以下针对文本文件file操作叙述的选项中正确的是 ( A)写操作结束后 可以从头开始读 ( B)可以在原有内容后追加写 ( C)可以随意读和写 ( D)只能写不能读 36 有以下程序 #include stdio h main( ) FILE*fp; inti, a6=1
22、, 2, 3, 4, 5, 6; fp=fopen(d2 dat, w+); for(i=0; i 6; i+)fprintf(fp, dn”, ai); rewind(fp); for(i=0; i 6; i+)fscanf(fp, d”, a5-i); fclose(fp); for(i=0; i 6; i+)printf(” d”, ai); ( A) 1,2, 3, 4, 5, 6 ( B) 6, 5, 4, 3, 2, 1, ( C) 4, 5, 6, 1, 2, 3, ( D) 1,2, 3, 3, 2, 1 37 读取二进制文件的函数调用形式为: fread(buffer,siz
23、e, count, fp);其中 buffer代表的是 ( A)一个整型变量,代表待读取的数据的字节数 ( B)一个内存块的首地址,代表读入数据存放的地址 ( C)一个文件指针,指向待读取的文件 ( D)一个内存块的字节数 38 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 39 有下列程序: #include stdio h main( ) FILE*fp; intk, n, a6=1,2, 3, 4, 5, 6);
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 结构 共用 运算 文件 操作 模拟 答案 解析 DOC
