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

    【计算机类职业资格】全国计算机等级考试二级C语言真题题库3+2015年3月及答案解析.doc

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

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

    【计算机类职业资格】全国计算机等级考试二级C语言真题题库3+2015年3月及答案解析.doc

    1、全国计算机等级考试二级 C语言真题题库 3+2015年 3月及答案解析(总分:43.00,做题时间:90 分钟)一、选择题(每小题 1分,共 40分)(总题数:40,分数:40.00)1.下列关于算法复杂度叙述正确的是( )。(分数:1.00)A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度B.时间复杂度与所用的计算工具无关C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D.时间复杂度与采用的算法描述语言有关2.设有栈 S和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F 入栈,然后从栈中退出 3个元素依次入队,再将 X,Y,Z 入栈后,将栈中所有元素退出并依次入

    2、队,最后将队列中所有元素退出,则退队元素的顺序为( )。(分数:1.00)A.DEFXYZABCB.FEDZYXCBAC.FEDXYZCBAD.DEFZYXABC3.下列叙述中正确的是( )。(分数:1.00)A.有两个指针域的链表称为二叉链表B.循环链表是循环队列的链式存储结构C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表D.节点中具有多个指针域的链表称为多重链表4.某二叉树共有 845个节点,其中叶子节点有 45个,则度为 1的节点数为( )。(分数:1.00)A.400B.754C.756D.不确定5.软件需求分析阶段的主要任务是( )。(分数:1.00)A.确定软件开发方法B.确

    3、定软件开发工具C.确定软件开发计划D.确定软件系统的功能6.下面对软件测试描述错误的是( )。(分数:1.00)A.严格执行测试计划,排除测试的随意性B.随机地选取测试数据C.软件测试的目的是发现错误D.软件测试是保证软件质量的重要手段7.结构化程序的 3种基本控制结构是( )。(分数:1.00)A.顺序、选择和重复(循环)B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移8.数据库中对概念模式内容进行说明的语言是( )。(分数:1.00)A.数据定义语言B.数据操纵语言C.数据控制语言D.数据宿主型语言9.某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓

    4、库中。则实体仓库和零件间的联系是( )。(分数:1.00)A.多对多B.一对多C.多对一D.一对一10.有 3个关系 R、S 和 T如下: (分数:1.00)A.交B.差C.并D.选择11.以下叙述正确的是( )。(分数:1.00)A.计算机只接收由 0和 1代码组成的二进制指令或数据B.计算机只接收由 0和 1代码组成的十进制指令或数据C.计算机可直接接收并运行 C源程序D.计算机可直接接收并运行任意高级语言编写的源程序12.若有 C语言表达式 2+3*4+73,以下选项中叙述正确的执行顺序是( )。(分数:1.00)A.先执行 3*4得 12,再执行 73 得 25,最后执行 2+12+2

    5、5 得 165B.先执行 3*4得 12,再执行 2+12得 14,再执行 73 得 2,最后执行 14+2得 16C.先执行 73 得 2,再执行 3*4得 12,再执行 12+2得 14,最后执行 2+14得 16D.先执行 2+3得 5,再执行 5*4得 20,再执行 20+7得 27,最后执行 273 得 913.若有定义:char c;int d;程序运行时输入:c1,d=2回车,能把字符 1输入给变量 c、整数2输入给变量 d的输入语句是( )。(分数:1.00)A.scanf(“cd dd“,c,d);B.scanf(“cc dd“,c,d);C.scanf(“cd,dd“,c,

    6、d);D.scanf(“cc,dd“,c,d);14.以下选项中,与 ni+完全等价的表达式是( )。(分数:1.00)A.ni,ii+1B.n+i+1C.i=i+1,n=iD.n=+i15.设有定义: int n 1234;double x = 31415;则语句 printf(“3d,13fn”,n,x) 的输出结果是( )。(分数:1.00)A.1234,3142B.123,3142C.1234,3141D.123,314116.有以下程序: (分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,3,3,4,5,6,D.2,3,4,3,4,4,17.设变量 m为 floa

    7、t类型,变量 n为 int类型,则以下能实现将 m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。(分数:1.00)A.m(m*100+05)1000B.n=m*100+05,m=n1000C.nm100+05,mn*1000D.mm*100+05100018.有以下程序: (分数:1.00)A.-1,0B.0,0C.-1,-1D.1,119.若有定义: char s30 0; 运行时输入: This is a string.回车 则以下不能正确读人整个字符串: This is a string 到字符数组 s中的语句组是( )。(分数:1.00)A.i0;while(cge

    8、tchar()!=n)si+c;B.gets(s);C.for(i0;(c=getchar()!=n;i+)si=c;D.scanf(“s”,s);20.有如下程序: (分数:1.00)A.B.C.D.21.有如下程序: (分数:1.00)A.3-4-B.1-2-3-C.0-1-2-D.0-1-2-3-22.有以下程序: (分数:1.00)A.1a0,b1B.0a1,b2C.1a1,b2D.0a0,b223.有如下程序段: for(i=0;i=5) break; 则循环结束后 i的值为( )。(分数:1.00)A.1B.0C.5D.1024.设有定义:int a0,b1;,以下表达式中,会产生

    9、“短路”现象,致使变量 b的值不变的是( )。(分数:1.00)A.a+b+B.a+ | +bC.+ab+D.+a | +b25.有如下程序段: for(i0;i10;i+) if(i5) break; 则循环结束后 i的值为( )。(分数:1.00)A.10B.5C.9D.626.有以下程序段: (分数:1.00)A.最多可以输出 100个非负整数B.当 x0 时结束整个循环C.当 x0 时没有任何输出D.printf函数调用语句总是被跳过27.关于地址和指针,以下说法正确的是( )。(分数:1.00)A.通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B.可以取一个常数的

    10、地址赋值给同类型的指针变量C.可以取一个表达式的地址赋值给同类型的指针变量D.可以取一个指针变量的地址赋值给基类型相同的指针变量28.有以下程序: (分数:1.00)A.4,7,10,13B.1,6,11,16C.17,6,11,16D.5,13,21,2929.关于 C语言函数说明的位置,以下叙述正确的是( )。(分数:1.00)A.在函数说明之后对该函数进行调用,编译时不会出现错误信息B.函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息C.函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息D.函数说明只是为了美观和编译时检查参数类型是否

    11、一致,可以写也可以不写30.以下叙述正确的是( )。(分数:1.00)A.不能在数组说明符的一对方括号中使用表达式B.char c1,*c2,*c3,c42;是 C语言的合法语句C.数组下标的最小值可以是负值D.若有数组定义 int array5;则语句 printf(“d“,array123);是合法的31.有以下程序: (分数:1.00)A.9,9B.8,9C.2,4D.0,432.有以下程序: (分数:1.00)A.M0#B.#F#C.MMMD.#N#33.有以下程序段; int m23,(*p)3; p=m; 则以下对 m数组元素的引用正确的是( )。(分数:1.00)A.(p+1)0

    12、B.*(*(p+2)+1)C.*(p1+1)D.p1+234.有以下程序: (分数:1.00)A.you to Beijing!B.to Beijing!C.Welcome you to Beijing!D.Beijing!35.有以下程序: (分数:1.00)A.3,1,3B.3,2,1,2,3C.1,2,3,1,2,3D.1,2,3,2,136.有以下程序: (分数:1.00)A.6,8B.6,9C.6,6D.6,737.有以下程序: (分数:1.00)A.27B.11C.8D.1238.有以下程序: (分数:1.00)A.tooB.verygoodC.veryD.good39.以下叙述中

    13、错误的是( )。(分数:1.00)A.函数中的形参属于局部变量B.在函数内部定义的变量只能在本函数范围内使用C.在函数外部定义的变量在所有函数中都有效D.在不同的函数中可以使用相同名字的变量40.有以下程序: (分数:1.00)A.6B.21C.123456D.654321二、程序填空题(总题数:1,分数:1.00)41.给定程序中,函数 fun的功能是:调用随机函数产生 20个互不相同的整数放在形参 a所指数组中(此数组在主函数中已置 0)。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1C 中。 不得增行或删行,也不得史改程序的结

    14、构! 试题程序: (分数:1.00)_三、程序修改题(总题数:1,分数:1.00)42.下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数 fun的功能是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数 fun中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1C 中,不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序: (分数:1.00)_四、程序设计题(总题数:1,分数:1.00)43.请编写一个函数 fun,它的功能是:将 ss所指字符串中所有下标为奇数值置的字母转换为大写(若该位置上不是

    15、字母,则不转换)。 例如,若输入”abc4Efg“,则应输出”aBc4EFg“。 注意:部分源程序在文件 PROGlC 中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序如下: (分数:1.00)_全国计算机等级考试二级 C语言真题题库 3+2015年 3月答案解析(总分:43.00,做题时间:90 分钟)一、选择题(每小题 1分,共 40分)(总题数:40,分数:40.00)1.下列关于算法复杂度叙述正确的是( )。(分数:1.00)A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度B.时间复杂度与所用的计算工具无关 C.对同

    16、一个问题,采用不同的算法,则它们的时间复杂度是相同的D.时间复杂度与采用的算法描述语言有关解析:解析算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,B 选项正确,D 选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,A 选项错误。不同的算法时间复杂度一般不相同,C 选项错误。2.设有栈 S和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F 入栈,然后从栈中退出 3个元素依次入队,再将 X,Y,Z 入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为( )。(分数:1.00)A

    17、.DEFXYZABCB.FEDZYXCBA C.FEDXYZCBAD.DEFZYXABC解析:解析栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。队列是指允许在一端进行插入,而在另一端进行删除的线性表。将 A,B,C,D,E,F 入栈后,栈中元素为 ABCDEF,退出 3个元素入队,队列元素为 FED,将 X,Y,Z 入栈后栈中元素为 ABCXYZ,全部入队后,队列元素为FEDZYXCBA,故 B选项正确。3.下列叙述中正确的是( )。(分数:1.00)A.有两个指针域的链表称为二叉链表B.循环链表是循环队列的链式存储结构C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表D.

    18、节点中具有多个指针域的链表称为多重链表 解析:解析双向链表与二叉链表均是有两个指针域的链表,A 选项错误。在单链表的第一个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由 NULL改为指向表头节点,这样的链表称为循环链表。循环队列是队列的一种顺序存储结构。循环链表与循环队列是两种存储结构,B 选项错误。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,而带链的栈是单链表形式,C 选项错误。故正确答案为 D选项。4.某二叉树共有 845个节点,其中叶子节点有 45个,则度为 1的节点数为( )。(分数:1.00)A.400B.754C.756 D.不确

    19、定解析:解析在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为 0的节点(即叶子节点)总是比度为 2的节点多一个。二叉树共有 845个节点,度为 0的节点有 45个,度为 1的节点数为 n1,度为 2的节点数为 n2,则 84545+n1+n2,且 45n2+1,则n1756,C 选项正确。5.软件需求分析阶段的主要任务是( )。(分数:1.00)A.确定软件开发方法B.确定软件开发工具C.确定软件开发计划D.确定软件系统的功能 解析:解析需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系

    20、统的功能,D 选项正确。A、B、C 选项均为开发阶段工作。6.下面对软件测试描述错误的是( )。(分数:1.00)A.严格执行测试计划,排除测试的随意性B.随机地选取测试数据 C.软件测试的目的是发现错误D.软件测试是保证软件质量的重要手段解析:解析在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择有代表性的,尽可能发现迄今为止尚未发现的错误,A 选项叙述正确,B 选项叙述错误。测试的根本目的是尽可能多地发现并排除软件中隐藏的错误,C 选项叙述正确。软件测试是保证软件质量、可靠性的关键步骤,D 选项叙述正确。故正确答案为 B选项。7.结构化程序的 3种基本控制结构是( )。(分

    21、数:1.00)A.顺序、选择和重复(循环) B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移解析:解析结构化程序的 3种基本控制结构:顺序、选择和重复,故 A选项正确。8.数据库中对概念模式内容进行说明的语言是( )。(分数:1.00)A.数据定义语言 B.数据操纵语言C.数据控制语言D.数据宿主型语言解析:解析数据库管理系统为完成主要功能提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。数据

    22、宿主型语言它要嵌入其他程序设计语言(如 COBOL、FORTRAN、PLI、汇编语言)。被嵌入的语言称为宿主语言,嵌入的语言称为子语言。数据库应用程序用宿主语言和子语言书写而成。故 A选项正确。9.某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中。则实体仓库和零件间的联系是( )。(分数:1.00)A.多对多 B.一对多C.多对一D.一对一解析:解析一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,故实体仓库和零件间的联系是多对多,A 选

    23、项正确。10.有 3个关系 R、S 和 T如下: (分数:1.00)A.交 B.差C.并D.选择解析:解析用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡儿积。常用的扩充运算有交、除、连接及自然连接等。选择:从关系中找出满足给定条件的元组的操作称为选择,题目中无给定条件,放 D选项错误。差:R-S 结果是属于 R但不属于 S的记录组成的集合,T 中元组“c 32”同时属于 R和 S,B 选项错误。并:RS 是将 S中的记录追加到 R后面,T 中元组少于 R,故 C选项错误。交:RS 结果是既属于 R又属于 S的记录组成的集合,与题目中结果相符,故 A选项正确。

    24、11.以下叙述正确的是( )。(分数:1.00)A.计算机只接收由 0和 1代码组成的二进制指令或数据 B.计算机只接收由 0和 1代码组成的十进制指令或数据C.计算机可直接接收并运行 C源程序D.计算机可直接接收并运行任意高级语言编写的源程序解析:解析计算机认识自己的母语机器语言,即 0和 1代码组成的二进制指令和数据,故 A选项正确,B 选项错误。C 语言是一种高级语言,计算机不能直接运行 C源程序和高级语言编写的源程序,C 和D选项错误。12.若有 C语言表达式 2+3*4+73,以下选项中叙述正确的执行顺序是( )。(分数:1.00)A.先执行 3*4得 12,再执行 73 得 25,

    25、最后执行 2+12+25 得 165B.先执行 3*4得 12,再执行 2+12得 14,再执行 73 得 2,最后执行 14+2得 16 C.先执行 73 得 2,再执行 3*4得 12,再执行 12+2得 14,最后执行 2+14得 16D.先执行 2+3得 5,再执行 5*4得 20,再执行 20+7得 27,最后执行 273 得 9解析:解析首先,在 C语言中,乘除法优先级要高于加减法,其次,除法运算符“”两边参加运算的对象都是整数,运算结果要取整,故排除 A,D 选项;C 语言中,因为运算符“*”和“”都满足从左到右的运算规则,故应先计算 3*412,因此 C选项排除,答案为 B选项

    26、。13.若有定义:char c;int d;程序运行时输入:c1,d=2回车,能把字符 1输入给变量 c、整数2输入给变量 d的输入语句是( )。(分数:1.00)A.scanf(“cd dd“,c,d);B.scanf(“cc dd“,c,d);C.scanf(“cd,dd“,c,d);D.scanf(“cc,dd“,c,d); 解析:解析scanf()函数中,d 对应的参数是整数型地址,c 对应参数为 char型地址,因此 A、C 选项错误;如果输入地址有多个,应该用逗号隔开,因此 B选项错误,故答案为 D选项。14.以下选项中,与 ni+完全等价的表达式是( )。(分数:1.00)A.n

    27、i,ii+1 B.n+i+1C.i=i+1,n=iD.n=+i解析:解析运算符“+”放在变量后面时,表示变量先参与其他操作,再完成加 1,故表达式 ni+的运算顺序是先将 i赋值给 n,再将 i+1赋值给 i,因此答案为 A选项。15.设有定义: int n 1234;double x = 31415;则语句 printf(“3d,13fn”,n,x) 的输出结果是( )。(分数:1.00)A.1234,3142 B.123,3142C.1234,3141D.123,3141解析:解析函数 printf()中,md 指输出带符号的十进制整数,给定最小宽度为 m位,不足 m位左端补空格,超过 m

    28、位按实际位数输出,nf 表示以小数形式输出实数,小数占 n位,对应题目,答案为A选项。16.有以下程序: (分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,3,3,4,5,6, D.2,3,4,3,4,4,解析:解析程序在执行 switch语句时,根据 switch后面表达式的值找到匹配的入口标号,执行对应的case语句,之后不再进行判断,继续执行此 case后面的语句,并且各个 case和 default的出现次序不影响执行结果,即题目中的 default放在开始位置,与放在最后是一样的结果;运算符“+”放在变量前面时,表示将变量+1,再参与其他操作。本题,第一次循环,输

    29、入 b=1,执行 case 1,输出 2;再执行ease 2,输出 3。第二次循环,输入 b2,执行 case 2,输出 3。第三次循环,输入 b3,没有 case与其对应,故执行 default,输出 b4,接着执行 case 1,输出 5,再执行 case 2,输出 b6,至此退出for语句。因此,最后输出为 2,3,3,4,5,6,答案为 C选项。17.设变量 m为 float类型,变量 n为 int类型,则以下能实现将 m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。(分数:1.00)A.m(m*100+05)1000B.n=m*100+05,m=n1000 C.n

    30、m100+05,mn*1000D.mm*100+051000解析:解析n 是整型数,将浮点数赋值给整型变量需要丢弃小数位,所以若要保留 m的小数点后两位,需要将 m乘以 100,若要将 m小数点后第三位四舍五人,再需要加上 05,然后赋给整型变量,所以nm*100+05,接下来需要将 m还原成有两位小数的浮点数,除号两边操作数有一个是浮点数时,结果为浮点数,将 n1000 赋值给 m,得到 m的值含两位小数,故答案为 B选项。18.有以下程序: (分数:1.00)A.-1,0 B.0,0C.-1,-1D.1,1解析: 解析题干中语句 for(;a-;)的执行过程是,先判断表达式 a-是否为 0

    31、,因为运算符“-”在变量的后面,表示先进行其他操作,再让变量 a减 1,即判断 a!0 成立,则进入循环,然后 a减 1,起始 a=1不等于 0,满足条件进入 for循环,然后 a自减 1为 0,b 自减 1为 0,继续循环;再跳回 for语句时,a!0 不成立,不会进入循环,但是 a也要自减 1为-1,循环结束;故最后输出 a-1,b0,因此答案为 A选项。19.若有定义: char s30 0; 运行时输入: This is a string.回车 则以下不能正确读人整个字符串: This is a string 到字符数组 s中的语句组是( )。(分数:1.00)A.i0;while(c

    32、getchar()!=n)si+c;B.gets(s);C.for(i0;(c=getchar()!=n;i+)si=c;D.scanf(“s”,s); 解析:解析在使用格式符“s”进行字符串的输入时,空格和回车(Enter)会被读入,并且函数 scaf以它们作为分隔符停止一个字符串的输入,因此答案为 D选项。20.有如下程序: (分数:1.00)A. B.C.D.解析:解析逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数。表达式(a+b+)中,左操作数 a+的值为 0,已经可以确定整个逻辑表达式的结果为 0,因此右操作数 b+不再求解,

    33、进入 else分支执行,a 的值+1,b 不变,因此答案为 A选项。21.有如下程序: (分数:1.00)A.3-4- B.1-2-3-C.0-1-2-D.0-1-2-3-解析:解析从键盘输入 3,即给变量 data赋值为 3,进入 for循环语句,满足 if语句的条件 i3,运行 continue语句结束本次循环,而不是终止整个循环的执行。当 i加到 3时,if 条件不满足,执行printf函数,输出 3-,i 再加到 4,输出 4-,i 再加 1等于 5,退出 for循环,程序运行后结果是:“3-4-”。因此答案为 A选项。22.有以下程序: (分数:1.00)A.1a0,b1B.0a1,

    34、b2C.1a1,b2 D.0a0,b2解析:解析运算符“+”放在变量后面时,表示先执行其他操作,再将变量+1,运算符“+”放在变量前面时,表示将变量+1,再参与其他操作。因此 if(+a=b+)为真,输出 1,再输出 a,b,程序运行后的结果是:1a1,b2。因此答案为 C选项。23.有如下程序段: for(i=0;i=5) break; 则循环结束后 i的值为( )。(分数:1.00)A.1B.0 C.5D.10解析:解析if(i5)break 语句,表示如果 i5,执行 break语句,跳出循环程序,起始 i0 满足 if语句,则循环结束后 i值为 0,因此答案为 B选项。24.设有定义:

    35、int a0,b1;,以下表达式中,会产生“短路”现象,致使变量 b的值不变的是( )。(分数:1.00)A.a+b+ B.a+ | +bC.+ab+D.+a | +b解析:解析运算符“+”放在变量前面时,表示将变量+1,再参与其他操作,a+b+时,由于 a值是 0直接判定与运算结果为 0,忽视 b+的值,因此 b值不发生改变,答案为 A选项。25.有如下程序段: for(i0;i10;i+) if(i5) break; 则循环结束后 i的值为( )。(分数:1.00)A.10B.5C.9D.6 解析:解析if(i5)break;语句执行过程时先判断 i的值,如果 i的值大于 5,执行 bre

    36、ak语句,结束循环程序,这里 i6,循环结束。因此答案为 D选项。26.有以下程序段: (分数:1.00)A.最多可以输出 100个非负整数 B.当 x0 时结束整个循环C.当 x0 时没有任何输出D.printf函数调用语句总是被跳过解析:解析continue 语句只结束本次循环,而不是终止整个循环的执行,因此 B选项错误;当 x0时,程序执行 printf(“4dn“,x)语句,因此排除 C、D 选项,答案为 A选项。27.关于地址和指针,以下说法正确的是( )。(分数:1.00)A.通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量 B.可以取一个常数的地址赋值给同类型的

    37、指针变量C.可以取一个表达式的地址赋值给同类型的指针变量D.可以取一个指针变量的地址赋值给基类型相同的指针变量解析:解析常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,C 语言也不允许这样做,编译会出错,B 选项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C 选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D 选项错误。故答案为 A选项。28.有以下程序: (分数:1.00)A.4,7,1

    38、0,13B.1,6,11,16C.17,6,11,16 D.5,13,21,29解析:解析N4,for(i0,iN,i+)printf(xij);此语句输出 x00,x11,x22,x33,其中只有 x00的值在 fun函数中发生改变,在 fun函数中,当 i0 时,x00x00+x3317,程序运行后的输出结果是:17,6,11,16。因此答案为 C选项。29.关于 C语言函数说明的位置,以下叙述正确的是( )。(分数:1.00)A.在函数说明之后对该函数进行调用,编译时不会出现错误信息 B.函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息C.函数

    39、说明只能出现在源程序的开头位置,否则编译时会出现错误信息D.函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写解析:解析对被调用函数的说明有两种方式:外部说明和内部说明。在调用函数内对被调函数所作的声明称为内部说明,也称为局部说明;在函数外进行的函数说明称为外部说明,如果说明在程序最前端,外部声明又称为全局说明,因此 B、C 选项错误;函数“说明”是指利用它在程序的编译阶段对调用函数的合法性进行全面检查,因此 D选项错误,答案为 A选项。30.以下叙述正确的是( )。(分数:1.00)A.不能在数组说明符的一对方括号中使用表达式B.char c1,*c2,*c3,c42;是 C

    40、语言的合法语句 C.数组下标的最小值可以是负值D.若有数组定义 int array5;则语句 printf(“d“,array123);是合法的解析:解析在 B选项中,c1 是字符型变量,c2 是字符型指针变量,c3 是指向字符型指针的指针变量,c42是一个一维字符数组,这些都是 C语言的合法语句,因此答案为 B选项。31.有以下程序: (分数:1.00)A.9,9 B.8,9C.2,4D.0,4解析:解析题干中定义一个指针变量 ptr,再把 a的地址值赋给变量 ptr,此时 a和*ptr 代表同一内存单元中的值,*ptr8 表示把 a和*ptr 的值修改为 8,a(*ptr)+表示把指针 p

    41、rt对应地址单元里的值赋给 a,再将 ptr对应地址单元里的值加 1,因此*(ptr)值为 9,同时 a也为 9,因此答案为 A选项。32.有以下程序: (分数:1.00)A.M0#B.#F#C.MMMD.#N# 解析:解析for 语句中把 array数组首地址值赋给变量 ptr,ptr+表示每次执行完循环体后,ptr 指向下一数组元素,当指针指向值为 0时,输出#,否则输出M加上指针对应数组值之和,当*ptr1 时,M+1N,结果输出为#N#,答案为 D选项。33.有以下程序段; int m23,(*p)3; p=m; 则以下对 m数组元素的引用正确的是( )。(分数:1.00)A.(p+1

    42、)0B.*(*(p+2)+1)C.*(p1+1) D.p1+2解析:解析数组元素 aij可表示为*(ai+j),因此,在定义数组 m和指针变量 p后,*(p1+1)表示指向数组 m11,因此答案为 C选项。34.有以下程序: (分数:1.00)A.you to Beijing! B.to Beijing!C.Welcome you to Beijing!D.Beijing!解析:解析程序首先定义两个字符串,a、b 指针分别指向这两个字符串首地址,再定义了一个指针 p,把 b指针指向的地址赋给了 p指针后,判断 p指针指向地址的内容是否和 a指针指向地址的内容相等,如果不是,则移动指针 P+1,

    43、当 p指向*b 字符串中的y时,和*a 首地址元素相等,退出 while语句,输出剩下字符串内容,程序运行后的输出结果是”you to Beijing!”,答案为 A选项。35.有以下程序: (分数:1.00)A.3,1,3B.3,2,1,2,3 C.1,2,3,1,2,3D.1,2,3,2,1解析:解析本题考查了函数的递归调用,在 main函数中调用 f(z,3)后,系统进入 f()函数,随后进入if语句,输出 x2,再进入 f()函数,输出 x1,再进入 f()函数,输出 x0,随后结束返回输出上一个 f()函数,输出 xn-1,程序运行后的结果是:3,2,1,2,3。答案为 B选项。36

    44、.有以下程序: (分数:1.00)A.6,8 B.6,9C.6,6D.6,7解析:解析static 定义一个静态分布变量,变量只会初始化一次。在 for循环体内调用 f()函数输出,f()函数首先是将当前 n,m,a,k 加 1后进行累加返回主函数输出,第二次累加时,重新给 m、n 定义初始值为 0,因此两次输出分别为 6,8,答案为 A选项。37.有以下程序: (分数:1.00)A.27B.11C.8D.12 解析:解析main()函数先定义一个数组 array,调用 sum(array,3)函数,此时函数形参 array指向数组首地址,形参 len的值为 3,在 sum函数中,array1

    45、指向数组中的元素 9,sum 函数调用 3次,完成的功能是将数组 array1+array2+array3累加后返还给输出,累加后的值为 12。因此,答案为 D选项。38.有以下程序: (分数:1.00)A.too B.verygoodC.veryD.good解析:解析程序中定义指针 ps后,将数组 s首地址赋给 ps初始化后,再使指针 ps指向字符串“too”的首地址,修改 s4(即字符 g)不会改变 ps的值,所以输出 ps的结果是“too”,答案为选项 A。39.以下叙述中错误的是( )。(分数:1.00)A.函数中的形参属于局部变量B.在函数内部定义的变量只能在本函数范围内使用C.在函

    46、数外部定义的变量在所有函数中都有效 D.在不同的函数中可以使用相同名字的变量解析:解析全局变量有效范围是从定义的位置开始到所在源文件的结束,在这区域内的函数才可以调用,如果在函数外部定义变量,该变量不能被之前的函数访问。所以 C选项说法错误,答案为 C选项。40.有以下程序: (分数:1.00)A.6 B.21C.123456D.654321解析:解析本题首先定义文件指针变量 fp和一个数组 a,再打开一个文件“datadat”,随后先给文件写人数据 a0。由于 rewind函数是将文件指针从当前位置重新指向文件开始位置,所以 for循环依次将数组 a中的数据写入文件开始位置,退出循环后,文件中的数据顺序为:654321。重新使指针指向文件开始位置,将此时 fp指向的数据(即文件中第一个数据 6)写入变量 k中,关闭文件,输出 k值,答案为 A选项。二、程序填空题(总题数:1,分数:1.00)41.给定程序中,函数 fun的功能是:调用随机函数产生 20个互不相同的整数放在形参 a所指数组中(此数组在主函数中已置 0)。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1C 中。 不得增行或删行,也不得史改程序的结构! 试题程序: (分数:1.00)_


    注意事项

    本文(【计算机类职业资格】全国计算机等级考试二级C语言真题题库3+2015年3月及答案解析.doc)为本站会员(刘芸)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




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

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

    收起
    展开