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

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

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

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

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

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

    2、R t1,t2;B.struct STR;int n;char C;STR t1,t2;C.typedef stmct STR;int n=0;char c=A;t1,t2;D.structint n;char c;STR;STR t1,t2;3.若 typedef int*T;T a5;则与 a 的定义相同的是( )。(分数:2.00)A.int*a5;B.int(*a)5C.int,*a;D.int a5;4.关于结构体说明和变量定义中,正确的是( )。(分数:2.00)A.typedef struct abcint n;double m;ABC;ABC x,y;B.struct abci

    3、nt n;float m;struct abc x,y;C.struct ABCint n;float m;struct ABC x,y;D.struct abcint n;float m;abc x,y;5.关于 typedef 的叙述中错误的是( )。(分数:2.00)A.用 typedef 可以说明一种新的类型名B.typedef 说明的新类型名必须使用大写字母,否则会出编译错误C.可以用 typedef 说明的新类型名来定义变量D.typedef 的作用是用一个新的标识符来代表已存在的类型名6.下面结构体的定义语句中,错误的是( )。(分数:2.00)A.struct STRint x

    4、;int y;int z;struct STR a;B.struct STRint x;int y;int z;struct STR a;C.struct STRint x;int y;int z;a;D.structint x;int y;int z;a;7.设有定义:struct STRint real,unreal;)datal=1,8,data2;则以下赋值语句中错误的是( )。(分数:2.00)A.data2=(2,6);B.data2=data1;C.data2real=data 1real;D.data2real=data 1unreal;8.以下程序的输出结果是( )。 #nc

    5、lude #include typedef structchar name9;char sex;int score2;STU; STU fun(STU a) STU b=Tom,m,85,90; int i; strcpy(Aname,Bname); Asex=Bsex; for(i=O;i2;i+)Ascorei=Bscorei; return a; main() STU c=Lily,f,95,92,d; d=fun(c); printf(s,c,d,d,dname,dsex,dscore0,dscore1); printf(s,c,d,d,cname,csex,cscore0,cscor

    6、e1); (分数:2.00)A.Tom,m,85,90,Tom,m,85,90B.Lily,f,95,92,Lily,f,95,92C.Tom,m,85,90,Lily,f,95,92D.Lily,f,95,92,Tom,m,85,909.若 typedef struct STRint g;char h;T;以下叙述中正确的是( )。(分数:2.00)A.T 是 stmct STR 类型的变量B.STR 是 struct 类型的变量C.可用 STR 定义结构体变量D.可用 T 定义结构体变量10.设 typedef struet STRchar c;int a4;TV;则下面叙述中正确的是(

    7、)。(分数:2.00)A.STR 是 struct 类型的变量B.可以用 STR 定义结构体变量C.TV 是 struct STR 类型的变量D.可以用 TV 定义结构体变量11.有以下程序段:struet strint x;int*y;*pt;int a=1,2,b=3,4;struet str c2=10,a,20,b;pt=c;以下选项中表达式的值为 11 的是( )。(分数:2.00)A.(pt+)一xB.pt 一xC.+pt 一xD.*pt 一y12.关于结构体类型的叙述中正确的是( )。(分数:2.00)A.结构体类型中各个成分的类型必须是一致的B.在定义结构体类型时,编译程序就为

    8、它分配了内存空间C.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型D.一个结构体类型可以由多个称为成员(或域)的成分组成13.关于结构体函数的叙述中正确的是( )。(分数:2.00)A.函数的返回值不能是结构体指针类型B.函数的返回值不能是结构体类型C.在调用函数时,可以将结构体变量作为实参传给函数D.结构体数组不能作为参数传给函数14.以下程序的输出结果是( )。main()unsigned char a=8,c;c=a3;printf(dn,c);(分数:2.00)A.1B.2C.4D.6415.关于位运算的叙述中正确的是( )。(分数:2.00)A.右移运算时,高位总是补 0

    9、B.左移运算的结果总是原操作数据 2 倍C.位运算符都需要两个操作数D.位运算的对象只能是整型或字符型数据16.以下程序段的输出结果是( )。int r=8;printf(dn,r1);(分数:2.00)A.2B.4C.16D.3217.以下程序的输出结果是( )。 #include main() int a=2,b; b=a2;printf(dn,b);(分数:2.00)A.2B.4C.8D.1618.以下程序的输出结果是( )。 #include main() int a=5,b:1,t; t:(a2)b;printf(dn,t); (分数:2.00)A.1B.11C.21D.2019.以

    10、下程序的输出结果是( )。 main()int c; c=10 5; printf(dn,c); (分数:2.00)A.15B.0C.5D.10000020.以下程序的输出结果是( )。main()int i=0;i=一 i;printf(d,i);(分数:2.00)A.0B.1C.编辑出错D.一 121.关于 C 语言文件的叙述中正确的是( )。(分数:2.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.文件由一系列数据依次排列组成,只能构成二进制文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件22.设 fp=fopen(“f

    11、ile”,“w”);,关于文件操作叙述的选项中正确的是( )。(分数:2.00)A.可以使用二进制读写B.只能写不能读C.可以随意读和写D.可以在原有内容后追加写23.设文件指针 fp 已定义,执行语句 fp=fopen(file,r);后,以下针对文本文件 file 操作叙述的选项中正确的是( )。(分数:2.00)A.只能检索不能读写B.只能写不能读C.可以读和写D.只能读不能写24.关于 C 语言的输入输出函数,以下叙述中错误的是( )。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.puts 函数用于把字符串输出到终端设备D.w

    12、rite 函数用于以二进制形式输出数据到文件25.若 fp 是指向某文件的指针,且不是末尾,则 feod(fp)的函数返回值是( )。(分数:2.00)A.0B.非 0C.1D.EOF国家二级 C 语言机试(结构体、共同体、位运算及文件操作)模拟试卷 12 答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.关于 typedef 的叙述中错误的是( )。(分数:2.00)A.用 typedef 可以为各种类型起别名,但不能为变量起别名B.可以通过 typedef 增加新的类型 C.用 typedef 定义新的类型名后,原有类型名仍有效D.可以用 t

    13、ypedef 将已存在的类型用一个新的名字来代表解析:解析:C 语言允许用 typedef 说明一种新类型名或为现有类型起个别名,而不是创建新类型,说明新类型名的语句一般形式为:typedef 类型名标识符;在此,“类型名”必须是在此语句之前已有定义的类型标识符。标识符是一个用户定义标识符,用作新的类型名。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。2.正确的结构体类型说明和变量定义是( )。(分数:2.00)A.typedef struct fint n;char c;STR;STR t1,t2; B.struct STR;

    14、int n;char C;STR t1,t2;C.typedef stmct STR;int n=0;char c=A;t1,t2;D.structint n;char c;STR;STR t1,t2;解析:解析:定义结构体类型的一般形式为:struct 结构体名成员列表;struct 结构体名后不能加“:”号。但定义完之后要在句末加分号,所以选项 B、C 有误,选项 D 中定义无名称的结构体类型同时定义结构体变量形式应为“stmct t1,t2;”。选项 A 为用户自定义类型,其为正确的定义形式。3.若 typedef int*T;T a5;则与 a 的定义相同的是( )。(分数:2.00)

    15、A.int*a5; B.int(*a)5C.int,*a;D.int a5;解析:解析:typedef 的主要功能是为存在的类型指定一个新的别名,后面的代码中可以利用该新定义的别名定义变量,题目定义了整型指针类型 T,而后利用 T 定义了整型指针数组 a,含有 5 个元素,选项 A中定义了整型指针数组 a,选项 B 定义了一个指向一维数组的指针 a,选项 C 定义指针变量,而选项 D 为定义整型数组最常用的形式,数组 a 中可以存放 5 个数据元素。4.关于结构体说明和变量定义中,正确的是( )。(分数:2.00)A.typedef struct abcint n;double m;ABC;A

    16、BC x,y; B.struct abcint n;float m;struct abc x,y;C.struct ABCint n;float m;struct ABC x,y;D.struct abcint n;float m;abc x,y;解析:解析:结构体的定义是正常的 C 语言语句。选项 B 中结构体定义中每个成员后面的分号都不能省略,选项 C 结构体类型定义完毕后的外没加分号,选项 D 中定义变量要加上关键字 struct。5.关于 typedef 的叙述中错误的是( )。(分数:2.00)A.用 typedef 可以说明一种新的类型名B.typedef 说明的新类型名必须使用大

    17、写字母,否则会出编译错误 C.可以用 typedef 说明的新类型名来定义变量D.typedef 的作用是用一个新的标识符来代表已存在的类型名解析:解析:C 语言规定 typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示,但也可以是小写。6.下面结构体的定义语句中,错误的是( )。(分数:2.00)A.struct STRint x;int y;int z;struct STR a;B.struct STRint x;int y;int z;struct STR a; C.struct

    18、STRint x;int y;int z;a;D.structint x;int y;int z;a;解析:解析:结构体的定义是正常的 C 语言语句。在选项 B 中,由于在定义完结构体后缺少分号所以这是一条不完整的语句,因而是错误的。7.设有定义:struct STRint real,unreal;)datal=1,8,data2;则以下赋值语句中错误的是( )。(分数:2.00)A.data2=(2,6); B.data2=data1;C.data2real=data 1real;D.data2real=data 1unreal;解析:解析:本题主要考查结构体变量的定义与初始化。题目中定义了

    19、 STR 类型的结构体变量 data1 和data2,并对 data1 进行了初始化。结构体变量 Q 的负值比较灵活,可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。8.以下程序的输出结果是( )。 #nclude #include typedef structchar name9;char sex;int score2;STU; STU fun(STU a) STU b=Tom,m,85,90; int i; strcpy(Aname,Bname); Asex=Bsex; for(i=O;i2;i+)Ascorei=Bscorei; retur

    20、n a; main() STU c=Lily,f,95,92,d; d=fun(c); printf(s,c,d,d,dname,dsex,dscore0,dscore1); printf(s,c,d,d,cname,csex,cscore0,cscore1); (分数:2.00)A.Tom,m,85,90,Tom,m,85,90B.Lily,f,95,92,Lily,f,95,92C.Tom,m,85,90,Lily,f,95,92 D.Lily,f,95,92,Tom,m,85,90解析:解析:在 C 语言的非指针调用函数中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,

    21、是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调 fun(c)后,实参 c 的值并不会变化,仍是原值。在函数 f 中把局部变量 b 的值依次返回给变量 d。9.若 typedef struct STRint g;char h;T;以下叙述中正确的是( )。(分数:2.00)A.T 是 stmct STR 类型的变量B.STR 是 struct 类型的变量C.可用 STR 定义结构体变量D.可用 T 定义结构体变量 解析:解析:题目中本题考查 typedef,T 是用 typedef 定义的 struct STR 的新名称,因此可用 T 定义结构体变量

    22、,但是 T 并不是变量,只是 struct STR 的新名称。10.设 typedef struet STRchar c;int a4;TV;则下面叙述中正确的是( )。(分数:2.00)A.STR 是 struct 类型的变量B.可以用 STR 定义结构体变量C.TV 是 struct STR 类型的变量D.可以用 TV 定义结构体变量 解析:解析:C 语言允许用 typedef 说明一种新的类型名,用标识符代替类型名,在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并

    23、未产生新的数据类型,原有类型名依然有效。在本题中用 typedef 定义 STR 为 TV 的一种新的类型名,因而可以用它定义一个结构体变量。11.有以下程序段:struet strint x;int*y;*pt;int a=1,2,b=3,4;struet str c2=10,a,20,b;pt=c;以下选项中表达式的值为 11 的是( )。(分数:2.00)A.(pt+)一xB.pt 一xC.+pt 一x D.*pt 一y解析:解析:本题定义了指针 pt,pt 指向结构体数据 c2的第一个元素 c0,所以 ptx=10,执行自加运算后为 11。12.关于结构体类型的叙述中正确的是( )。(

    24、分数:2.00)A.结构体类型中各个成分的类型必须是一致的B.在定义结构体类型时,编译程序就为它分配了内存空间C.结构体类型中的成分只能是 C 语言中预先定义的基本数据类型D.一个结构体类型可以由多个称为成员(或域)的成分组成 解析:解析:C 语言中的结构体类型,它是由若干“成员”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前先定义它,也就是构造它。13.关于结构体函数的叙述中正确的是( )。(分数:2.00)A.函数的返回值不能是结构体指针类型B.函数的返回值不能是结构体类型C.在调用函数时,可以将结构体变量作为实参传给函数 D.结构体数组不能作为参数传给函数解析

    25、:解析:C 语言中的结构体普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。14.以下程序的输出结果是( )。main()unsigned char a=8,c;c=a3;printf(dn,c);(分数:2.00)A.1 B.2C.4D.64解析:解析:在程序中对无符号字符变量 a 的值执行右移 3 位运算后,相当于 a8,其值等于 1,再赋给变量 c。15.关于位运算的叙述中正确的是( )。(分数:2.00)A.右移运算时,高位总是补 0B.左移运算的结果总是原操作数据 2 倍C.位运算符都需要两个操作数D.位运算的对象只能是整型或字符型数据 解析:解析:

    26、C 语言中的位运算则是以位(bit)级进行的运算,位运算符中除“”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0;对于负整数,高位补 1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的 2 倍。16.以下程序段的输出结果是( )。int r=8;printf(dn,r1);(分数:2.00)A.2B.4 C.16D.32解析:解析:题目中定义了整型变量 r,其值等于 8,在输出语句中,把变量 r 的值向右移动一位,在 C语

    27、言中把变量向右移动一位,相当于其值除以 2,所以在题中把变量 r 的值 8 除 2,得到其值等于 4。17.以下程序的输出结果是( )。 #include main() int a=2,b; b=a2;printf(dn,b);(分数:2.00)A.2B.4C.8 D.16解析:解析:表达式 a2,把 a 向左移动 2 位,相当于扩大 4 倍。即 22 倍。18.以下程序的输出结果是( )。 #include main() int a=5,b:1,t; t:(a2)b;printf(dn,t); (分数:2.00)A.1B.11C.21 D.20解析:解析:本题考查位操作运算符。C 语言中的“

    28、”是左移运算符,左移一位相当于乘 2,1 是按位或运算符。5 左移两位相当于乘 4,得到 20,20 的二进制数是 00010100,和 00000001 进行按位或操作得到 00010101,即十进制的 21。19.以下程序的输出结果是( )。 main()int c; c=10 5; printf(dn,c); (分数:2.00)A.15 B.0C.5D.100000解析:解析:按位异或的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。整数 10 和 5 的二进制编码分别为 1010 和 0101,异或结果为1111。其十进制

    29、数据为 15。20.以下程序的输出结果是( )。main()int i=0;i=一 i;printf(d,i);(分数:2.00)A.0B.1C.编辑出错D.一 1 解析:解析:运算符()是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反(使每一位上的 0 变 1,1 变 0)。i 的初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为一 1 的补码形式,因此输出结果为一 1。21.关于 C 语言文件的叙述中正确的是( )。(分数:2.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.文件由一

    30、系列数据依次排列组成,只能构成二进制文件C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件解析:解析:在 C 语言中,对输入、输出的数据都按“数据流”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。22.设 fp=fopen(“file”,“w”);,关于文件操作叙述的选项中正确的是( )。(分数:2.00)A.可以使用二进制读写B.只能写不能读 C.可以随意读和写D.可以在原有内容后追加写解析:解析:本题考查文件操作。fopen 的 mode 参数有多种类型:rw 以只读方式打开

    31、文件、r+以可读写方式打开文件、rb+以读写方式打开一个二进制文件、w 以只写方式打开文件、w+以读写方式打开文件、wb+以读写方式打开二进制文件。23.设文件指针 fp 已定义,执行语句 fp=fopen(file,r);后,以下针对文本文件 file 操作叙述的选项中正确的是( )。(分数:2.00)A.只能检索不能读写B.只能写不能读C.可以读和写D.只能读不能写 解析:解析:在题目中函数 fopen 以“只读”方式打开文件 file。24.关于 C 语言的输入输出函数,以下叙述中错误的是( )。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.puts 函数用于把字符串输出到终端设备D.write 函数用于以二进制形式输出数据到文件解析:解析:本题考查的是输入输出函数的使用,gets 和 getehar 函数用于从标准输入设备终端读入字符串和字符,并非从磁盘文件读入,puts 用于把字符串输出到文件,fwrite 用于以二进制形式输出数据到文件。25.若 fp 是指向某文件的指针,且不是末尾,则 feod(fp)的函数返回值是( )。(分数:2.00)A.0 B.非 0C.1D.EOF解析:解析:Feof 用来判断文件是否结束。如果遇到文件结束,函数 feof()的值为 1,否则为 0。


    注意事项

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




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

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

    收起
    展开