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

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

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

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

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

    1、国家二级 C 语言机试(结构体、共用体、位运算及文件操作)模拟试卷 12 及答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.以下叙述中错误的是(分数:2.00)A.可以用 typedef 将已存在的类型用一个新的名字来代表B.可以通过 typedef 增加新的类型C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名2.以下关于 typedef 的叙述错误的是(分数:2.00)A.typedef 只是将已存在的类型用一个新的名字来代表B.用 typedef 可以为各种类型说明一

    2、个新名,但不能用来为变量说明一个新名C.用 typedef 可以增加新类型D.用 typedef 为类型说明一个新名,通常可以增加程序的可读性3.以下结构体类型说明和变量定义中正确的是(分数:2.00)A.typedefstructint n;char c;REC;REC t1,t2;B.struct REC;int n;char c;REC t1,t2;C.typedef struct REC;int n=0;char c=A;t1,t2;D.structint n;char c;REC;REC t1,t2;4.以下叙述中错误的是(分数:2.00)A.可以用 typedef 将已存在的类型用

    3、一个新的名字来代表B.可以通过 typedef 增加新的类型C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名5.若有定义 typedefint*T;T a10;则 a 的定义与下面哪个语句等价(分数:2.00)A.int*a10;B.int(*a)10;C.int*a;D.int a10;6.若有定义 typedef char T10;T*a;上述定义中 a 的类型与下面选项中完全相同的是(分数:2.00)A.char(*a)10;B.char*a;C.char a10;D.char*a10;7.以下结构体说明和变量定义

    4、中,正确的是(分数:2.00)A.typedef struct abcint n;double m;ABC;ABC x,y;B.struct abcint n;double m;struct abc x,y;C.struct ABCint n;dooble m;struct ABC x,y;D.struct abcint n;double m;abc x,y;8.以下叙述中正确的是(分数:2.00)A.使用 typedef 说明新类型名时,其格式是:typedef 新类型名原类型名;B.使用 typedef 说明新类型名时,后面不能加分号C.在程序中,允许用 typedef 来说明一种新的类型

    5、名D.在使用 typedef 改变原类型的名称后,只能使用新的类型名9.以下叙述中错误的是(分数:2.00)A.typedef 的作用是用一个新的标识符来代表已存在的类型名B.typedef 说明的新类型名必须使用大写字母,否则会出编译错误C.可以用 typedef 说明的新类型名来定义变量D.用 typedef 可以说明一种新的类型名10.有以下程序段 Typedef struct NODE int hum;struct NODE*next; OLD; 以下叙述中正确的是(分数:2.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.OLD 是一个结构型类型D.OLD 是一个结构变

    6、量11.下面结构体的定义语句中,错误的是(分数:2.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a;C.struct ordint x;int y;int z;a;D.structrot x;mt y;int z; a;12.有以下程序 #includestdioh typedef structint b,p;A; void f(A c)*注意:c 是结构变量名* int j; cb+=1;cp+=2; main()i;A a=1,2; fa); printf(“d

    7、,dn“,ab,ap); 程序运行后的输出结果是(分数:2.00)A.2,4B.1,2C.1,4D.2,313.有以下程序 struct S int a,b;)data2=10,100,20,200; main() struct S p=data1;printf(“dn“,+(pa); 程序运行后的输出结果是(分数:2.00)A.11B.20C.21D.1014.设有定义: struct complexint real,unreal; datal=1,8,data2; 则以下赋值语句中错误的是(分数:2.00)A.data2=(2,6);B.data2=data1;C.data2real=da

    8、ta1real;D.data2real=data1unreal;15.有以下程序 struct S int n;int a20; voidf(struct S *p) int i,j,t; for(i=0;in-1;i+) for(i=i+1;jn;j+) if(p-aip-aD)t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,1,6,8,7,5,4,10,9; f(&s); for(i=0;iA.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,

    9、D.1,2,3,4,5,6,7,8,9,10,16.有以下程序 #includestdioh #includestringh typedef structchar name9;char sex;int score2;STU; STU f(STU a) STU b=“Zhao“,m,85,90; int i; strcpy(aname,bname); asex=bsex; for(i-0;i2;i+)ascorei=bscorei; return a; main() STU c=“Qian“,f,95,92,d; d=f(c); printf(“s,c,d,0d“,dname,dsex,dsco

    10、re0,dscore1); printf(“s,c,d,d,“,cname,csex,cscore0,cscore1); (分数:2.00)A.Zhao,m,85,90,Zhao,m,85,90B.Qian,f,95,92,Qian,f,95,92C.Zhao,m,85,90,Qian,f,95,92D.Qian,f,95,92,Zhao,m,85,9017.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、P、q 均已正确定义,并用于指向链表结点,指针变量 s 总是作为头指针指向链表的第一个结点。 (分数:2.00)A.尾结点成为首结点B.首结点成为尾结点C.删除首结点D.删除

    11、尾结点18.有以下结构体说明、变量定义和赋值语句 struct STDchar name10;int age;char sex; s5,*ps;ps=&s0;则以下 scanf 函数调用语句有错误的是(分数:2.00)A.scanf(“d“,&s0age);B.scanf(“c“,&(ps-sex);C.scanf(“s“,s0name);D.scanf(“d“,ps-age);19.若有以下语句 typedefstruct S int g;char h;T;以下叙述中正确的是(分数:2.00)A.可用 S 定义结构体变量B.S 是 struct 类型的变量C.T 是 struct S 类型的

    12、变量D.可用 T 定义结构体变量20.有以下程序 #include #include StructA int a;char b10;double c; struct A f(structAt); main() struct A a=1001,“ZhangDa“,10980; a=f(a);printf(“d,s,61 fn“,aa,ab,ac); struct A f(Struct A t) ta=1002;strcpy(tb,“ChangRong“);tc=12020;return t; 程序运行后的输出结果是(分数:2.00)A.1002,ZhangDa,12020B.1002,Chang

    13、Rong,12020C.1001,ChangRong,10980D.1001ZhangDa,1098021.设有以下语句 typedefstruct TTchar c;int a4;CIN;则下面叙述中正确的是(分数:2.00)A.TT 是 struct 类型的变量B.可以用 TT 定义结构体变量C.CIN 是 struct TT 类型的变量D.可以用 CIN 定义结构体变量22.有以下程序#include struct ordint x,y; dt2=1,2,3,4;main()struct ord *p=dt; printf(“d,“,+(p-x);printf(“dn“,+(p-y);

    14、程序运行后的输出结果是(分数:2.00)A.4,1B.2,3C.3,4D.1,223.有以下程序段 struct stint x;int*y;*pt; int a=1,2),b=3,4; struct st c2=10,a,20b; pt=c; 以下选项中表达式的值为 11 的是(分数:2.00)A.pt-xB.*pt-yC.+1)t-xD.(pt+)-x24.有下列程序: struct Sint n;int a20; void f(int*a,int n) int i; for(i=0;iA.3,4,2,7,9,8,6,5,11,10,B.2,3,1,6,8,7,5,4,10,9,C.2,4

    15、,3,9,12,12,11,11,18,9,D.1,2,3,6,8,7,5,4,10,9,25.有下列程序: #include #include typedef structchar name9;char sex;float score2;STU; STU f(STU a) STU b=“Zhao“,m,850,900);int i; strcpy(aname,bname); asex=bsex; for(i=0;i main() STU c=“Qian“,f,950,920),d; d=f(c);printf(“s,c,20f,20fn“,dneme,dsex,dscore0,dscore1

    16、); 程序的运行结果是(分数:2.00)A.Qian,m,85,90B.Zhao,f,95,92C.Zhao,m,85,90D.Qian,f,95,9226.假定已建立以下链表结构,且指针 p 和 q 已指向如图所示的节点: (分数:2.00)A.p=q-next;free(q);B.p=q;free(q);C.(*p)next=(*q)next;flee(p);D.p-next=-qnext;free(q);27.有以下程序 #include #include structA int a;char b10;double c; void f(structA t);main() structAa

    17、=1001,“ZhangDa“,10980; f(a);printf(“d,s,61fn“,aa,ab,ac); void f(struct A t) ta=1002; strcpy(tb,“ChangRong“); tc=12020; 程序运行后的输出结果是(分数:2.00)A.1002,ChangRong,12020B.1001,ChangRong,10980C.1001,ZhangDa,10980D.1002,ZhangDa,12020国家二级 C 语言机试(结构体、共用体、位运算及文件操作)模拟试卷 12 答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数

    18、:54.00)1.以下叙述中错误的是(分数:2.00)A.可以用 typedef 将已存在的类型用一个新的名字来代表B.可以通过 typedef 增加新的类型 C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名解析:解析:C 语言允许用 typedef 说明一种新类型名,说明新类型名的语句一般形式为:typedef 类型名 标识符;在此,“类型名”必须是在此语句之前已有定义的类型标识符。“标误符”是一个用户定义标识符,用作新的类型名。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型

    19、,原有类型名依然有效。2.以下关于 typedef 的叙述错误的是(分数:2.00)A.typedef 只是将已存在的类型用一个新的名字来代表B.用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名C.用 typedef 可以增加新类型 D.用 typedef 为类型说明一个新名,通常可以增加程序的可读性解析:解析:C 语言允许用 typedef 说明一种新的类型名,其一般形式为:typedef 类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。聊 edef 语句的作用仅仅是用“标识符”来代表已存在的“类

    20、型名”,并未产生新的数据类型,原来的类型名依然有效,这样可以增加程序的可读性。3.以下结构体类型说明和变量定义中正确的是(分数:2.00)A.typedefstructint n;char c;REC;REC t1,t2; B.struct REC;int n;char c;REC t1,t2;C.typedef struct REC;int n=0;char c=A;t1,t2;D.structint n;char c;REC;REC t1,t2;解析:解析:定义结构体类型的一般形式为:struct 结构体名成员列表;struct 结构体名后不能加“;”号,所以选项 B、C)错误,选项 D

    21、中定义无名称的结构体类型同时定义结构体变量形式应为“struct t1,t2;”。选项 A 为用户自定义类型,其为正确的定义形式。4.以下叙述中错误的是(分数:2.00)A.可以用 typedef 将已存在的类型用一个新的名字来代表B.可以通过 typedef 增加新的类型 C.用 typedef 定义新的类型名后,原有类型名仍有效D.用 typedef 可以为各种类型起别名,但不能为变量起别名解析:解析:C 语言允许用 typedef 说明一种新类型名:typedef 类型名 标识符;。 其中“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名:ty

    22、pedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。5.若有定义 typedefint*T;T a10;则 a 的定义与下面哪个语句等价(分数:2.00)A.int*a10; B.int(*a)10;C.int*a;D.int a10;解析:解析:typedef 的主要功能是为存在的类型命名,后面的代码中可以利用该新定义的类型名定义变量,题目中定义了整型指针类型 T,而后利用 T 定义了整型指针数组 a,含有 10 个元素,选项 A 中定义了整型指针数组 a,选项 B 定义了一个指向一维数组的指针 a,选项 C 定义指针变量,而选项 D 为

    23、定义整型数组最常用的形式,数组 a 中可以存放 10 个数据元素。6.若有定义 typedef char T10;T*a;上述定义中 a 的类型与下面选项中完全相同的是(分数:2.00)A.char(*a)10;B.char*a;C.char a10;D.char*a10; 解析:解析:题目中利用 typedef 定义了字符数组类型 T,而后定义了该类型的指针 a,因此 a 为指针数组。7.以下结构体说明和变量定义中,正确的是(分数:2.00)A.typedef struct abcint n;double m;ABC;ABC x,y; B.struct abcint n;double m;s

    24、truct abc x,y;C.struct ABCint n;dooble m;struct ABC x,y;D.struct abcint n;double m;abc x,y;解析:解析:选项 B 中结构体定义中每个成员后面的分号都不能省略,double m 后没分号,因此错误。选项 C 结构体类型定义完毕后,外没加分号。选项 D 中定义变量要加上关键字 struct。8.以下叙述中正确的是(分数:2.00)A.使用 typedef 说明新类型名时,其格式是:typedef 新类型名原类型名;B.使用 typedef 说明新类型名时,后面不能加分号C.在程序中,允许用 typedef 来

    25、说明一种新的类型名 D.在使用 typedef 改变原类型的名称后,只能使用新的类型名解析:解析:C 语言允许用 typedef 说明一种新类型名。定义形式:typedef 类型名 标识符; 其中“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名;typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。9.以下叙述中错误的是(分数:2.00)A.typedef 的作用是用一个新的标识符来代表已存在的类型名B.typedef 说明的新类型名必须使用大写字母,否则会出编译错误 C.可以用 typed

    26、ef 说明的新类型名来定义变量D.用 typedef 可以说明一种新的类型名解析:解析:typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用人写字母表示。10.有以下程序段 Typedef struct NODE int hum;struct NODE*next; OLD; 以下叙述中正确的是(分数:2.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.OLD 是一个结构型类型 D.OLD 是一个结构变量解析:解析:本题考查结构体和 typedf 类型定义。本题的声明代码相当于两部分,首

    27、先定义 struct NODE,然后是一 typedef 定义 OLD 类型,因此 OLD 是结构体类型。选项 C 正确,其他选项错误。11.下面结构体的定义语句中,错误的是(分数:2.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a; C.struct ordint x;int y;int z;a;D.structrot x;mt y;int z; a;解析:解析:在选项 B 中,由于在定义完结构体后缺少分号“;”,所以这是一条不完整的语句,因而是错误的。12.有以

    28、下程序 #includestdioh typedef structint b,p;A; void f(A c)*注意:c 是结构变量名* int j; cb+=1;cp+=2; main()i;A a=1,2; fa); printf(“d,dn“,ab,ap); 程序运行后的输出结果是(分数:2.00)A.2,4B.1,2 C.1,4D.2,3解析:解析:在 C 语言中,数据只能从实参单向传递给形参,称为“按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。所以本题中在 main()函数 f(a)语句中结构体实参a 作为值,传递给函数 f(A c)中的形参 c:这

    29、种值传递的方式不会对实参 a 产生任何影响,所以结构体实参 a 的值不会发生变化。13.有以下程序 struct S int a,b;)data2=10,100,20,200; main() struct S p=data1;printf(“dn“,+(pa); 程序运行后的输出结果是(分数:2.00)A.11B.20C.21 D.10解析:解析:在题目中定义了结构体 S 类型的数组变量 data,并对其赋初值。在程序中定义了指向结构体 S 类型的变量 p,并把数组 data 的第二个元素 data1的值赋给它,所以此时成员变量 pa 的值等于20,在输出时分别加 1,所以输入结果为选项 C。

    30、14.设有定义: struct complexint real,unreal; datal=1,8,data2; 则以下赋值语句中错误的是(分数:2.00)A.data2=(2,6); B.data2=data1;C.data2real=data1real;D.data2real=data1unreal;解析:解析:本题主要考查结构体变量的定义与初始化。题目中定义了 complex 类型的结构体变量 data1和 data2,并对 data1 进行了初始化。可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。15.有以下程序 struct S int

    31、 n;int a20; voidf(struct S *p) int i,j,t; for(i=0;in-1;i+) for(i=i+1;jn;j+) if(p-aip-aD)t=p-ai;p-ai=p-aj;p-aj=t; main() int i;struct S s=10,2,3,1,6,8,7,5,4,10,9; f(&s); for(i=0;iA.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.1,2,3,4,5,6,7,8,9,10, 解析:解析:void f(struct S *p)函数的功

    32、能使用了结构体指针变量实现对一维数组的元素从小到大排序。用关系表达式 p-aip-aj实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句 f(&s);的功能实现对结构体变量 s 中一维数组的元素从小到大的排序,所以循环语句的输出结果为 1,2,3,4,5,6,7,8,9,10。16.有以下程序 #includestdioh #includestringh typedef structchar name9;char sex;int score2;STU; STU f(STU a) STU b=“Zhao“,m,85,90; int i; strcpy(aname,bn

    33、ame); asex=bsex; for(i-0;i2;i+)ascorei=bscorei; return a; main() STU c=“Qian“,f,95,92,d; d=f(c); printf(“s,c,d,0d“,dname,dsex,dscore0,dscore1); printf(“s,c,d,d,“,cname,csex,cscore0,cscore1); (分数:2.00)A.Zhao,m,85,90,Zhao,m,85,90B.Qian,f,95,92,Qian,f,95,92C.Zhao,m,85,90,Qian,f,95,92 D.Qian,f,95,92,Zha

    34、o,m,85,90解析:解析:在 C 语言中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调 f(e)后,实参 e 的值并不会变化,仍是原值。在函数 f 中把局部变量 b 的值依次返回给变量 d。17.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、P、q 均已正确定义,并用于指向链表结点,指针变量 s 总是作为头指针指向链表的第一个结点。 (分数:2.00)A.尾结点成为首结点B.首结点成为尾结点 C.删除首结点D.删除尾结点解析:解析:分析程序可知,程序段首先让 q

    35、 指向链表的首结点,s 指向链表的第二结点,p 此时指向链表的第二个结点。然后在 while 循环中,当 p 的后继结点非空时,让 p 指向链表的最后一个结点,退出循环。然后让尾结点指向首结点,并使首结点的后继结点为 NULL。所以最终实现链表的首结点成为尾结点。18.有以下结构体说明、变量定义和赋值语句 struct STDchar name10;int age;char sex; s5,*ps;ps=&s0;则以下 scanf 函数调用语句有错误的是(分数:2.00)A.scanf(“d“,&s0age);B.scanf(“c“,&(ps-sex);C.scanf(“s“,s0name);

    36、D.scanf(“d“,ps-age); 解析:解析:程序段定义了结构体变量数组 s5和指针变量 ps,然后 ps 指向数组 s5中的第一个元素,因而 ps-age 引用 s0age。因为在输入 scanf()函数中,第 2 个参数应该表示为地址变量,而选项 D表示的值,而不是一个地址值。19.若有以下语句 typedefstruct S int g;char h;T;以下叙述中正确的是(分数:2.00)A.可用 S 定义结构体变量B.S 是 struct 类型的变量C.T 是 struct S 类型的变量D.可用 T 定义结构体变量 解析:解析:本题考查 typedef,T 是 struct

    37、 S 的新名称,因此可用 T 定义结构体变量,但是 T 并不是变量,只是 struct S 的新名称。20.有以下程序 #include #include StructA int a;char b10;double c; struct A f(structAt); main() struct A a=1001,“ZhangDa“,10980; a=f(a);printf(“d,s,61 fn“,aa,ab,ac); struct A f(Struct A t) ta=1002;strcpy(tb,“ChangRong“);tc=12020;return t; 程序运行后的输出结果是(分数:2.

    38、00)A.1002,ZhangDa,12020B.1002,ChangRong,12020 C.1001,ChangRong,10980D.1001ZhangDa,10980解析:解析:在主函数中定义结构体 A 的变量 a,并对其赋初值,再调用函数坟 a),在函数 f(a)中对结构体变量 a 的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。21.设有以下语句 typedefstruct TTchar c;int a4;CIN;则下面叙述中正确的是(分数:2.00)A.TT 是 struct 类型的变量B.可以用 TT 定义结构体变量C.CIN 是 struct TT 类型的变量D.可以

    39、用 CIN 定义结构体变量 解析:解析:C 语言允许用 typedef 说明一种新的类型名,说明新类型名的语句为一般形式为:typedef类型名 标识符在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用 typedef 定义 CIN 为 TT 的一种新的类型名,因而可以用它定义一个结构体变量。22.有以下程序#include struct ordint x,y; dt2=1,2,3,4;main()struct ord *

    40、p=dt; printf(“d,“,+(p-x);printf(“dn“,+(p-y); 程序运行后的输出结果是(分数:2.00)A.4,1B.2,3 C.3,4D.1,2解析:解析:在题目中定义了结构体 ord 类型的数组变量 dt,并对其赋初值。在程序中定义了指向结构体 ord 类型的指针变量 p,并且它指向变量数组 dt 的第一个元素 dt0,所以此时成员变量 p-x 的值等于 1,成员变量 p-y 的值等于 2,在输出时分别加 1,所以输出结果为选项 B。23.有以下程序段 struct stint x;int*y;*pt; int a=1,2),b=3,4; struct st c2

    41、=10,a,20b; pt=c; 以下选项中表达式的值为 11 的是(分数:2.00)A.pt-xB.*pt-yC.+1)t-x D.(pt+)-x解析:解析:由题目的已知条件可知,pt 指向结构体数组 c2的第一元素 c0,所以 pt-x=10,执行自加运算后为 11。24.有下列程序: struct Sint n;int a20; void f(int*a,int n) int i; for(i=0;iA.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

    42、,9,解析:解析:void f(int *a,int n)函数的功能是对数组 a的每一个元素加上其下标的值。所以在main()函数中 f(sasn)语句会调用 f(int*a,int n)函数,此时指针 a 指向数组sa=2,3,1,6,8,7,5,4,10,9,n=10:然后执行 for(i=0;i25.有下列程序: #include #include typedef structchar name9;char sex;float score2;STU; STU f(STU a) STU b=“Zhao“,m,850,900);int i; strcpy(aname,bname); asex

    43、=bsex; for(i=0;i main() STU c=“Qian“,f,950,920),d; d=f(c);printf(“s,c,20f,20fn“,dneme,dsex,dscore0,dscore1); 程序的运行结果是(分数:2.00)A.Qian,m,85,90B.Zhao,f,95,92C.Zhao,m,85,90D.Qian,f,95,92 解析:解析:f()函数的功能是对形参 a 的各个成员用结构体变量 b 的各个成员进行赋值后然后返同变量 a。存主函数中调用 f(c)函数时,将 STU 类型的结构体变量 c 的值传递给形参 a,函数 f()在对 a 的各个成员进行重新

    44、赋值后,再将返回变量 a 的值传给 d,最后输出结构变量 d 的各个成员的值。26.假定已建立以下链表结构,且指针 p 和 q 已指向如图所示的节点: (分数:2.00)A.p=q-next;free(q);B.p=q;free(q);C.(*p)next=(*q)next;flee(p);D.p-next=-qnext;free(q); 解析:解析:本题考查了在线性链表删除一个节点的方法,要删除 q 所指向的节点,只需要把 q 所指向的节点的前一个节点中的后继指针指向 q 所指向的节点的下一个节点即可,即 p-next=q-next。再释放 q所指向的节点,即 free(q)。27.有以下程

    45、序 #include #include structA int a;char b10;double c; void f(structA t);main() structAa=1001,“ZhangDa“,10980; f(a);printf(“d,s,61fn“,aa,ab,ac); void f(struct A t) ta=1002; strcpy(tb,“ChangRong“); tc=12020; 程序运行后的输出结果是(分数:2.00)A.1002,ChangRong,12020B.1001,ChangRong,10980C.1001,ZhangDa,10980 D.1002,ZhangDa,12020解析:解析:本题主要考查是的函数调用时参数之间的传递问题。在 C 语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。所以对于本题来说,在主函数中执行 f(a),把结构体变量 a 的值复制一份传递给形参变量 t,而实参变量 a 的值保持不变。


    注意事项

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




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

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

    收起
    展开