欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc

    • 资源ID:1332363       资源大小:69.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc

    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)

    23、,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,Qian,f,350 解析:解析:主函数中定义结

    24、构体类型 struct stu,有三个成员,第一个成员为字符指针变量。主函数中为 stu 类型变量 a 赋值,阿先为 aname 成员分配存储空间,存入数据。b=a;语句执行完毕以后,a和 b 的各个成员值相同,需要注意的是 bname 和 aname 成员都保存了同一段内存的地址,因此当为变量 b 赋值的时候,同样更改了 a 的 name 成员,而其他成员由于有单独的存储空间而不会发生改变。7.若有以下程序 typedef struct stuchar*name,gender;int score; STU; void f(char*p)p=(char*)malloc(10);strcpy(p

    25、,“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,bscore); 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Qian,f,350B.Qian,f,350,Qian,f,350C.Qian,m,290,Qian,f,350D.Zhao,m,290,Zha

    26、o,f,350 解析:解析:函数 f(char*p)的主要功能申请字符串的存储空间,然后存入字符串“Qian“,但当程序调用结束以后,形参指针变量 p 撤销,存储的字符串地址丢失,而不能更改实参指针的值。主函数中结卡勾体变量定义同时赋初值,初始情况其 name 指针成员存储空,而后语句为其分配存储空间,存入字符串“Zhao”。执行“b=a;”语句后,b 的数据和 a 的数据相同,调用函数 f 以后,b 的 name 成员的值没变。8.若有以下程序 typedef struct stuchar name10,gender;int score;STU; void f(STU a,STU b) b=

    27、a; printf(“s,c,d,“,bname,bgendeL bscore); main()STU a=“Zhao“,m,290,b=“Qian“,f,350; f(a,b); printf(“s,c,dn“,bname,bgender,bscore); 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Zhao,m,290B.Zhao,m,290,Qian,f,350 C.Qian,f,350,Qian,f,350D.Zhao,m,290,Zhao,f,350解析:解析:函数 f(STU a,STU b)的主要功能是为把结构体变量 a 的值存放到 b 中,然后输出 b 中各个

    28、成员的值。主函数中调用函数 f(a,b),输出赋值以后 b 的数据,实际为 a“Zhao“,m290的数据,函数调用结束,形参 a 和 b 撤销,流程到主函数输出 b“Qian“,f,350的数据。9.若有以下程序 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; printf(“s,c,d,“,aname,agender,ascore); prin

    29、tf(“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,350 D.Zhao,m,290,Zhao,f,350解析:解析:主函数中结构体变量定义同时赋初值。执行 b=a;语句后,b 的数据和 a 的数据相同,调用函数 f(bname)。形参指针 p 接收实参 bname 的地址,此时 p 和 bname 指向同一个存储空间,流程转到 f 执行,p 指向的存储空间存放字符串“Qian“,流程结束返回主函数。主函数中变

    30、量 b 的其他成员存放数据。因此 a 的数据“Zhao“,m,290,b 的数据为“Qian“,f,350。注意本题结构体 STU 类型变量 a 和 b 中的 name 成员为数组,不是指针,它具有自己的存储空间。10.为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域)则在_处应填入的选项是 Stract linkchar data;_node; (分数:2.00)A.struct link*next; B.link next;C.link*next;D.struct link next;解析:解析:单链表为动态分配的存储空间,在分配时,每个结点

    31、之间可以是不连续的(结点内是连续的)。结点之问的联系用指针实现,即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域,该指针为了保持链表中结点的地址,因此其基类型和结点的类型相同,选项为 A。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-n解析:解析:选项 A 中表达式+(p-n)为前缀自加表达式,p-n 和 a0n 等价,其值为 5,

    32、前缀自加后值为 6。选项 B 中表达式(*p)n 和选项 D 的表达式 p-n 含义相同,表示取结构指针 p 所指向的成员,因此值为 5。选项 C 中表达式 p-n+为后缀自加表达式,相当于(p-n)+,表达式值为 5。12.以下叙述中正确的是(分数:2.00)A.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型B.在定义结构体类型时,编译程序就为它分配了内存空间C.结构体类型中各个成分的类型必须是一致的D.一个结构体类型可以由多个称为成员(或域)的成分组成 解析:解析:结构体类型,它是由若干“成员”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前必须先定义

    33、它,也就是构造它。 定义一个结构的一般形式为: struct 结构名 成员列表; 成员列表由若干个成员组成,对每个成员也必须作类型说明,其形式为:类型说明符 成员名; 可以说明类型不同的各个成员。13.以下叙述中正确的是(分数:2.00)A.结构体类型中的各个成分均不能是数组或指针B.结构体类型的变量,不能在声明结构体类型组成时一起定义C.使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的 D.元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义解析:解析:C 语言允许用 typedef 说明一种新类型名,typedef 语句的作用仅仅是用“标识符”来代表已存在

    34、的“类型名”,并未产生新的数据类型,原有类型名依然有效。结构体变量定义有下面三种形式:(1)先定义结构,再说明结构变量。(2)在定义结构类型的同时说明结构变量。(3)直接说明结构变量。14.以下叙述中正确的是(分数:2.00)A.函数的返回值不能是结构体类型B.函数的返回值不能是结构体指针类型C.在调用函数时,可以将结构体变量作为实参传给函数 D.结构体数组不能作为参数传给函数解析:解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。15.以下叙述中正确的是(分数:2.00)A.结构体变量的地址不能作为实参传给函数B.结构体数组名不能作为实参传给函数C.

    35、即使是同类型的结构体变量,也不能进行整体赋值D.结构体中可以含有指向本结构体的指针成员 解析:解析:一个结构体变量包含若下成员,这些成员可以是数值类型、字符类型、数组类型,也可以足指针类型,甚至可以是正在定义的结构体类型指针。用结构体变量作实参时,采取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了“地址传递”的方式,形参须为同类型的结构指针或者形参结构数组。16.设有如下的说明和定义 structint a;char*s;x,*p=&x;xa=4;xs=“hello“;则以下叙述中正确的是(分数:2.00)

    36、A.语句+p-a;的效果是使 P 增 1B.(p+)-a 与 p+-a 都是合语法的表达式,但二者不等价C.语句*p-s+;等价于(*p)-s+;D.语句+p-a;的效果是使成员 a 增 1 解析:解析:p-a 得到 p 指向的结构体变量中的成员 a 的值。p-a+ 得到 p 指向的结构体变量中的成员a 的值,用完该值后使 p-a 加 1。+p-a 得到 p 指向的结构体变量中的成员 a 的值使之加 1(先加)。由此可见指向运算符-优先级高于+,因此*p-s+相当于*(p-s)+,结合性自右至左,因此 p+-a 和(p+)-a 等价。17.有以下程序 struct Sint a;int b;)

    37、; main()struct S a,*p=&a; aa=99; printf(“dn“,_); 程序要求输出结构体中成员 a 的数据,以下不能填入横线处的内容是(分数:2.00)A.aaB.*pa C.p-aD.(*p)a解析:解析:如果 p 指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量成员名、(p)成员名、p-成员名。18.若已建立以下链表结构,指针 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-ne

    38、xt=s;D.p=(*p)next;(*s)next=(*p)next;(*p)next=s;解析:解析:选项 B 中首先 p 后移,s 的后继指针指向 p,p 的后继指向 s,在 s 和最后结点之间形成了圆圈,无法完成题中的操作。19.有以下程序 #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; fic); printf(“s,c

    39、,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,Zhao,m,85,90 D.Zhao,m,85,90,Qian,f,95,92解析:解析:在主函数中,定义了结构体 STU 数组 c2,并对其赋初始值。执行 f(c)时,在函数 f()中,把结构体变量 b 的值赋给了 c1。20.以下叙述中

    40、错误的是(分数:2.00)A.函数的返回值类型不能是结构体类型,只能是简单类型 B.只要类型相同,结构体变量之间可以整体赋值C.可以通过指针变量来访问结构体变量的任何成员D.函数可以返回指向结构体变量的指针解析:解析:函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。21.有以下程序 main()unsigned char a=8,c; C=a3; printf(“dn“,c); 程序运行后的输出结果是(分数:2.00)A.16B.32C.1 D.0解析:解析:在程序中对无符号字符变量 a 的值执行右移 3 位运算后,相当于 a8,其值等于 1,再赋给变量 c。22.有以下程序 m

    41、ain() unsigned char a=2,b=4,c=5,d; d=ab;d&=c; printf(“dn“,d); 程序运行后的输出结果是(分数:2.00)A.3B.5C.4 D.6解析:解析:本题考查位运算,为按位或运算,&为按位与运算,按位与(&)运算符的作用是:把参加运算的两个运算数按对应的二进制位分别进行“与”运算,当两个相应的位都为 1 时,该位的结果为 1:否则为 0。按位或()的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1:只有当两个相应位的数都为 0 时,该位的运算结果才为 0。首先 d=24 值为6,d=6&5 值为

    42、 4。23.下面选项中关于位运算的叙述正确的是(分数:2.00)A.位运算符都需要两个操作数B.左移运算的结果总是原操作数据 2 倍C.右移运算时,高位总是补 0D.位运算的对象只能是整型或字符型数据 解析:解析:位运算则是以位(bit)一级进行的运算,位运算符中除“”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的 2 倍。24.变量 a 中的数据用二

    43、进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是11110000若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是(分数:2.00)A.ab B.abC.a&bD.a1); 输出结果是(分数:2.00)A.8B.4 C.16D.2解析:解析:定义了整型变量 r,其值等于 8,在输出语句中,把变量 r 的值向右移动一位,在 C 语言中把变量向右移动一位,相当下其值除以 2,所以在题中把变量 r 的值 8 除 2,得到其值等于 4。26.有以下程序 main()int a=1,b=2,c=3,x; x=(ab)&c; printf(“dn“,x); 程序的运

    44、行结果是(分数:2.00)A.1B.2C.3 D.0解析:解析:1、2、3 的二进制形式分别为 00000001、00000010、00000011。首先计算 1 与 2 的或运算,即 12=(00000001)(00000010)=00000011,再将其与 3 进行“与”运算,结果为(00000011)&(00000011)=00000011,即十进制数 3。27.有以下程序 #include main() int a=2,b; b=a2;printf(“dn“,b);(分数:2.00)A.4B.6C.8 D.2解析:解析:表达式 a2,把 a 向左移动 2 位,相当于扩大 4 倍。28.有以下程序 #include main() char a=4; printf(“dn“,a=a1);(分数:2.00)A.8 B.16C.40D.4解析:解析:本题主要考查按位右移运算。a=4 的二进制为 00000100,a1 后为 00001000,其值为十进制数值 8。


    注意事项

    本文(【计算机类职业资格】国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13及答案解析.doc)为本站会员(appealoxygen216)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开