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

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

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

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

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

    1、国家二级 C 语言机试(结构体、共同体、位运算及文件操作)模拟试卷 13 及答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.下列说法正确的是( )。(分数:2.00)A.使用 typedef 可以定义新的数据类型B.使用 struct 可以定义新的数据类型C.使用 typedef 可以对现有类型起别名,但不能定义数据类型D.使用 new 关键字可以定义新的数据类型2.以下说法正确的是( )。(分数:2.00)A.typedef 和 struct 可以联合使用来定义新数据类型B.typedef 只能单独使用C.struct 只能单独使用D.以上说

    2、法都不正确3.若 typedef char T3;T*a;上述定义中 a 的类型与下面选项中完全相同的是( )。(分数:2.00)A.char(*A)3;B.char*a;C.char a3;D.char*a3;4.关于 typedef 的叙述中正确的是( )。(分数:2.00)A.在使用 typedef 改变原类型的名称后,只能使用新的类型名B.使用 typedef 说明新类型名时,后面不能加分号C.在程序中,允许用 typedef 来说明一种新的类型名D.使用 typedef 说明新类型名时,其格式是:typedef 新类型名原类型名5.对以下程序段的叙述中正确的是( )。typedef

    3、struct NODEint num;struct NODE*next;mynode;(分数:2.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.mynode 是一个结构体类型D.mynode 是一个结构体变量6.以下程序的输出结果是( )。struct STRint a,b;data2=10,100,20,200;main()struct STR p=data1;printf(dn,+(pa);(分数:2.00)A.11B.20C.21D.107.以下程序的输出结果是( )。 struct STRint n;int a20; void f(struct STR*p) int i

    4、,j,t; for(i=0;i 一 1;i+) for(j=i+1;jn;j+) if(p 一aip 一aj)t=p 一ai;p一ai=p 一aj;p 一aj=t; l main() int i;struct STR s=10,2,3,1,6,8,7,5,4,10,9; f(&s); for(i=0;isn;i+)printf(d,sai); (分数:2.00)A.10,9,8,7,6,5,4,3,2,1,B.10,9,8,7,6,1,2,3,4,5,C.2,3,1,6,8,7,5,4,10,9,D.1,2,3,4,5,6,7,8,9,10,8.设 struct STRchar name10;

    5、int age;char sex;s5,*ps;ps=&s0;则以下 scanf 函数调用语句有错误的是( )。(分数:2.00)A.scanf(c,&(ps 一sex);B.scan(d,&s0age);C.scanf(s,s0name);D.scanf(d,ps 一age);9.以下程序的输出结果是( )。 #include #include struet A int a;char b10;double c; struet A f(struet A t); main() struct A a=1001,Bob,10980; a=f(a);printf(d,s,61fn,aa,ab,ac);

    6、 struct A f(struct A t) ta=1002;strcpy(tb,Mike);tc=12020;return t;(分数:2.00)A.1002,Bob,12020B.1002,Mike,12020C.1001,Mike,10980D.1001,Bob,1098010.以下程序的输出结果是( )。 #includestruct STRint x,y;dt2=1,2,3,4;main()struct STR*p=dt; printf(d,+(p 一x);printf(dn,+(p 一y);(分数:2.00)A.1,2B.2,3C.3,4D.4,111.有下列程序的输出结果是(

    7、)。struct Sint n;int a20;void f(int*a,int n)int i;for(i=0;in 一 1;i+)ai+=i;main()int i;struet S s=10,1,2,3,4,5,6,7,8,9,10;f(sa,sn);for(i=0;is13;i+)printf(d,sai);(分数:2.00)A.2,4,6,8,10,12,14,16,18,10B.2,3,1,6,8,7,5,4,10,9,C.1,3,5,7,9,1 l,13,15,17,10,D.1,2,3,6,8,7,5,4,10,9,12.关于结构体类型的叙述中正确的是( )。(分数:2.00)

    8、A.结构体类型中的成员不能是数组或指针B.结构体类型的变量,不能在声明结构体类型组成时一起定义C.使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的D.元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义13.关于结构体函数的叙述中正确的是( )。(分数:2.00)A.即使是同类型的结构体变量。也不能进行整体赋值B.结构体数组名不能作为实参传给函数C.结构体变量的地址不能作为实参传给函数D.结构体中可以含有指向本结构体的指针成员14.以下程序的输出结果是( )。main()unsigned char a=2,b=4,c=5,d;d=ab;d&=c;printf(

    9、dn,d);(分数:2.00)A.0B.2C.4D.815.变量 a=01011101,变量 b=11110000,若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是( )。(分数:2.00)A.a bB.a&bC.a2D.a416.以下程序的输出结果是( )。 main()int a=l,b=2,c=3,x; x=(a b)&c; printf(dn,x);(分数:2.00)A.0B.1C.3D.217.以下程序的输出结果是( )。 #include main() char a=4; printf(d,a=a1);(分数:2.00)A.8B.16C.64D.418.以下程序段的

    10、输出结果是( )。 s=32; s =32: printf(d,s);(分数:2.00)A.32B.一 1C.1D.019.以下程序的输出结果是( )。main()int c;c=1315;printf(dn,c); (分数:2.00)A.18B.5C.13D.820.关于文件操作的叙述中正确的是( )。(分数:2.00)A.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据B.C 语言中的文件是流式文件,因此只能顺序存取数据C.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数

    11、据丢失21.关于 C 语言文件指针的叙述正确的是( )。(分数:2.00)A.文件指针就是文件位置指针,表示当前读写数据的位置B.文件指针指向文件在计算机中的存储位置C.文件指针是程序中用 FILE 定义的指针变量D.文件指针就是 scanf 函数返回的值22.不能用于向文件中写人数据的 C 语言函数是( )。(分数:2.00)A.fprintfB.fputcC.ftellD.fwrite23.C 语言中的 dread(buffer,size,count,fp);函数是用来读取二进制文件的,关于 buffer 的叙述正确的是( )。(分数:2.00)A.一个自定义变量B.一个内存块的首地址,代

    12、表读人数据存放的地址C.一个文件指针,指向待读取的文件D.一个内存块的字节数24.关于文件操作中的标高符“EOF”的叙述中正确的是( )。(分数:2.00)A.EOF 即 NULLB.文本文件和二进制文件都可以用 EOF 作为文件结束标志C.EOF 是在库函数文件中定义的符号常量D.对于文本文件,fgetc 函数读入最后一个字符时,返回值是 EOF25.以下程序依次把从终端输入的字符存放到 file 文件中,用#作为结束输入的标志,则在横线处应填入的选项是( )。 #include main()FILE*cpoint; char ch; cpoint=fopen(file,w); while(

    13、ch=getchar()!=#) fputc(_); fclose(cpoint); (分数:2.00)A.fpoint,chB.chC.ch,cpointD.ch,file国家二级 C 语言机试(结构体、共同体、位运算及文件操作)模拟试卷 13 答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.下列说法正确的是( )。(分数:2.00)A.使用 typedef 可以定义新的数据类型B.使用 struct 可以定义新的数据类型C.使用 typedef 可以对现有类型起别名,但不能定义数据类型 D.使用 new 关键字可以定义新的数据类型解析:解析

    14、:C 语言中只能通过 struct 关键字定义新的结构体,使用 typedef 对现有类型起别名,但不能定义新的数据类型,所以答案 C 正确。2.以下说法正确的是( )。(分数:2.00)A.typedef 和 struct 可以联合使用来定义新数据类型B.typedef 只能单独使用C.struct 只能单独使用D.以上说法都不正确 解析:解析:typedef 和 struct 可以联合使用来定义新的结构体,但不能定义新的数据类型。所以A,B,C 选项的说法均不正确。答案选 D 项。3.若 typedef char T3;T*a;上述定义中 a 的类型与下面选项中完全相同的是( )。(分数:

    15、2.00)A.char(*A)3;B.char*a;C.char a3;D.char*a3; 解析:解析:C 语言允许用 typed 说明一种新类型名。题目中利用 typedef 定义了字符数组类型 T,而后定义了该类型的指针 a,因此 a 为指针数组。4.关于 typedef 的叙述中正确的是( )。(分数:2.00)A.在使用 typedef 改变原类型的名称后,只能使用新的类型名B.使用 typedef 说明新类型名时,后面不能加分号C.在程序中,允许用 typedef 来说明一种新的类型名 D.使用 typedef 说明新类型名时,其格式是:typedef 新类型名原类型名解析:解析:

    16、C 语言允许用 typedef 说明一种新类型名。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。5.对以下程序段的叙述中正确的是( )。typedef struct NODEint num;struct NODE*next;mynode;(分数:2.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.mynode 是一个结构体类型 D.mynode 是一个结构体变量解析:解析:本题考查结构体和 typedef 类型定义。本题的声明代码相当于两部分,首先定义 street NODE,然后是以 typedef 定义 myn

    17、ode 类型,因此 mynode 是结构体类型 NODE 的别名或标识度。选项 C 正确,其他选项错误。6.以下程序的输出结果是( )。struct STRint a,b;data2=10,100,20,200;main()struct STR p=data1;printf(dn,+(pa);(分数:2.00)A.11B.20C.21 D.10解析:解析:在题目中定义了结构体 STR 类型的数组变量 data,并对其赋初值。在程序中定义了指向结构体 STR 类型的变量 p,并把数组 data 的第二个元素 data1的值赋给它,所以此时成员变量 pa 的值等于 20,在输出时分别加 1,所以输

    18、入结果为选项 C。7.以下程序的输出结果是( )。 struct STRint n;int a20; void f(struct STR*p) int i,j,t; for(i=0;i 一 1;i+) for(j=i+1;jn;j+) if(p 一aip 一aj)t=p 一ai;p一ai=p 一aj;p 一aj=t; l main() int i;struct STR s=10,2,3,1,6,8,7,5,4,10,9; f(&s); for(i=0;isn;i+)printf(d,sai); (分数:2.00)A.10,9,8,7,6,5,4,3,2,1,B.10,9,8,7,6,1,2,3

    19、,4,5,C.2,3,1,6,8,7,5,4,10,9,D.1,2,3,4,5,6,7,8,9,10, 解析:解析:题目中函数的功能使用了结构体指针变量实现对一维数组的元素从小到大排序。用关系表达式 p 一aip 一aj实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句 f(&s);的功能实现对结构体变量 s 中一维数组的元素从小到大的排序,所以循环语句的输出结果为 1,2,3,4,5,6,7,8,9,10。8.设 struct STRchar name10;int age;char sex;s5,*ps;ps=&s0;则以下 scanf 函数调用语句有错误的是(

    20、)。(分数:2.00)A.scanf(c,&(ps 一sex);B.scan(d,&s0age);C.scanf(s,s0name);D.scanf(d,ps 一age); 解析:解析:题目中程序段定义了结构体变量数组 s5和指针变量 ps,然后 ps 指向数组 s5中的第一个元素,因而 ps 一age 引用 s0age。因为在输入 scanf()函数中,第 2 个参数应该表示为地址变量,而选项 D 表示的值,而不是一个地址值。9.以下程序的输出结果是( )。 #include #include struet A int a;char b10;double c; struet A f(stru

    21、et A t); main() struct A a=1001,Bob,10980; a=f(a);printf(d,s,61fn,aa,ab,ac); struct A f(struct A t) ta=1002;strcpy(tb,Mike);tc=12020;return t;(分数:2.00)A.1002,Bob,12020B.1002,Mike,12020 C.1001,Mike,10980D.1001,Bob,10980解析:解析:在主函数中定义结构体 A 的变量 a,并对其赋初值,再调用函数 f(a),在函数 f(a)中对结构体变量 a 的各个成员重新进行了赋值操作,并把其值输出

    22、。10.以下程序的输出结果是( )。 #includestruct STRint x,y;dt2=1,2,3,4;main()struct STR*p=dt; printf(d,+(p 一x);printf(dn,+(p 一y);(分数:2.00)A.1,2B.2,3 C.3,4D.4,1解析:解析:在题目中首先定义了结构体 ORD,并定义了 ORD 类型的数组变量 dt,并对其赋初值。在程序中定义了指向结构体时类型的指针变量 P,并且它指向变量数组 dt 的第一个元素 dt0,所以此时成员变量 Px 的值等于 1,成员变量!7 的值等于 2,在输出时分别加 1,输出结果为选项 B。11.有下

    23、列程序的输出结果是( )。struct Sint n;int a20;void f(int*a,int n)int i;for(i=0;in 一 1;i+)ai+=i;main()int i;struet S s=10,1,2,3,4,5,6,7,8,9,10;f(sa,sn);for(i=0;is13;i+)printf(d,sai);(分数:2.00)A.2,4,6,8,10,12,14,16,18,10B.2,3,1,6,8,7,5,4,10,9,C.1,3,5,7,9,1 l,13,15,17,10, D.1,2,3,6,8,7,5,4,10,9,解析:解析:题目中子函数的功能是对数组

    24、 a的每一个元素加上其下标的值。所以主函数中f(sa,sn)语句会调用 f(int*a,int n)函数,此时指针 a 指向数组sa=1,2,3,4,5,6,7,8,9,10,n=10;也就是说从 0 开始到 8 对数组中的每一个元素加上其下标值。12.关于结构体类型的叙述中正确的是( )。(分数:2.00)A.结构体类型中的成员不能是数组或指针B.结构体类型的变量,不能在声明结构体类型组成时一起定义C.使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的 D.元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义解析:解析:c 语言允许用 typedef 说明一种

    25、新类型名,形式是 typedef 类型名标识符,typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新韵数据类型,原有类型名依然有效。结构体变量定义有下面三种形式:(1)先定义结构,再说明结构变量。(2)在定义结构类型的同时说明结构变量。(3)直接说明结构变量。13.关于结构体函数的叙述中正确的是( )。(分数:2.00)A.即使是同类型的结构体变量。也不能进行整体赋值B.结构体数组名不能作为实参传给函数C.结构体变量的地址不能作为实参传给函数D.结构体中可以含有指向本结构体的指针成员 解析:解析:C 语言中的结构体变量包含若干成员,这些成员可以是所有变量类型,甚至可

    26、以是正在定义的结构体类型指针。用结构体变量作实参时,取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了“地址传递”的方式,形参须为同类型的结构指针或者形参结构数组。14.以下程序的输出结果是( )。main()unsigned char a=2,b=4,c=5,d;d=ab;d&=c;printf(dn,d);(分数:2.00)A.0B.2C.4 D.8解析:解析:本题考查位运算,C 语言中的为按位或运算,&为按位与运算,按位与(&)运算符的作用是:把参加运算的两个运算数按对应的二进制位分别进行“与”运算,当

    27、两个相应的位都为 1 时,该位的结果为 1;否则为 0。按位或()的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为 0 时,该位的运算结果才为 0。首先 d=24值为 6,d=6&5 值为 4。15.变量 a=01011101,变量 b=11110000,若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是( )。(分数:2.00)A.a b B.a&bC.a2D.a4解析:解析:题目要求将 a 的高 4 位取反,低 4 位不变,即操作完成之后 a 的值应为 10101101。选项 A使用异或运行,相同为

    28、0,相异为 1,计算结果为 10101101;选项 D 使用位或运算,计算结果为11111101;选项 B 使用位与运算,计算结果为 01010000;选项 C 是把 a 左移 4 位,计算结果为11010000。16.以下程序的输出结果是( )。 main()int a=l,b=2,c=3,x; x=(a b)&c; printf(dn,x);(分数:2.00)A.0B.1C.3 D.2解析:解析:1、2、3 的二进制形式分别为 00000001、00000010、00000011。首先计算 1 与 2 的或运算,再将其与 3 进行“与”运算,结果为(00000011)&(00000011)

    29、=00000011,即十进制数 3。17.以下程序的输出结果是( )。 #include main() char a=4; printf(d,a=a1);(分数:2.00)A.8 B.16C.64D.4解析:解析:本题主要考查按位左移运算。左移一位等于乘以 2,a=4 的二进制为 00000100,a1 后为00001000,其值为十进制数值 8。18.以下程序段的输出结果是( )。 s=32; s =32: printf(d,s);(分数:2.00)A.32B.一 1C.1D.0 解析:解析:C 语言中的“按位异或”运算的规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结

    30、果为 0;若数不同,则该位的结果为 1。因为语句“s=32;S =32;”相当于 s 与自身做按位异或运算,所以其结果等于 0。19.以下程序的输出结果是( )。main()int c;c=1315;printf(dn,c); (分数:2.00)A.18B.5C.13 D.8解析:解析:按位或(1)的运算规则是参加运算的两个运算数中,只要两个相应的二进制位中一个为 1,则该位的运算结果即为 1;只有当两个相应位的数都为 0 时,该位的运算结果才为 0。13 的二进制位1101,5 的二进制位 0101,或运算的结果为 1101,因此值为 13。20.关于文件操作的叙述中正确的是( )。(分数:

    31、2.00)A.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据B.C 语言中的文件是流式文件,因此只能顺序存取数据C.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:解析:在 C 语言中,有两种对文件的存取方式:顺序存取和直接存取。如果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读

    32、。当对文件的读(写)操作完成之后,必须将它关闭。21.关于 C 语言文件指针的叙述正确的是( )。(分数:2.00)A.文件指针就是文件位置指针,表示当前读写数据的位置B.文件指针指向文件在计算机中的存储位置C.文件指针是程序中用 FILE 定义的指针变量 D.文件指针就是 scanf 函数返回的值解析:解析:文件指针实际上是指向一个结构体类型的指针,这个结构体中包含如缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是“读”或“写”、是否出错、是否已经遇到文件结束标志等信息。一般称文件指针结构体类型名为 FILE,可以用此类型名来定义文件指针。 【格式】FILE*指针变量名。 【说明】FI

    33、LE 是一个存储文件信息的结构体类型的变量。 注意不要和文件位置指针混淆,在文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgete 函数,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。而文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。fscanf 函数可以向文本文件和二进制文件输入数据。22.不能用于向文件中写人数据的 C 语言函数是( )。(分数:2.00)A.fprintfB.fputcC.ftell D.fwrite解析:解析:本题考查文件操作。ftell 函数返回文件指针的当前位置,其他的都写文件函数。

    34、23.C 语言中的 dread(buffer,size,count,fp);函数是用来读取二进制文件的,关于 buffer 的叙述正确的是( )。(分数:2.00)A.一个自定义变量B.一个内存块的首地址,代表读人数据存放的地址 C.一个文件指针,指向待读取的文件D.一个内存块的字节数解析:解析:buffer 是数据块的指针,对 fread 来说,它是内存块的首地址,输入的数据存放此内存块中。24.关于文件操作中的标高符“EOF”的叙述中正确的是( )。(分数:2.00)A.EOF 即 NULLB.文本文件和二进制文件都可以用 EOF 作为文件结束标志C.EOF 是在库函数文件中定义的符号常量

    35、 D.对于文本文件,fgetc 函数读入最后一个字符时,返回值是 EOF解析:解析:EOF 是在 stdioh 库函数文件中定义的符号常量,其值等于一 1。EOF 用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgetc 函数,每读写一次,该指针均向后移动。25.以下程序依次把从终端输入的字符存放到 file 文件中,用#作为结束输入的标志,则在横线处应填入的选项是( )。 #include main()FILE*cpoint; char ch; cpoint=fopen(file,w); while(ch=getchar()!=#) fputc(_); fclose(cpoint); (分数:2.00)A.fpoint,chB.chC.ch,cpoint D.ch,file解析:解析:fputc()的使用格式为 fputc(ch,fpoint),其中 ch 为字符,fpoint 为文件指针。


    注意事项

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




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

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

    收起
    展开