[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷2及答案与解析.doc
《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷2及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷2及答案与解析.doc(28页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(结构体、共用体、位运算及文件操作)模拟试卷 2及答案与解析 一、选择题 1 以下叙述中错误的是 ( A)可以用 typedef将已存在的类型用一个新的名字来代表 ( B)可以通过 typedef增加新的类型 ( C)用 typedef定义新的类型名后,原有类型名仍有效 ( D)用 typedef可以为各种类型起别名,但不能为变量起别名 2 以下结构体类型说明和变量定义中正确的是 ( A) typedefstructint n; char c; )REC; REC t1, t2; ( B) struct REC; int n; char c; ); REC t1, t2;
2、( C) typedef struct REC; int n=0; char c=A; )t1, t2; ( D) structint n; char c; )REC; REC t1, t2; 3 若有定义 typedefint*T; T a10;则 a的定义与下面哪个语句等价 ( A) int*a10; ( B) int(*a)10; ( C) int*a; ( D) int a10; 4 以下结构体说明和变量定义中,正确的是 ( A) typedef struct abcint n; double m; )ABC; ABC x, y; ( B) struct abcint n; doubl
3、e m); struct abc x, y; ( C) struct ABCint n; double m; )struct ABC x, y; ( D) struct abcint n; double m; ); abc x, y; 5 以下叙述中错误的是 ( A) typedef的作用是用一个新的标识符来代表已存在的类型名 ( B) typedef说明的新类型名必须使用大写字母, 否则会出编译错误 ( C)可以用 typedef说明的新类型名来定义变量 ( D)用 typedef可以说明一种新的类型名 6 有以下程序 #include typedef structint b, p; )A;
4、 void f(A c) *注意: c是结构变量名 * intj; c b+=1; c p+=2; main() i; A a=1, 2); f(a); printf(“ d, d n“, a b, a p); ) 程序运行后的输出结果是 ( A) 2, 4 ( B) 1, 2 ( C) 1, 4 ( D) 2, 3 7 设有定义: struct complexint real, unreal; ) datal=1, 8), data2; 则以下赋值语句中错误的是 ( A) data2=(2, 6); ( B) data2=datal; ( C) data2 real=data1 real;
5、( D) data2 real=data1 unreal; 8 有以下程序 #include #include typedef structchar name9; char sex; int score2; STU; STU f(STU a) STU b=“Zhao“, m, 85, 90; int i; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; retum a; main() STU c=“Qian“, f, 95, 92), d; d=f(c); printf(“ s, c, d, d,
6、 “, d name, d sex, d score0,d score1); printf(“ s, c, d, d, “, c name, c sex, c score0,c score1); ( A) Zhao, m, 85, 90, Zhao, m, 85, 90 ( B) Qian, f, 95, 92, Qian, f, 95, 92 ( C) Zhao, m, 85, 90, Qian, f, 95, 92 ( D) Qian, f, 95, 92, Zhao, m, 85, 90 9 有以下结构体说明、变量定义和赋值语句 struct STD char name10; int a
7、ge;char sex; s5, *ps; ps=&s0;则以下 scanf函数调用语句有错误的是 ( A) scanf(“ d“, &s0 age); ( B) scanf(“ c“, &(ps- sex); ( C) scanf(“ s“, s0 name); ( D) scanf(“ d“ps- age); 10 有以下程序 , #include stdio h #include string h StmctA int a; char b10; double c; ; struct A f(struct A t); main() struct A a=1001, “ZhangDa“, 1
8、098 0); a=f(a); printf(“ d, s, 6 1 f n“,a a, a b, a c); struct A f(Struct 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 11 有以下程序 #include struct ord int x, y;
9、) dt2=1, 2, 3, 4); main()struct ord*p=dt; printf(“ d, “, +(p- x); printf(“ d n“, +(p- y); 程序运行后的输出结果是 ( A) 4,1 ( B) 2,3 ( C) 3,4 ( D) 1,2 12 有下列程序: struct Sint n; int a20; ; void flint*a,int n) int i; for(i=0; i n-1; i+)ai+=i; main() int i; struct S s=10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9); f(s a, s n);
10、 for(i=0; i s n; i+)printf(“ d, “, s ai); 程序运行后的输出结果是 ( A) 3, 4, 2, 7, 9, 8, 6, 5, 11, 10, ( B) 2, 3, 1, 6, 8, 7, 5, 4, 10, 9, ( C) 2, 4, 3, 9, 12, 12, 11, 11, 18, 9, ( D) 1, 2, 3, 6, 8, 7, 5, 4, 10, 9, 13 假定已建立以下链表结构,且指针 p和 q已指向如图所示的节点:则以下选项中可将 q所指节点从链表中删除并释放该节点的语句组是 ( A) p=q- next; free(q); ( B) p
11、=q; free(q); ( C) (*p) next=(*q) next; free(p); ( D) p- next=q- next; free(q); 14 有以下定义和语句: struct workers int num; char name20; char c; struct int day; int month; int year; )s; ); struct workers w, *pw; pw=&w: 能给 w中 year成员赋 1980的语句是 ( A) w year=1980; ( B) pw- year=1980; ( C) w s year=1980; ( D) *pw
12、 year=1980; 15 有以下程序 #include #include“string h“ typedefstructchar name9; char sex; float score2; STU; void f(STU a) STU b=“Zhao“, m, 85 0, 90 0); int i; strcpy(a name, b name); a sex=b sex; for(i=0; i 2; i+)a scorei=b scorei; 程序的运行结果是 ( A) Qian, m, 85, 90 ( B) Zhao, m, 85, 90 ( C) Zhao, f, 95, 92 (
13、 D) Qian, f, 95, 92 16 有以下程序 struct A f int a; char b10; double c; ; void f(structAt); main() struct A a=1001, “ZhangDa“, 1098 0; f(a); printf(“ d, s, 6 1 f n“, a a, a b, a c); void ffstructAt) t a=1002; strcpy(t b, “ChangRong“); t c=1202 0; 程序运行后的输出结果是 ( A) 1002, ChangRong, 1202 0 ( B) 1001, ZhangD
14、a, 1098 0 ( C) 1001, ChangRong, 1098 0 ( D) 1002, ZhangDa, 1202 0 17 若有以下程序 typedef struct stuchar*name, gender; int score; STU; void f(char*p)p=(char*)malloc(10); strcpy(p, “Qian“); main() STU a=NULL, m, 290, b; a name=(char*)malloc(10); strcpy(a name, “Zhao“); b=a; f(b name); b gender=f: b score=3
15、50; printf(“ s, c, (1, “, a name, a gender, a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Qian, f, 350 ( B) Qian, C350, Qian, f, 350 ( C) Qian, m, 290, Qian, f, 350 ( D) Zhao, m, 290, Zhao, f, 350 18 若有以下程序 typedef struct stuchar name10, gender; int score; S
16、TU; void f(char*P)strcpy(p, “Qian“); main() STU a=“Zhao“, m, 290, b; b=a; f(b name); b gender=f: b score=350; printf(“ s, c, d, “, a name, a gender, a score); printf(“ s, c, d n“, b name, b gender, b score); 则程序的输出结果是 ( A) Zhao, m, 290, Zhao, m, 290 ( B) Qian, f, 3 50, Qian, f, 350 ( C) Zhao, m, 290
17、, Qianf, 350 ( D) Zhao, m, 290, Zhao, f, 350 19 若有以下程序段 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 20 以下叙述中正确的是 ( A)结构体类型中的各个成分均不能是数组或指针 ( B)结构体类型的变量,不能在声明结构体类型组成时一起定义 ( C)使用 typedef定义新类型名后,新类型名与原类型
18、名实际上是等价的 ( D)元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 21 以下叙述中正确的是 ( A)结构体变量的地址不能作为实参传给函数 ( B)结构体数组名不能作为实参传给函数 ( C)即使是同类型的结构体变量,也不能进行整体赋值 ( D)结构体中可以含有指向本结构体的指针成员 22 有以下程序 struct Sint a; int b; ); main() struct S a, *p=&a; a a=99; pfintf(“ d n“, _); )程序要求输出结构体中成员 a的数据,以下不能填入横线处的内容是 ( A) a a ( B) *p a ( C) p-
19、 a ( D) (*p) a 23 有以下程序 #include struct STUchar name9; char sex; int score2; ; void f(struct STU a) struct STU b=“zhao“,m, 85, 90); a1=b; main() struct STU c2=“Qian“, f, 95, 92, “Sun“, m, 98, 99; f(c); printf(“ s, c, d, d, “, c0 name, c0 sex, c0 score0,c0 score1); printf(“ s, c, d, d n“, “, c1 name,
20、 c1 sex, c1 score0,c1 score1); 程序运行后输出结果是 ( A) Qian, f, 95, 92, Sun, m, 98, 99 ( B) Zhao, m, 85, 90, Sun, m, 98, 99 ( C) Qian, f, 95, 92, Zhao, m, 85, 90 ( D) Zhao, m, 85, 90, Qian, f, 95, 92 24 有以下程序 main() unsigned char a=8, c; c=a 3; printf(“ d n“, c); 程序运行后的输出结果是 ( A) 16 ( B) 32 ( C) 1 ( D) 0 25
21、 下面选项中关于位运算的叙述正确的是 ( A)位运算符都需要两个操作数 ( B)左移运算的结果总是原操作数据 2倍 ( C)右移运算时,高位总是补 0 ( D)位运算的对象只能是整型或字符型数据 26 有以下程序 main() int a=1, b=2, c=3, x; x=(ab)&c; printf(“ d n“, x); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) O 27 有以下程序 #include main() char a=4; printf(“ d n“, a=a 1); ( A) 8 ( B) 16 ( C) 40 ( D) 4 28 若变量已正确定
22、义 ,则以下语句的输出结果是 s=32; s=32; printf(“ d“, s); ( A) -1 ( B) 1 ( C) 32 ( D) 0 29 若有以下程序 main() int c: C=13 5: prinff(“ d n“, c); 则程序的输出结果是 ( A) 15 ( B) 18 ( C) 13 ( D) 5 30 有以下程序 main() int i=1; i=ii; printf(“ d n“, i); 程序运行后的输出结果是 ( A) -1 ( B) 0 ( C) 1 ( D) 7 31 以下叙述中正确的是 ( A)打开一个已存在的文件并进行了写操作后,原有文件中的全
23、部数据必定被覆盖 ( B)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据 ( C) C语言中的文件是流式文件,因此只能顺序存取数据 ( D)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 32 下面选项中关于 “文件指针 ”概念的叙述正确的是 ( A)文件指针就是文件 位置指针,表示当前读写数据的位置 ( B)文件指针指向文件在计算机中的存储位置 ( C)文件指针是程序中用 FILE定义的指针变量 ( D)把文件指针传给 fscanf函数,就可以向文本文件中写入任意的字符 33 有以下程序 #include main() FILE*
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 结构 共用 运算 文件 操作 模拟 答案 解析 DOC
