[计算机类试卷]国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试卷5及答案与解析.doc
《[计算机类试卷]国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试卷5及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言(结构体、共用体、位运算及文件操作)机试模拟试卷5及答案与解析.doc(19页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言(结构体、共用体、位运算及文件操作)机试模拟试卷 5及答案与解析 一、选择题 1 以下关于 typedef的叙述错误的是 ( A) typedef只是将已存在的类型用一个新的名字来代表 ( B)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( C)用 typedef可以增加新类型 ( D)用 typedef为类型说明一个新名,通常可以增加程序的可读性 2 若有定义 typedef int*T; T a10;则 a的定义与下面哪个语句等价 ( A) int*a10; ( B) int(*a)10; ( C) int*a; ( D) int a10;
2、3 以下叙述中正确的是 ( A)使用 typedef说明新类型名时,其格式是: typedef新类型名原类型名: ( B)使用 typedef说明新类型名时,后面不能加分号 ( C)在程序中,允许用 typedef来说明一种新的类型名 ( D)在使用 typedef改变原类型的名称后,只能使用新的类型名 4 下面结构体的定义语句中,错误的是 ( A) struct ordint x; int y; int z; ; struct orda; ( B) struct ordint x; int y; int z; struct ord a; ( C) struct ordint x; int y
3、; int z; a; ( D) structint x; int y; int z; )a; 5 设有定义: struct complexint rea1, unrea1; data1=1, 8, data2; 则以下赋值语句中错误的是 ( A) data2=(2, 6); ( B) data2=data1; ( C) data2 rea1=data1 rea1; ( D) data2 rea1=data1 unrea1; 6 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、 p、 q均己正确定义,并用于指向链表结点,指针变量 s总是作为头指针指向链表的第一个结点。 若有以下
4、程序段:q=s; s=s- next; p=s; while(p- next)p=p- next; P- next=q; q- next=NULL;该程序段实现的功能是 ( A)尾结点成为首结点 ( B)首结点成为尾结点 ( C)删除首结点 ( D)删除尾结点 7 有以下程序 #include stdio h #include string h Struct A int a; char b10; double c; ; struct A f(struct A t); main() struct A a=1001, “ZhangDa“, 1098 0; a=f(a); printf(“ d, s
5、, 6 1f n“, a a, a b, a c); struct A f(Struct A t) t a=1002; strcpy(t b, “ChangRong“); t c ( A) 1002, ZhangDa, 1202 0 ( B) 1002, ChangRong, 1202 0 ( C) 1001, ChangRong, 1098 0 ( D) 1001, ZhangDa, 1098 0 8 有以下程序段 struct stint x; int*y; *pt; int a=1, 2, b=3, 4; struct st c2=10, a, 20, b; pt=c; 以下选项中表达式
6、的值为 11的是 ( A) pt- x ( B) *pt- y ( C) +pt- x ( D) (pt+)- x 9 假定已 建立以下链表结构,且指针 P和 q已指向如图所示的节点:则以下选项中可将 q所指节点从链表中删除并释放该节点的语句组是 ( A) p=q- next; free(q); ( B) p=q; free(q); ( C) (*p) next=(*q) next; free(p); ( D) p- next=q- next; free(q); 10 有以下程序 #include stdio h struct tt int x; struct tt*y; )*p; struc
7、t tt a41=20, a+1, 15, a+2, 30, a+3, 17a; main() int i; p=a; for(i=1; i =2; i+)printf(“ d, “, p- x); p=p- y; 程序的运行结果是 ( A) 20, 15, ( B) 30, 17 ( C) 15, 30, ( D) 20, 30, 11 有以下程序 struct Aint a; char b10; double c; ; void f(struct A t); main()struct A a=1001, “ZhangDa“, 1098 0; f(a); printf(“ d, s, 6 1
8、tha“, a a, a b, a c); void f(struct A t)t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 ( B) 1001, ZhangDa, 1098 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, ZhangDa, 1202 0 12 若有以下程序 typedef struct stuchar name10, gender; int score; STU; void f(STU a, STU b) b=
9、a; printf(“ s, c, d, “, b name, b gender, b score); main()STU a=“Zhao“, m, 290, b=“Qian“, f, 350; f(a, b); printf(“ s, c, d n“, 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 13 若有以
10、下程序段 struct stint n; struct st*next; ; struct st a3=5, &a1, 7, &a2, 9, 0, *p; p=&a0; 则以下选项中值为 6的表达式是 ( A) +(p- n) ( B) (*p) n ( C) p- n+ ( D) p- n 14 以下叙述中正确的是 ( A)函数的返回值不能是结构体类型 ( B)函数 的返回值不能是结构体指针类型 ( C)在调用函数时,可以将结构体变量作为实参传给函数 ( D)结构体数组不能作为参数传给函数 15 有以下程序 struct Sint a; int b; ; main()struct Sa, *
11、p=&a; a a=99; printf(“ d n“, _); 程序要求输出结构体中成员 a的数据,以下不能填入横线处的内容是 ( A) a a ( B) *p a ( C) p- a ( D) (*p) a 16 以下叙述中错误的是 ( A)函数的返回值类型不能是结构体 类型,只能是简单类型 ( B)只要类型相同,结构体变量之间可以整体赋值 ( C)可以通过指针变量来访问结构体变量的任何成员 ( D)函数可以返回指向结构体变量的指针 17 下面选项中关于位运算的叙述正确的是 ( A)位运算符都需要两个操作数 ( B)左移运算的结果总是原操作数据 2倍 ( C)右移运算时,高位总是补 0 (
12、 D)位运算的对象只能是整型或字符型数据 18 有以下程序 main()int a=1, b=2, c=3, x; x=(ab)&c; printf(“ d nT“, x); 程序的运行 结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 0 19 有以下程序 #include stdio h main() int a=5, b=1, t; t=(a 2)|b; printf(“ d n“, t); ( A) 11 ( B) 6 ( C) 21 ( D) 1 20 若有以下程序 main()int c; C=13|5; printf(“ d n“, c); 则程序的输出结果是 ( A)
13、 15 ( B) 18 ( C) 13 ( D) 5 21 下面关于位运算符的叙述,正确的是 ( A)群表 示 “按位异或 ”的运算 ( B) |表示 “按位或 ”的运算 ( C)表示 “按位异或 ”的运算 ( D) &表示 “按位与 ”的运算 22 下面选项中关于 “文件指针 ”概念的叙述正确的是 ( A)文件指针就是文件位置指针,表示当前读写数据的位置 ( B)文件指针指向文件在计算机中的存储位置 ( C)文件指针是程序中用 FILE定义的指针变量 ( D)把文件指针传给 fscanf函数,就可以向文本文件中写入任意的字符 23 设文件指针 fp己定义,执行语句 fp=fopen(“fil
14、e“, “w“);后,以下针对文本文件 file操作叙述的选项中正确的是 ( A)写操作结束后可以从头开始读 ( B)可以在原有内容后追加写 ( C)可以随意读和写 ( D)只能写不能读 24 执行以下程序后, test txt文件的内容是 (若文件能正常打开 ) #include stdio h main() FILE*fb; char*s1=“Fortran“, *s2=“Basic“; if(fb=fopen(“test txt“, “wb“)=NULL) printf(“Cant open test txt file n“); exit(1); fwrite(s1, 7, 1, f1)
15、; *把从地址 s1开始的 7个字符写到 fb所指文件中 * fseek(fb, 0L, SEEK_SET); ( A) Basican ( B) BasicFortran ( C) Basic ( D) FortranBasic 25 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 26 有下列程序: #include stdio h main() FILE*fp; int a10=1, 2, 3, 0, 0, i; f
16、p=fopen(“d2 dat“, “wb“); fwtite(a, sizeof(int), 5, fp); fwrite(a, sizeof(int), 5, fp); fclose(fp); fp=fopen(“d2 dat“, “rb“); fread(a, sizeof(int), 10, fp); fclose(fp); for(i=0; i 10; i+)printf(“ dt“, a ( A) 1, 2, 3, 1, 2, 3, 0, 0, 0, 0, ( B) 1, 2, 3, 0, 0, 1, 2, 3, 0, 0, ( C) 123, 0, 0, 0, 0, 123, 0
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 结构 共用 运算 文件 操作 模拟 答案 解析 DOC
