【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C 语言机试(结构体、共用体、位运算及文件操作)模拟试卷 13 及答案解析(总分:56.00,做题时间:90 分钟)一、选择题(总题数:28,分数:56.00)1.有以下定义和语句: 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 的语句是(分数:2.00)A.wyear=1980;B.pw-year=1980;C.wsyear=1 980;D.*pwyear=1980;2.
2、有以下程序 #include struct tt int x;struct tt *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; 程序的运行结果是(分数:2.00)A.20,15,B.30,17C.15,30,D.20,30,3.有以下程序 #include #include“stringh“ typedef structchar name9;char sex;float score2;)STU; void f(STU a) STU b=“Zhao“,m,850,900;
3、int i; strcpy(aname,bname); asex=bsex; for(i=0;iA.Qian,m,85,90B.Zhao,m,85,90C.Zhao,f,95,92D.Qian,f,95,924.设有定义: structchar mark12;int numl;double num2;t1,t2;若变量均已正确赋初值,则以下语句中错误的是(分数:2.00)A.t2hum1=t1num1;B.t2mark=t1mark;C.t1=t2;D.t2num2=t1num2;5.有以下程序 struct A int a;charb10; double c; void f(structAt
4、); main()struct A a=1001,“ZhangDa“,10980; f(a); printf(“d,s,61 fn“,aa,ab,ac); void f(struct A t) ta=1002; strcpy(tb,“ChangRong“); tc=12020; 程序运行后的输出结果是(分数:2.00)A.1002,ChangRong,12020B.1001,ZhangDa,10980C.1001,ChangRong,10980D.1002,ZhangDa,120206.若有以下程序 struct stu char*name,gender;int score; main()st
5、ruct stu a=NULL,m,290),b; aname=(char*)malloc(10); strcpy(aname,“Zhao“); b=a;bgender=f;bscore=350; strcpy(bname,“Qian“); printf(“s,c,d,“,aname,agender,ascore); printf(“s,c,dn“,bname,bgender,bscore); 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Qian,f,350B.Qian,f,350,Qian,f,350C.Zhao,m,290,Zhao,e350D.Qian,m,290,Qi
6、an,f,3507.若有以下程序 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; aname=(char*)malloc(10); strcpy(aname,“Zhao“); b=a;f(bname); bgender=f;bscore=350; printf(“s,c,d,“,aname,agender,ascore); printf(“s,c,dn“,bname,bgender,bs
7、core); 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Qian,f,350B.Qian,f,350,Qian,f,350C.Qian,m,290,Qian,f,350D.Zhao,m,290,Zhao,f,3508.若有以下程序 typedef struct stuchar name10,gender;int score;STU; void f(STU a,STU b) b=a; printf(“s,c,d,“,bname,bgendeL bscore); main()STU a=“Zhao“,m,290,b=“Qian“,f,350; f(a,b); printf(“s
8、,c,dn“,bname,bgender,bscore); 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Zhao,m,290B.Zhao,m,290,Qian,f,350C.Qian,f,350,Qian,f,350D.Zhao,m,290,Zhao,f,3509.若有以下程序 typedef struct stuchar name10,gender;int score;)STU; void f(char*p)strcpy(p,“Qian“); main()STU a=“Zhao“,m,290,b; b=a;f(bname); bgender=f;bscore=350; pr
9、intf(“s,c,d,“,aname,agender,ascore); printf(“s,c,dn“,bname,bgender,bscore); 则程序的输出结果是(分数:2.00)A.Zhao,m;290,Zhao,m,290B.Qian,f,350,Qian,f,350C.Zhao,m,290,Qian,f,350D.Zhao,m,290,Zhao,f,35010.为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域)则在_处应填入的选项是 Stract linkchar data;_node; (分数:2.00)A.struct link
10、*next;B.link next;C.link*next;D.struct link next;11.若有以下程序段 struct stint n;struct st*next; struct st a3=5,&a1,7,&a2,9,0,*p; P=&a0; 则以下选项中值为 6 的表达式是(分数:2.00)A.+(p-n)B.(*p)nC.p-n+D.p-n12.以下叙述中正确的是(分数:2.00)A.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型B.在定义结构体类型时,编译程序就为它分配了内存空间C.结构体类型中各个成分的类型必须是一致的D.一个结构体类型可以由多个称为成员(
11、或域)的成分组成13.以下叙述中正确的是(分数:2.00)A.结构体类型中的各个成分均不能是数组或指针B.结构体类型的变量,不能在声明结构体类型组成时一起定义C.使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的D.元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义14.以下叙述中正确的是(分数:2.00)A.函数的返回值不能是结构体类型B.函数的返回值不能是结构体指针类型C.在调用函数时,可以将结构体变量作为实参传给函数D.结构体数组不能作为参数传给函数15.以下叙述中正确的是(分数:2.00)A.结构体变量的地址不能作为实参传给函数B.结构体数组名不能作为
12、实参传给函数C.即使是同类型的结构体变量,也不能进行整体赋值D.结构体中可以含有指向本结构体的指针成员16.设有如下的说明和定义 structint a;char*s;x,*p=&x;xa=4;xs=“hello“;则以下叙述中正确的是(分数:2.00)A.语句+p-a;的效果是使 P 增 1B.(p+)-a 与 p+-a 都是合语法的表达式,但二者不等价C.语句*p-s+;等价于(*p)-s+;D.语句+p-a;的效果是使成员 a 增 117.有以下程序 struct Sint a;int b;); main()struct S a,*p=&a; aa=99; printf(“dn“,_);
13、 程序要求输出结构体中成员 a 的数据,以下不能填入横线处的内容是(分数:2.00)A.aaB.*paC.p-aD.(*p)a18.若已建立以下链表结构,指针 p、s 分别指向如图所示结点 (分数:2.00)A.s-next=0;p=p-next;p-next=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;19.有以下程序 #include struct STUchar name9;char sex;int score2; vo
14、id 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; fic); printf(“s,c,d,d,“,c0name,c0sex,c0score0,c0score1); printf(“s,c,d,dn,“,c1name,c1sex,c1score0,e11score1); 程序运行后输出结果是(分数:2.00)A.Qian,f,95,92,Sun,m,98,99B.Zhao,m,85,90,Sun,m,98,99C.Qian,f,95,92
15、,Zhao,m,85,90D.Zhao,m,85,90,Qian,f,95,9220.以下叙述中错误的是(分数:2.00)A.函数的返回值类型不能是结构体类型,只能是简单类型B.只要类型相同,结构体变量之间可以整体赋值C.可以通过指针变量来访问结构体变量的任何成员D.函数可以返回指向结构体变量的指针21.有以下程序 main()unsigned char a=8,c; C=a3; printf(“dn“,c); 程序运行后的输出结果是(分数:2.00)A.16B.32C.1D.022.有以下程序 main() unsigned char a=2,b=4,c=5,d; d=ab;d&=c; pr
16、intf(“dn“,d); 程序运行后的输出结果是(分数:2.00)A.3B.5C.4D.623.下面选项中关于位运算的叙述正确的是(分数:2.00)A.位运算符都需要两个操作数B.左移运算的结果总是原操作数据 2 倍C.右移运算时,高位总是补 0D.位运算的对象只能是整型或字符型数据24.变量 a 中的数据用二进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是11110000若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是(分数:2.00)A.abB.abC.a&bD.a1); 输出结果是(分数:2.00)A.8B.4C.16D.226.有以下程序 m
17、ain()int a=1,b=2,c=3,x; x=(ab)&c; printf(“dn“,x); 程序的运行结果是(分数:2.00)A.1B.2C.3D.027.有以下程序 #include main() int a=2,b; b=ayear=1980;C.wsyear=1 980; D.*pwyear=1980;解析:解析:本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中 works 这个结构体中包含了结构体 s。所以对结构体变量 w 中 year 成员的引用是 wsyear。2.有以下程序 #include struct tt int x;stru
18、ct tt *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; 程序的运行结果是(分数:2.00)A.20,15, B.30,17C.15,30,D.20,30,解析:解析:程序定义了结构体类型 tt,其成员包括一个整型数据 x 和指向其自身结构的指针变量 y。程序在定义结构体数组 a 的同时对其进行了初始化。其元素 a0的成员 y 被赋值为元素 a1的地址,a1y 被赋值为 a2的地址,a2y 被赋予 a3的地址,a3y 被赋予 a0的地址。这就形成了一个单向的循环链表,每
19、个元素的指针成员都指向下一个元素的地址。在主函数中,通过一个 for 循环语句,输出该链表前 2 个节点数值成员的值,即 a0x 和 a1x。3.有以下程序 #include #include“stringh“ typedef structchar name9;char sex;float score2;)STU; void f(STU a) STU b=“Zhao“,m,850,900;int i; strcpy(aname,bname); asex=bsex; for(i=0;iA.Qian,m,85,90B.Zhao,m,85,90 C.Zhao,f,95,92D.Qian,f,95,9
20、2解析:解析:本题考查在结构体中函数的实参和形参的传递,调用 f(c)后,实参传向形参,进行 f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf 输出的还是 c 中实参的值。4.设有定义: structchar mark12;int numl;double num2;t1,t2;若变量均已正确赋初值,则以下语句中错误的是(分数:2.00)A.t2hum1=t1num1;B.t2mark=t1mark; C.t1=t2;D.t2num2=t1num2;解析:解析:这个题目主要涉及到结构体的定义与赋值操作。根据题意结构体变量 t1,t2
21、的成员变量mark 是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项 B 是用数组名实现字符数组之间的赋值操作,是错误的。5.有以下程序 struct A int a;charb10; double c; void f(structAt); main()struct A a=1001,“ZhangDa“,10980; f(a); printf(“d,s,61 fn“,aa,ab,ac); void f(struct A t) ta=1002; strcpy(tb,“ChangRong“); tc=12020; 程序运行后的输出结果是(分数:2.00)A.1002
22、,ChangRong,12020B.1001,ZhangDa,10980 C.1001,ChangRong,10980D.1002,ZhangDa,12020解析:解析:在主函数中定义结构体 A 的变量 a,并对其赋初值,再调用函数 f(a),形参 t 接收实参的数据,在函数 f(t)中对结构体变量 t 的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量 a 的数据6.若有以下程序 struct stu char*name,gender;int score; main()struct stu a=NULL,m,290)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 结构 共用 运算 文件 操作 模拟 试卷 13 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-1332363.html