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

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

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

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

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

    1、全国计算机等级考试二级 C语言真题题库 3+2015年 9月及答案解析(总分:43.00,做题时间:120 分钟)一、选择题(每小题 1分,共 40分)(总题数:40,分数:40.00)1.下列叙述中正确的是( )。(分数:1.00)A.程序可以作为算法的一种表达方式B.算法的有穷性是指算法的规模不能太大C.算法的复杂度用于衡量算法的控制结构D.算法的效率与数据的存储结构无关2.某循环队列的存储空间为 Q(1:m),初始状态为 frontrearm。现经过一系列的入队操作和退队操作后,frontm-1,rearm,则该循环队列中的元素个数为( )。(分数:1.00)A.m-1B.1C.mD.0

    2、3.能从任意一个节点开始没有重复地扫描到所有节点的数据结构是( )。(分数:1.00)A.循环链表B.双向链表C.二叉链表D.有序链表4.某棵树中共有 25个节点,且只有度为 3的节点和叶子节点,其中叶子节点有 7个,则该树中度为 3的节点数为( )。(分数:1.00)A.不存在这样的树B.7C.8D.65.在最坏情况下,二分查找法的时间复杂度为( )。(分数:1.00)A.B.C.log2nD.n6.某二叉树共有 730个节点,其中度为 1的节点有 30个,则叶子节点个数为( )。(分数:1.00)A.不存在这样的二叉树B.351C.1D.3507.软件开发中需求分析的主要任务是( )。(分

    3、数:1.00)A.定义和描述目标系统“做什么”B.获取需求C.给出软件解决方案D.需求评审8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(分数:1.00)A.学生成绩管理系统B.ERP系统C.办公自动化系统D.UNIX系统9.医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是( )。(分数:1.00)A.多对多B.一对一C.多对一D.一对多10.学生选课成绩表的关系模式是 SC(S#,C#,G),其中 S#为学号,C#为课号,G 为成绩,检索课号为 2且成绩及格的学生学号的表达式为( )。(分数:1.00)

    4、A.B.C.D.11.若想定义 int型变量 a,b,c,d 并都赋值为 1,以下写法中错误的是( )。(分数:1.00)A.int abcd1;B.int a1,b1,c1,d1;C.int a,b,c,d;abcd1;D.int a,b,c,d1;abcd;12.若有定义:char c;double d;程序运行时输入:1 2回车,能把字符 1输入给变量 c、数值 2输人给变量 d的输入语句是( )。(分数:1.00)A.scanf(“dlf“,c,d);B.scanf(“clf“,c,d);C.scanf(“cf“,c,d);D.scanf(“df“,c,d);13.输出语句:print

    5、f(”dn“,11+011);的输出结果是( )。(分数:1.00)A.20B.22C.022D.02114.以下叙述正确的是( )。(分数:1.00)A.有些算法不能用 3种基本结构来表达B.C语言程序不编译也能直接运行C.结构化程序的 3种基本结构是循环结构、选择结构、顺序结构D.如果 C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序15.若有定义:double x;,则表达式:x0,x+10,x+的值是( )。(分数:1.00)A.110B.100C.00D.1.016.有以下程序: (分数:1.00)A.a2,b=2B.a2,b1C.a1,b=1D.a1,b017.以

    6、下程序段中的变量已正确定义 for(i0;i4;i+,i+) for(k1;k3;k+);printf(”*”);该程序段的输出结果是( )。(分数:1.00)A.*B.* * * *C.* *D.* * * * * * * *18.有以下程序: (分数:1.00)A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh19.有以下程序: (分数:1.00)A.4B.2C.8D.120.关于地址和指针,以下叙述正确的是( )。(分数:1.00)A.可以通过强制类型转换让 char型指针指向 double型变量B.函数指针 p指向一个同类型的函数 f时,必须写成:p=&f;C.指

    7、针 p指向一个数组 f时,必须写成:p=&f;D.一个指针变量 p可以指向自身21.有以下程序: (分数:1.00)A.34B.35C.28D.5922.有以下程序: (分数:1.00)A.8B.6C.7D.923.对于以下函数声明 void fun(int array4,int *ptr); 以下叙述中正确的是( )。(分数:1.00)A.array,ptr 都是指针变量B.调用 fun函数时,实参的值将逐一复制给 arrayC.调用 fun函数时,array 按值传送,ptr 按地址传送D.array是数组,ptr 是指针,它们的性质不同24.设有定义:int x10,8px,i;,若要为

    8、数组 x读入数据,以下选项正确的是( )。(分数:1.00)A.for(i0;i10;i+)scanf(”d“,p+i);B.for(i0;i10;i+)scanf(”d“,*p+i);C.for(i0;i10;i+)scanf(”d”,*(p+i);D.for(i0;i10;i+)scanf(”d”,xi);25.有以下程序: (分数:1.00)A.7B.0C.3D.826.有以下程序段: (分数:1.00)A.*p3B.p3C.str2D.*p27.有以下程序: (分数:1.00)A.1,2,6,24,120,B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,28.有

    9、以下程序: (分数:1.00)A.-2,3,B.-1,-2,C.-2,-3,D.-2,129.有以下程序: (分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.2,3,1,6,8,7,5,4,10,9,D.10,9,8,7,6,1,2,3,4,5,30.有以下程序: (分数:1.00)A.Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370B.Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290C.Zhao,m,290,Zhao,m,290,Qian,f,350,Su

    10、n,m,370D.Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,29031.有以下程序: (分数:1.00)A.15B.12C.16D.2032.有以下程序: (分数:1.00)A.1B.4C.0D.333.以下选项中的编译预处理命令行,正确的是( )。(分数:1.00)A.#define E 238B.#define PI_2 156C.#define int INTD.#DEFINE TRUE34.设有以下程序段: (分数:1.00)A.scanf(”s”,ptrtitle);B.scanf(”s”,rectitle);C.scanf(”s”,(*ptr)

    11、title);D.scanf(”s”,ptr-title);35.有以下程序: (分数:1.00)A.?B.32GC.?D.?2G36.有以下程序: (分数:1.00)A.1,5B.2,4C.2,6D.2,537.若要建立下图所示的存储结构,以下正确的程序段是( )。 (分数:1.00)A.B.C.D.38.有以下程序: (分数:1.00)A.2,3B.2,1C.1,2D.3,139.有以下程序: (分数:1.00)A.3,5B.5,3C.35,35D.8,840.有以下程序: (分数:1.00)A.2B.0C.1D.3二、程序填空题(总题数:1,分数:1.00)41.函数 fun的功能是:在

    12、有 n个元素的结构体数组 std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。例如,主函数中给出了 4名学生的数据,则程序运行的结果为: 学号:N1002 学号:N1006 共有 2位学生有不及格科目 请在程序的下划线处填人正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: (分数:1.00)_三、程序修改题(总题数:1,分数:1.00)42.给定程序 MODI1C 中,函数 fun的功能是判断整数 n是否是“完数”。当一个数的因子之和恰好等于这

    13、个数本身时,就称这个数为“完数”。例如:6 的因子包括 1、2、3,而 61+2+3,所以 6是完数。如果是完数,函数返回值为 1,否则函数返回值为 0。数组 a中存放的是找到的因子,变量 k中存放的是因子的个数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: (分数:1.00)_四、程序设计题(总题数:1,分数:1.00)43.请编写函数 fun:在形参指针所指的 4个整数中找出最大值和最小值,最大的放在 a中,最小的放在d中。 注意:部分源程序存在 PR0G1C 中,请勿改动主函数 main和其

    14、他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 给定源程序: (分数:1.00)_全国计算机等级考试二级 C语言真题题库 3+2015年 9月答案解析(总分:43.00,做题时间:120 分钟)一、选择题(每小题 1分,共 40分)(总题数:40,分数:40.00)1.下列叙述中正确的是( )。(分数:1.00)A.程序可以作为算法的一种表达方式 B.算法的有穷性是指算法的规模不能太大C.算法的复杂度用于衡量算法的控制结构D.算法的效率与数据的存储结构无关解析:解析算法的有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是

    15、没有意义的,故 B选项错误。一个算法复杂度的高低体现在运行该算法所需要的计算机资源的多少,故 C选项错误。算法的效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,这就与算法本身设计的优劣以及具体的编程实现有关,数据的存储结构会极大的影响程序的执行时间,故 D选项错误。算法在实现时需要用具体的程序设计语言来实现,所以程序可以作为实现算法的一种表达方式。故选 A选项。2.某循环队列的存储空间为 Q(1:m),初始状态为 frontrearm。现经过一系列的入队操作和退队操作后,frontm-1,rearm,则该循环队列中的元素个数为( )。(分数:1

    16、.00)A.m-1B.1 C.mD.0解析:解析循环队列长度为 m,由初始状态为 frontrearm 可知此时循环队列为空。入队运算时,首先队尾指针(rear)进 1(即 rear+1),然后在 rear指针指向的位置插入新元素。特别的,当队尾指针rearm+1 时,置 rear1。迟队运算时,排头指针(front)进 1(即 front+1),然后删除 front指针指向的位置上的元素,当排头指针 frontm+1 时,置 front1。从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为 m-(m-1)1。故选择

    17、 B选项。3.能从任意一个节点开始没有重复地扫描到所有节点的数据结构是( )。(分数:1.00)A.循环链表 B.双向链表C.二叉链表D.有序链表解析:解析在单链表的第一个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由 NULL改为指向表头节点,这样的链表称为循环链表。在循环链表中,只要指出表中任何一个节点的位置,就可以从它出发没有重复地扫描到表中其他所有的节点。双向链表与二叉链表都可以扫描到所有节点,但是会有重复。有序链表如果是单链表的情况下,不能扫描到所有节点。故 A选项正确。4.某棵树中共有 25个节点,且只有度为 3的节点和叶子节点,其中叶子节点有 7个,则该

    18、树中度为 3的节点数为( )。(分数:1.00)A.不存在这样的树 B.7C.8D.6解析:解析树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。首先假设这样的树是存在的,由于只有度为 3的节点和叶子节点,可知最后一层都为叶子节点,倒数第二层一部分节点的度为 3,一部分节点为叶子节点。节点总数为 25,叶子节点有 7个,则度为 3的节点有 18个,由于(3 4-1-1)218(3 5-1-1)2 可知,树共有 5层,前三层有度为 3的节点(3 4-1-1)213 个,第四层有 34-127个节点

    19、,其中 5个是度为 3的节点,22 个是叶子节点,此时与题目给出的叶子节点有 7个相矛盾,故不存在这样的树。故选择 A选项。5.在最坏情况下,二分查找法的时间复杂度为( )。(分数:1.00)A.B.C.log2n D.n解析:解析二分法查找也称拆半查找,能使用二分法查找的线性表必须满足两个条件,用顺序存储结构以及线性表有序。利用二分法查找元素 X的过程如下:将 X与线性表的中间项比较,如果 X的值与中间项的值相等,则查找成功,结束查找;如果 X小于中间项的值,则在线性表的前半部分以二分法继续查找;如果 X大于中间项的值,则在线性表的后半部分以二分法继续查找。可以证明,对于长度为 n的有序线性

    20、表,在最坏情况下,二分法查找需比较 log2n次,故时间复杂度为 log2n。故选择 C选项。6.某二叉树共有 730个节点,其中度为 1的节点有 30个,则叶子节点个数为( )。(分数:1.00)A.不存在这样的二叉树 B.351C.1D.350解析:解析在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为 0的节点总是比度为 2的节点多一个。如果有一棵二叉树,节点总数为 730,假设度为 0的节点个数为 n,则有 n+30+n-1730,n3505,由于节点个数必须是整数,所以不可能存在题目中这样的二叉树。故选 A选项。7.软件开发中需求

    21、分析的主要任务是( )。(分数:1.00)A.定义和描述目标系统“做什么” B.获取需求C.给出软件解决方案D.需求评审解析:解析需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求分析的任务是发现需求、求精、建模和定义需求的过程,是描述“做什么”的软件开发阶段。故选 A选项。8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(分数:1.00)A.学生成绩管理系统B.ERP系统C.办公自动化系统D.UNIX系统 解析:解析系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了

    22、应用于特定的领域而开发的软件。D 选项属于系统软件,A、B、C 选项属于应用软件。故选 D选项。9.医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是( )。(分数:1.00)A.多对多 B.一对一C.多对一D.一对多解析:解析实体集之间通过联系来建立联接关系分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。由于医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,所以两者的联系属于多对多。故选 A选项。10.学生选课成绩表的关系模式是 SC(S#,C#,G),其中 S#为学号,C#为课号,G 为成绩,检索课号为 2且成绩

    23、及格的学生学号的表达式为( )。(分数:1.00)A. B.C.D.解析:解析 表示针对属性进行的投影运算, 表示针对元组进行的选择运算,表示交运算,表示并运算。要求检索结果为关系模式中的学生学号 S#,首先在几种属性中选择学生学号 S#,其次要在其中选择满足条件的元组 ,条件是课号为 2且成绩及格,即为“C#2G60”,故完整表达式为霄 S#( C#2G60 (SC)。本题选 A选项。11.若想定义 int型变量 a,b,c,d 并都赋值为 1,以下写法中错误的是( )。(分数:1.00)A.int abcd1; B.int a1,b1,c1,d1;C.int a,b,c,d;abcd1;D

    24、.int a,b,c,d1;abcd;解析:解析C 语言赋值运算符的结合方向是从右向左,使用的变量必须已经定义了,int abcd1;本条语句首先执行赋值运算 d1,由于 b并未定义,故编译不通过,提示没有定义标识符 b、c、d,故 A选项错误。答案为 A选项。12.若有定义:char c;double d;程序运行时输入:1 2回车,能把字符 1输入给变量 c、数值 2输人给变量 d的输入语句是( )。(分数:1.00)A.scanf(“dlf“,c,d);B.scanf(“clf“,c,d); C.scanf(“cf“,c,d);D.scanf(“df“,c,d);解析:解析lf 是针对

    25、double类型,如果仅用f,输入的数据可能没有被完全接收,数据的精度可能不足,选项 C、D 错误。f 主要针对 float类型的变量的输入,d 主要针对整型数据的输入,c 主要针对字符类型的数据的输入,选项 A错误。故答案为 B选项。13.输出语句:printf(”dn“,11+011);的输出结果是( )。(分数:1.00)A.20 B.22C.022D.021解析:解析printf(“dn“,11+011),11 为十进制,011 为八进制形式,打印格式d 表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)811+1809,相当于 printf(“dn“,11+9),故答案

    26、为 20,A 选项正确。14.以下叙述正确的是( )。(分数:1.00)A.有些算法不能用 3种基本结构来表达B.C语言程序不编译也能直接运行C.结构化程序的 3种基本结构是循环结构、选择结构、顺序结构 D.如果 C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序解析:解析算法的 3种基本结构可以表达任何算法,只是不同的实现复杂度不相同,因此 A选项错误。C语言是编译型语言,程序必须先编译、链接才能运行,因此 B选项错误。C 语言是高级程序语言,计算机不能识别除了机器语言以外的任何语言,因此 C程序代码转换为机器语言才能在计算机上运行,因此选项 D错误。答案为 C选项。15.若

    27、有定义:double x;,则表达式:x0,x+10,x+的值是( )。(分数:1.00)A.110B.100C.00 D.1.0解析:解析C 语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的于表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k+表示先运算,后自加。前置自增运算:+k 表示先自加,后运算。因此,表达式 x0,x+10,x+的计算过程为首先赋值 x0,然后

    28、将x加 10,但是并不对 x进行赋值,最后计算 x+,并根据后置自增运算的计算结果,即为 x00。故答案为 C选项。16.有以下程序: (分数:1.00)A.a2,b=2B.a2,b1 C.a1,b=1D.a1,b0解析:解析C 语言还提供了一种用于多分支选择的 switch语句,计算判断条件的表达式的值,并逐个与 case后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行相应 case后的语句,然后不再进行判断,继续执行后面所有 case后的语句。如表达式的值与所有 case后的常量表达式均不相同时,则执行 default后的语句。 x1;进入第一层 switch,y0;

    29、进入第二层 switch,执行a+;break;后 a1;再进入 case 2,(这里 case1:没有 break,)执行了 a+,b+,由于存在 break,则跳出 switch,得到 a2,b1,因此答案为 B选项。17.以下程序段中的变量已正确定义 for(i0;i4;i+,i+) for(k1;k3;k+);printf(”*”);该程序段的输出结果是( )。(分数:1.00)A.* B.* * * *C.* *D.* * * * * * * *解析:解析C 语言约定分号为一条语句的结束。因此 for(i0;i4;i+,i+)for(k1;k3;k+);是完整的语句,对 printf

    30、();没有任何影响,最后 printf(“*“),执行一次。因此答案为 A选项。18.有以下程序: (分数:1.00)A.AbCdEFgB.ABCDEFGC.BCDEFGH D.bcdefgh解析:解析循环的作用是将输入的字符串转化为大写,getchar()每次读人一个字符,putchar()每次输出一个字符,当遇到并字符结束。putchar(+c),表示将字符变量 c加 1后输出。因此,输入aBcDefC#,得到的结果是 BCDEFGH。故答案为 C选项。19.有以下程序: (分数:1.00)A.4B.2C.8 D.1解析:解析在 C语言中,在 main函数后面定义函数,需要提前声明,否则调

    31、用报错,无法找到该函数。mf(f(f(n),一共调用 3次 f()函数,f()函数表示 n*2,因此,结果是 n*2*2*2,得到结果为 8。故答案为 C选项。20.关于地址和指针,以下叙述正确的是( )。(分数:1.00)A.可以通过强制类型转换让 char型指针指向 double型变量 B.函数指针 p指向一个同类型的函数 f时,必须写成:p=&f;C.指针 p指向一个数组 f时,必须写成:p=&f;D.一个指针变量 p可以指向自身解析:解析函数指针 p指向一个同类型的函数 f时,可以写成:pf,而不能写成f,B 选项错误。函数名代表函数的人口地址,指针 p指向一个数组 f时,可以写成:p

    32、f,也可写成&f,数组名 f可以代表数组的首地址,C 选项错误。指针变量指向的是地址,是个常量,不能将地址指向另一个地址,D 选项错误。char 型根据转化原则可以转化为 double类型,因此答案为 A选项。21.有以下程序: (分数:1.00)A.34 B.35C.28D.59解析:解析fun()函数求矩阵反对角线的元素之和。根据 fun()函数,当数组的行列下标相等时,对该行反对角线上的元素求和。故结果为 4+7+11+1334,答案为 A选项。22.有以下程序: (分数:1.00)A.8B.6C.7 D.9解析:解析fun()函数获取矩阵正反对角线的元素的最大值,fun()中 for(

    33、i0;iN;i+) jN-(i+1);反对角线列位置 if(x*r1*r2xij)| *r1i; *r2j;比较正反对角线的元素,使得*r1,*r2 始终只在 最大元素的位置 由数组元素可得,正反对角线的最大元素为 7。答案为 C选项。23.对于以下函数声明 void fun(int array4,int *ptr); 以下叙述中正确的是( )。(分数:1.00)A.array,ptr 都是指针变量 B.调用 fun函数时,实参的值将逐一复制给 arrayC.调用 fun函数时,array 按值传送,ptr 按地址传送D.array是数组,ptr 是指针,它们的性质不同解析:解析void fu

    34、n(int array4,int *ptr);第一个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用。第二个参数是指针,因此实际上两个形参都是指针,传递的都是地址,而不是值。可知选项 B、C、D 错误。答案为 A选项。24.设有定义:int x10,8px,i;,若要为数组 x读入数据,以下选项正确的是( )。(分数:1.00)A.for(i0;i10;i+)scanf(”d“,p+i); B.for(i0;i10;i+)scanf(”d“,*p+i);C.for(i0;i10;i+)scanf(”d”,*(p+i);D.for(i0;i10;i+)scanf(”d”,xi);解

    35、析:解析从 scanf(“”,);可知 scanf()的第二个参数是地址,因此,从 4个答案中可以判断,只有选项 A是 pi的地址,其他的均是变量本身。故答案为 A选项。25.有以下程序: (分数:1.00)A.7B.0C.3 D.8解析:解析题意统计字符 s中阿拉伯数字的个数。char s012xy08s34f4w2;元素是字符型。048;而00;因此可以计算出G之前阿拉伯数字的个数,由字符串 s可知,有 3个阿拉伯数字。答案为 C选项。26.有以下程序段: (分数:1.00)A.*p3 B.p3C.str2D.*p解析:解析”p3p30是一个字符,不是字符串,选项 A错误。p3和 str2

    36、和*p 分别代表了ddd,ccc,aaa。答案为 A选项。27.有以下程序: (分数:1.00)A.1,2,6,24,120, B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,解析:解析static 静态变量只在声明时初始化一次。mul()函数定义了累乘,第一次init1,init*val,第二次 init1,val2,第三次 init2,val3,第四次 init6,val4,第五层 init24,val5,因此结果为 1,2,6,24,120。故答案为 A选项。28.有以下程序: (分数:1.00)A.-2,3, B.-1,-2,C.-2,-3,D.-2,1解析:解

    37、析fun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是-12,if判断后输出负号,并令 n12,计算 k+n10k+22,因此输出 2,然后将数值除以 10,结果为1,递归调用 fun()函数。第二次调用 fun(),此时 n1,k2,计算 k+n10k+13,因此打印3。故最后打印结果为-2,3,。故答案为 A选项。29.有以下程序: (分数:1.00)A.1,2,3,4,5,6,7,8,9,10, B.10,9,8,7,6,5,4,3,2,1,C.2,3,1,6,8,7,5,4,10,9,D.10,9,8,7,6,1,2,3,4,5,解析:解析结构体 s中 n代表数

    38、组的实际长度,a 是个定长数组。函数 f()对结构体 s内的 a数组元素使用冒泡法进行递增排序。因此最终数组的元素是一个递增序列。故答案为 A选项。30.有以下程序: (分数:1.00)A.Zhao,m,290,Zhao,m,290,Zhao,m,290,Sun,m,370 B.Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290C.Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370D.Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290解析:解析C 语言函数参数传递分为两种情况。值传递过程中

    39、,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。 题设中,参数 b是地址传递,因此会直接影响实参变量。a,c 是值传递,传递的是 a,c 的拷贝,

    40、不会对 a,c 实参产生影响,因此,调用函数返回,c 没有被修改,b 被修改了。故答案为 A选项。31.有以下程序: (分数:1.00)A.15B.12 C.16D.20解析:解析#define 命令是 C语言的宏定义命令,标识符一般使用大写,为了与其他标识符区分,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后置自增运算:k+表示先运算,后白加,意思是遇到 k+了,先把当前 k的值拿来参加运算,后面再去管它的自力 D。SUB(a+,b+)(a+)*(b+)3*4。故答案为 B选项。32.有以下程序: (分数:1.00)A.

    41、1B.4C.0 D.3解析:解析由结构体的定义初始化可知,a0x4,a0y3,a1x2,a1y1,因此计算 a0ya0x*a1x34*2(34)*20*20,放答案为 C选项。33.以下选项中的编译预处理命令行,正确的是( )。(分数:1.00)A.#define E 238 B.#define PI_2 156C.#define int INTD.#DEFINE TRUE解析:解析无参宏定义格式:#define 标识符字符串,标识符与 C语言规定相同,因此,可知选项 B多了一个#,选项 C使用了 C语言的关键字,选项 D格式不对。因此答案为 A选项。34.设有以下程序段: (分数:1.00)

    42、A.scanf(”s”,ptrtitle); B.scanf(”s”,rectitle);C.scanf(”s”,(*ptr)title);D.scanf(”s”,ptr-title);解析:解析符号“-”是指针特用的符号,“”用于指定元素的成员。ptr 是指针,只能用符号“-”,因此选项 A错误。*p 是指定元素(rec)可以使用“”运算,因此选项 D正确。选项B,rectitle 代表数组 title,同理选项 C正确。答案为 A选项。35.有以下程序: (分数:1.00)A.?B.32GC.? D.?2G解析:解析两个类型相同的结构体,可以使用一个给另一个初始化,使它们相等。前提是结构体

    43、变量所有成员全部初始化了。pc1pc2,pc2 的成员值和 pc1中对应的成员相等。因此 pc1CPU 输出?。答案为 C选项。36.有以下程序: (分数:1.00)A.1,5 B.2,4C.2,6D.2,5解析:解析a1 等价于 aa1,即 a除以 2,则 a2,b(a1)+41+45,因此,打印出来为 1,5。答案为 A选项。37.若要建立下图所示的存储结构,以下正确的程序段是( )。 (分数:1.00)A. B.C.D.解析:解析由图示可知,c 是个普通变量,p 指向 c,因此 p是指针,且 pc,q 指向 p,但是 p也是指针,因此 q是指向指针的指针 qp,因此定义是 int* q,

    44、*p,c,qp,pc。答案为 A选项。38.有以下程序: (分数:1.00)A.2,3B.2,1 C.1,2D.3,1解析:解析结构体 tt是一个递归定义,类似于链表,通过成员变量 y链接起来。ps+1 指向 s1。p-y 指向 s2,但现在 p-ys,因此 s2s0,此时 s10,20,10,而 p在 s1位置,因此 p-x 为 2,pp-y,p 指向 s2,因此 p-x1,故打印结果为 2,1。答案为 B选项。39.有以下程序: (分数:1.00)A.3,5B.5,3 C.35,35D.8,8解析:解析运算符为按位异或运算符。即 011,101,110,000;经计算可得xxy,yxy,x

    45、xy,作用是交换 x,y 的值。因此答案为 B选项。40.有以下程序: (分数:1.00)A.2 B.0C.1D.3解析:解析*ps,可得 p指向 s0,p-y 指向 s1,现 p-ys,因此 p-y 指向 s0。因此 p-x1,+p-x 等价于+(p-x),因此打印结果为 2。答案为 A选项。二、程序填空题(总题数:1,分数:1.00)41.函数 fun的功能是:在有 n个元素的结构体数组 std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。例如,主函数中给出了 4名学生的数据,则程序运行的结果为: 学号:N1002 学号:N1006 共有 2位学生

    46、有不及格科目 请在程序的下划线处填人正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: (分数:1.00)_正确答案:(1) STU (2)| (3)k)解析:解题思路 填空 1:STU 结构体别名,通过 main()函数中的语句可知。 填空 2:|只要学生两门课成绩有不及格的,就算不及格,因此使用或运算。 填空 3:k 返回的是不及格的学生个数,有题意可知k是累计个数的。三、程序修改题(总题数:1,分数:1.00)42.给定程序 MODI1C 中,函数 fun的功能是判断整数 n是否是“完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为“完数”。例如:6 的因子包括 1、2、3,而 61+2+3,所以 6是完数。如果是完数,函数返回值为 1,否则函数返回值为 0。数组 a中存放的是找到的因子,变量 k中存放的是因子的个数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: (分数:1.00)_


    注意事项

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




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

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

    收起
    展开