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

上传人:吴艺期 文档编号:1329734 上传时间:2019-10-17 格式:DOC 页数:15 大小:156KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C语言真题题库1+2015年9月及答案解析.doc_第1页
第1页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题题库1+2015年9月及答案解析.doc_第2页
第2页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题题库1+2015年9月及答案解析.doc_第3页
第3页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题题库1+2015年9月及答案解析.doc_第4页
第4页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题题库1+2015年9月及答案解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、全国计算机等级考试二级 C语言真题题库 1+2015年 9月及答案解析(总分:43.00,做题时间:120 分钟)一、选择题(每小题 1分(总题数:40,分数:40.00)1.下列叙述中正确的是( )。(分数:1.00)A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理,如果数据存储结构不同,不同算法的时间复杂度肯定相同D.对同一批数据作不同的处理,如果数据存储结构相同,不同算法的时间复杂度肯定相同2.下列处理中与队列有关的是( )。(分数:1.00)A.操作系统中的作业调度B.执行程序中的过程调用C.执行程序中

2、的循环控制D.二叉树的遍历3.设栈的存储空间为 S(1:m),初始状态为 topm+1。经过一系列入栈与退栈操作后,top1。现又要将一个元素进栈,栈顶指针 top值变为( )。(分数:1.00)A.发生栈满的错误B.2C.mD.04.设二叉树共有 150个节点,其中度为 1的节点有 10个,则该二叉树中的叶子节点数为( )。(分数:1.00)A.71B.70C.69D.不可能有这样的二叉树5.非空循环链表所表示的数据结构( )。(分数:1.00)A.有根节点也有叶子节点B.没有根节点但有叶子节点C.有根节点但没有叶子节点D.没有根节点也没有叶子节点6.设二叉树中共有 31个节点,其中的节点值

3、互不相同。如果该二叉树的后序序列与中序序列相同,则该二叉树的深度为( )。(分数:1.00)A.31B.16C.17D.57.在最坏情况下,堆排序的时间复杂度是( )。(分数:1.00)A.O(lgo2n)B.0(nlog2n)C.O(n2)D.O(n15 )8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(分数:1.00)A.学籍管理系统B.ERP系统C.C编译程序D.CAI软件9.存储在计算机内有结构的数据集合是( )。(分数:1.00)A.数据库B.数据库系统C.数据库管理系统D.数据结构10.在数据库技术中,为提高数据库的逻辑独立性和物理独

4、立性,数据库的结构被划分成用户级、存储级和( )。(分数:1.00)A.概念级B.外部级C.管理员级D.内部纽11.以下叙述错误的是( )。(分数:1.00)A.一个算法所包含的操作步骤应该是有限的B.任何能通过编译和运行的算法都一定能得到所期望的结果C.算法中每一条指令必须有确切的含义D.算法可以用各种描述方法来进行描述12.以下是正确 C语言实型常量的是( )。(分数:1.00)A.e-1B.e-1C.-1eD.1e-113.以下叙述正确的是( )。(分数:1.00)A.在 C语言中分号是语句的组成部分B.C语言程序由 C语句组成,可以省略 main函数C.分号是 C语句之间的分隔符D.所

5、有程序行都必须用分号结束14.若有定义:double a,b,c;能正确给 a,b,c 输人数据的语句是( )。(分数:1.00)A.scanf(“lflflf“a,b,c);B.scanf(“fff“,a,b,c);C.scanf(“lflflf,a,b,c);D.scanf(“lflflf“,a,b,c);15.有以下程序: (分数:1.00)A.IB.JC.KD.H16.设有定义:double x516894;,则语句 printf(“lfn“,(int)(x*1000+05)1000);的输出结果是( )。(分数:1.00)A.516900B.516800C.000000D.输出格式说

6、明符与输出项不匹配,产生错误信息17.有以下程序: (分数:1.00)A.编译有错B.0,0,0,3C.1,1,2,0D.0,1,2,018.有以下程序: (分数:1.00)A.0,1B.0,0C.1,-1D.0,219.有以下程序: (分数:1.00)A.6B.8C.7D.520.有以下程序: (分数:1.00)A.CBB.BCAC.CCBBD.CDBCA21.以下程序拟实现计算 s1+2*2+3*3+n*n+,直到 s1000 为止。 (分数:1.00)A.把 while(s1000);改为 while(s1000);B.把 s1;改为 s0;C.把 n1;改为 n0;D.把 nn+1;改

7、为 n=n*n22.有以下程序: (分数:1.00)A.计算 m和 n的最小公倍数B.计算 m和 n的最大公约数C.计算 m和 n的差值D.找出 m和 n中的较大值23.有以下程序: (分数:1.00)A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);24.若有定义语句: double x,y,*px,*py; 执行 pxx;pyy; 正确的输入语句是( )。(分数:1.00)A.scanf(“lflfI“,x,y);B.scanf(“ff“x,y);C.scanf(“ff“,x,y);D.scanf(“lfle“,px,py);25.以下定义

8、数组的语句中错误的是( )。(分数:1.00)A.int num31,2,3,4,5,6;B.int num241,2,3,4,5,6;C.int num1,2,3,4,5,6;D.int num41,2,3,4,5,6;26.有以下程序: (分数:1.00)A.7,8,9,10,6,5,4,3,2,1,B.10,9,8,7,6,5,4,3,2,1,C.10,9,8,7,1,2,3,4,5,6,D.1,2,3,4,5,6,7,8,9,10,27.有以下程序: (分数:1.00)A.10B.16C.6D.1228.有以下程序: (分数:1.00)A.1B.2C.3D.029.函数 fun的功能是

9、在 a所指的具有 n个元素的数组中查找最大值并返回给调用函数,函数不完整。 (分数:1.00)A.psB.*p*sC.apasD.paps30.有以下程序: (分数:1.00)A.10,One*Dream!B.9,0ne*Dream!C.9,0ne*WorldD.10,0ne*World31.有以下程序: (分数:1.00)A.Beijing!B.toBeijing!C.WelcomeyoutoBeijing!D.youtoBeijing!32.有以下程序: (分数:1.00)A.3,5,B.3,6,C.3,7,D.0,3,33.有以下程序: (分数:1.00)A.2B.1C.3D.034.有

10、以下程序: (分数:1.00)A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,335.以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。(分数:1.00)A.extern和 staticB.auto和 staticC.register和 staticD.register和 extern36. (分数:1.00)A.B.C.D.37.有以下程序: (分数:1.00)A.Qian,f,350,Sun,f,350B.Qian,f,350,Qian,f,350C.Qian,f,350,Sun,m,370D.Zhao,m,290,

11、Sun,m,37038.有以下程序: (分数:1.00)A.5B.1C.20D.1839.以下叙述正确的是( )。(分数:1.00)A.表达式 sizeof(FILE*)=sizeof(int*)的值为真B.文件指针的值是一个整数,它的值一定小于文件字节数C.文件指针的值是所指文件的当前语取位置D.使用 fscanf函数可以向任意类型的文件中写入任意数量的字符40.函数 fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(分数:1.00)A.freadB.fscanfC.fgetsD.getc二、程序填空题(总题数:1,分数:1.00)41.给定程序中,函数 fu

12、n的作用是:不断从终端读入整数,由变量 a统计大于 0的个数,用变量 c来统计小于 0的个数,当输入 0时结束输入,并通过形参 pa和 pb把统计的数据传回主函数进行输出。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在BLANK1C 中。 不得增行或删行,也不得更改程序的结构! 试题程序: (分数:1.00)_三、程序修改题(总题数:1,分数:1.00)42.给定程序 modi1c 的主函数中,将 a、b、c 三个节点链成一个单向链表,并给各节点的数据域赋值,函数 fun( )的作用是:累加链表节点数据域中的数据作为函数值返回。 请改正函数 fun

13、中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: (分数:1.00)_四、程序设计题(总题数:1,分数:1.00)43.请编写函数 fun,其功能是分别统计形参 t所指二维数组中字母 A和 C的个数。 注意:部分源程序存在 PROGlC 中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语勾。 试题程序: (分数:1.00)_全国计算机等级考试二级 C语言真题题库 1+2015年 9月答案解析(总分:43.00,做题时间:120 分钟)一、选择题(每小题 1分(总题数:40,分

14、数:40.00)1.下列叙述中正确的是( )。(分数:1.00)A.解决同一个问题的不同算法的时间复杂度一般是不同的 B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理,如果数据存储结构不同,不同算法的时间复杂度肯定相同D.对同一批数据作不同的处理,如果数据存储结构相同,不同算法的时间复杂度肯定相同解析:解析算法的时间复杂度是指执行算法所需要的计算工作量,而计算下作量是用算法所执行的基本运算次数来度量的。解决同一个问题的不同算法的时间复杂度,可能相同也可能不相同。算法的时间复杂度与数据存储结构无关,对同一批数据做同一种处理或者不同处理,数据存储结构相同或者不同,算

15、法的时间复杂度都可能相同或者不同。故选 A选项。2.下列处理中与队列有关的是( )。(分数:1.00)A.操作系统中的作业调度 B.执行程序中的过程调用C.执行程序中的循环控制D.二叉树的遍历解析:解析队列是指允许在一端进行插入,而在另一端进行删除的线性表。由于最先进入队列的元素将最先出队,所以队列具有“先进先出”的特性,体现了“先来先服务”的原则。作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配资源再将新创建的进程插入就绪队列的过程。执行程序中的过程调用一般指函数调用,需要调用的时候转入被调用函数地址执行程序,与队列无关。执行程序中的循

16、环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。二叉树是一个有限的节点集合,二叉树的遍历是指不重复地访问二叉树中的所有节点,与队列无关。故本题选择 A选项。3.设栈的存储空间为 S(1:m),初始状态为 topm+1。经过一系列入栈与退栈操作后,top1。现又要将一个元素进栈,栈顶指针 top值变为( )。(分数:1.00)A.发生栈满的错误 B.2C.mD.0解析:解析栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即是取出栈顶元素并将其赋予指定变量。题目中初始状态为 topm+1,可知入栈栈顶指针 to

17、ptop-1,出栈栈顶指针 toptop+1,由于栈长为 m,当 top1 时栈满,不能再进行人栈操作。故选 A选项。4.设二叉树共有 150个节点,其中度为 1的节点有 10个,则该二叉树中的叶子节点数为( )。(分数:1.00)A.71B.70C.69D.不可能有这样的二叉树 解析:解析在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为 0的节点总是比度为 2的节点多一个。如果有一棵二叉树,节点总数为 150,假设度为 0的节点个数为 n,则有 n+10+n-1150,n705,由于节点个数必须是整数,所以不可能有题目中这样的二叉树。故

18、选择 D选项。5.非空循环链表所表示的数据结构( )。(分数:1.00)A.有根节点也有叶子节点 B.没有根节点但有叶子节点C.有根节点但没有叶子节点D.没有根节点也没有叶子节点解析:解析在单链表的第一个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由 NULL改为指向表头节点,这样的链表称为循环链表。循环链表是线性结构,有且只有一个根节点,每一个节点最多有一个前件,也最多有一个后件。循环链表表头节点为根节点,链表的最后一个节点为叶子节点,虽然它含有一个指向表头节点的指针,但是表头节点并不是它的一个后件。故选择 A选项。6.设二叉树中共有 31个节点,其中的节点值互不相

19、同。如果该二叉树的后序序列与中序序列相同,则该二叉树的深度为( )。(分数:1.00)A.31 B.16C.17D.5解析:解析二叉树遍历可以分为 3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。由节点值互不相同而后序序列与中序序列相同,可知该二叉树所有的节点都没有右子树,所以 31个节点的二叉树深度为 31。故选 A选项。7.在最坏情况下,堆排序的时间复杂度是( )。(分数:1.00)A.O(lgo2n)B.0(nlog2n) C.O(n2)D.O(n15 )解析:解析若有

20、n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆,大根堆是指所有节点的值大于或等于左右子节点的值;小根堆是指所有节点的值小于或等于左右子节点的值。在调整建堆的过程中,总是将根节点值与左、右子树的根节点进行比较,若不满足堆的条件,则将左、右子树根节点值中的大者与根节点值进行交换。堆排序最坏情况下需要 O(nlog2n)次比较,所以时间复杂度是 0(nlog2n),B 选项正确。8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(分数:1.00)A.学籍管理系统B.ERP系统C.C编译程序 D.CAI软件解析:解析计算机软件按

21、功能分为应用软件、系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。支撑软件介于系统软件和应用软件之间,协助用户开发软件的工具型软件,其中包括帮助程序人员开发和维护软件产品的工具软件,也包括帮助管理人员控制开发进程和项目管理的工具软件,如Dephi、PowerBuilder 等。选项 C属于系统软件,A、B、D 选项属于应用软件,故选 C选项。9.存储在计算机内有结构的数据集合是( )。(分数:1.00)A.数据库 B.数据库系统C.数据库管理系统D.数据结构解析:解析数据库是指长期存储在计

22、算机内的、有组织的、可共享的数据集合。数据库系统是由数据库及其管理软件组成的系统,是应用软件。数据库管理系统是数据库系统的核心,它位于用户与操作系统之间,属于系统软件。数据结构是计算机存储、组织数据的方式。故本题选 A选项。10.在数据库技术中,为提高数据库的逻辑独立性和物理独立性,数据库的结构被划分成用户级、存储级和( )。(分数:1.00)A.概念级 B.外部级C.管理员级D.内部纽解析:解析数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。概念模式是数据库系统中全局数据逻辑结构的描述,全体用户的公共数据视图。外模式也称于模式或者用户模式,是用户的数据视图,也就是用户所能够看见和

23、使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。内模式又称物理模式,是数据物理结构和存储方式的描述,是数据在数据库内部的存储方式。所以数据库的结构被划分成用户级、存储级和概念级。故选 A选项。11.以下叙述错误的是( )。(分数:1.00)A.一个算法所包含的操作步骤应该是有限的B.任何能通过编译和运行的算法都一定能得到所期望的结果 C.算法中每一条指令必须有确切的含义D.算法可以用各种描述方法来进行描述解析:解析算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知 A,C,D 选项正确。C 语言中,通过

24、编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故 B选项错误。答案为 B选项。12.以下是正确 C语言实型常量的是( )。(分数:1.00)A.e-1B.e-1C.-1eD.1e-1 解析:解析所谓常量是指在程序运行过程中,其值不能被改变的量。在 C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。实型常量有两种表示形式:十进制小数形式、指数形式。指数形式中e后面的指数必须是整数,阶码标志 e之前需要有数字,由此可知 A,B,C 选项错误。答案为 D选项。13.以下叙述正确的是( )。(分数:1.00)A.

25、在 C语言中分号是语句的组成部分 B.C语言程序由 C语句组成,可以省略 main函数C.分号是 C语句之间的分隔符D.所有程序行都必须用分号结束解析:解析C 程序的入口函数是 main(),C 程序中有且只有一个 main函数,故 B选项错误。分号是 C语言一条语句的结束标志,不是分隔符,C 语言分隔符是用来分隔多个变量、数据项、表达式等的符号,包括逗号、空白符、分号和冒号等,C 选项错误。C 语言的程序不是以分号结束的,因为 C语言是面向过程的,从 main函数开始在 main函数里结束,D 选项错误。故答案为 A选项。14.若有定义:double a,b,c;能正确给 a,b,c 输人数

26、据的语句是( )。(分数:1.00)A.scanf(“lflflf“a,b,c);B.scanf(“fff“,a,b,c);C.scanf(“lflflf,a,b,c);D.scanf(“lflflf“,a,b,c); 解析:解析lf,le 是针对 double类型的,如果仅用f,输入的数据可能不完全被接收,数据的精度可能不足。f 主要针对 float类型的变量输入,因此 B选项错误。根据题目格式可知 A,C 选项错误。故答案为 D选项。15.有以下程序: (分数:1.00)A.IB.J C.KD.H解析:解析根据题目给出条件 printf(”cn”,A+x),x0x9,将十六进制的 x转为十

27、进制得x9,即 printf(”cn”,A+9),打印格式要求是c,即要求输出一个字符,因此需要从字符A,按字母顺序向后偏移 9个位置,可得结果为 J。故答案为 B选项。16.设有定义:double x516894;,则语句 printf(“lfn“,(int)(x*1000+05)1000);的输出结果是( )。(分数:1.00)A.516900 B.516800C.000000D.输出格式说明符与输出项不匹配,产生错误信息解析:解析(x *1000+05)表示 x向右移动 3位小数,加 05,也就是 x的小数第 4位加 5,若这位大于等于 5,则进 1到个位。因为“516894*10005

28、16894,516894+05516944”,所以(int)(x*1000+05)强制转换为整型结果为 5169。“516910000=5169”,由于分母 10000 为浮点型所以结果自动转换为浮点数,故 printf(“lfn”,5169)结果是 516900。故答案为 A选项。17.有以下程序: (分数:1.00)A.编译有错 B.0,0,0,3C.1,1,2,0D.0,1,2,0解析:解析C 语言规定 else总是和之前与其最近的且不带 else的 if配对,题目中,if(a1)b1;c2;默认将与 if配对的 else省略了,下一句 else d3;中 else没有匹配的 if,为非

29、法else。另外,if 的判断条件 a1 是赋值语句,不是判断语句,此处也会产生编译错误。因此答案为 A选项。18.有以下程序: (分数:1.00)A.0,1 B.0,0C.1,-1D.0,2解析:解析for(;+a-b;);for 循环中第 1,3 表达式为缺省项,判断条件为+a-b;,a-2,b2;,第一次执行了+a 和-b,得 a-1,b1,即-11 表示为真,循环条件成立,第二次执行+a 为 0,由于运算符的应用中,当第一个条件为假时,不执行第二个条件,-b 不执行了,所以 b1。因此 a,b 的最终值为 0,1。故答案为 A选项。19.有以下程序: (分数:1.00)A.6B.8C.

30、7 D.5解析:解析后置自增运算 k+表示先运算,后白加。if(t+6)printf(“dn”,t);else printf(“dn”,t-);t 的初值为 6,t+6,则条件为假,执行 printf(“dn”,t-);语句,此时 t7,打印的 t值为 7,之后进行自减操作 t6。因此打印的结果为 7。故答案为 C选项。20.有以下程序: (分数:1.00)A.CBB.BCAC.CCBBD.CDBCA 解析:解析putchar()函数功能是输出一个字符,由 whlie判断条件和 ch初始值可知,只要 chA,每次循环执行两次 putchar(),否则跳出循环。第一次输出 CD,第二次输出 BC

31、,第三次输出 A,跳出循环。因此答案为 D选项。21.以下程序拟实现计算 s1+2*2+3*3+n*n+,直到 s1000 为止。 (分数:1.00)A.把 while(s1000);改为 while(s1000); B.把 s1;改为 s0;C.把 n1;改为 n0;D.把 nn+1;改为 n=n*n解析:解析题目中程序不能实现预期功能是因为 while的循环条件错误,在 B选项中,把 s1,改为s=0,最终的结果 s4,与题目原意不同;在 C选项中,把 n1,改为 n0,最终的结果 s2,与题目原意不同;在 D选项中,把 nn+1,改为 nn*n,最终的结果 s2,与题目原意不同;A 选项

32、,正确地修改了 while循环条件,可以得到正确结果。故答案为 A选项。22.有以下程序: (分数:1.00)A.计算 m和 n的最小公倍数B.计算 m和 n的最大公约数 C.计算 m和 n的差值D.找出 m和 n中的较大值解析:解析题目使用更相减损术求最大公约数,其思想:任意给定两个正整数,判断它们是否都是偶数。若是,则用 2约简,若不是则执行第二步。以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。则第一步中约掉的若干个 2与第二步中等数的乘积就是所求的最大公约数。因此。故答案为 B选项。23.有以下程序: (分数:1.00)A.

33、k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b); 解析:解析*与()的优先级为()的优先级高于*,因此(*f)()定义函数指针 f。f 指向函数的指针,fadd,将函数 add()的首地址赋给指针 f,所以调用函数 add()可以写为 f(),其返回值是整型,不是指针类型,不能用*取指针指向的内存单元的数据,故 k*f(a,b)的调用方式错误。答案为 D选项。24.若有定义语句: double x,y,*px,*py; 执行 pxx;pyy; 正确的输入语句是( )。(分数:1.00)A.scanf(“lflfI“,x,y);B.scanf(“f

34、f“x,y);C.scanf(“ff“,x,y);D.scanf(“lfle“,px,py); 解析:解析lf,le 是针对 double类型的数据,如果仅用f,输入的数据可能不能被完全接收,数据的精度可能不足。f 主要针对 float类型的变量输入,B 选项错误。根据 scanf(格式,变量地址),A,C 选项错误。故答案为 D选项。25.以下定义数组的语句中错误的是( )。(分数:1.00)A.int num31,2,3,4,5,6;B.int num241,2,3,4,5,6; C.int num1,2,3,4,5,6;D.int num41,2,3,4,5,6;解析:解析B 选项中,i

35、nt num241,2,3,4,5,6;定义数组是 2行 4列,但是初始化的结构是 3行 2列,因此初始化错误。故答案为 B选项。26.有以下程序: (分数:1.00)A.7,8,9,10,6,5,4,3,2,1,B.10,9,8,7,6,5,4,3,2,1,C.10,9,8,7,1,2,3,4,5,6, D.1,2,3,4,5,6,7,8,9,10,解析:解析fun()函数的作用是定义了冒泡法排序,flag 控制升序(0)或者降序(1),n 为参与排序的元素个数,a 为数组的起始地址。因此,fun(a,4,1)函数即将数组的前 4个数据降序排序,fun(a+4,6,0)函数是对数组的第 4项

36、后的 6个元素进行升序排序。故结果为10,9,8,7,1,2,3,4,5,6。答案为 C选项。27.有以下程序: (分数:1.00)A.10B.16C.6D.12 解析:解析第一个 for循环的作用是对数组 a赋初值,数组 a中各元素值依次为 09,第二个 for循环是计算数组前 4项的 ai+i之和。0+0,1+1,2+2,3+3,经计算的结果为 12,因此答案为 D选项。28.有以下程序: (分数:1.00)A.1B.2C.3 D.0解析:解析new-div()的返回值是 int类型,因此,ab+05(其中 a,b 均为 double类型)的小数部分将被截断。将 a、b 的值代人进行计算,

37、7831+052516+053016,故打印的结果为 3。故答案为 C选项。29.函数 fun的功能是在 a所指的具有 n个元素的数组中查找最大值并返回给调用函数,函数不完整。 (分数:1.00)A.psB.*p*s C.apasD.paps解析:解析函数 fun()的功能是在形参 a所指的具有 n个元素的数组中查找最大值并返回。通过 for循环比较,s 始终指向最大值的那个元素。使用*p 取指针的值,比较*p 和*s,当*s*p 时,修改指针 s的指向,因此答案为 B选项。30.有以下程序: (分数:1.00)A.10,One*Dream! B.9,0ne*Dream!C.9,0ne*Wor

38、ldD.10,0ne*World解析:解析函数 strlen(char*s)可以计算字符串 s的长度,不包括0在内;p 指向数组的第二个元素,因此 strlen(p)10,并打印,故答案为 A选项。31.有以下程序: (分数:1.00)A.Beijing! B.toBeijing!C.WelcomeyoutoBeijing!D.youtoBeijing!解析:解析for 循环的作用是每次遇到空格,将空格后面的字符移动到数组的最前面。因此数组最后的状态是“Beijing!0g!0ng!0eijing!0”,但是 printf(“s”)打印时遇到0 自动结束。因此,打印结果为 Beijing!。故

39、答案为 A选项。32.有以下程序: (分数:1.00)A.3,5, B.3,6,C.3,7,D.0,3,解析:解析stdic 静态变量只在声明时初始化一次。因此,第一次调用函数 f(k0),此时nmk0,经过自增操作 n1,m1,k1,返回值为 3。第二次调用函数 f(k1),此时n1,k1,m0,经过自增操作,n2,k2,m1,返回值为 5。故最终结果为 3,5。故答案为 A选项。33.有以下程序: (分数:1.00)A.2B.1 C.3D.0解析:解析局部变量覆盖全局变量,但是全局变量的声明周期还存在。fun()函数调用完成后,由于 m为全局变量,其值被修改为 32,即函数的返回值为 32

40、,此时 m3212。第二次调用 fun(a,b),函数的返回值为 3,此时 m2,故输出为 1。所以答案为 B选项。34.有以下程序: (分数:1.00)A.4,5,2,4,1,3, B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3解析:解析sizeof()是运算符,在头文件中 typedef为 unsigned int,其值在编译时即计算好了,参数可以是数组、指针、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。strlen(*char)函数,要在运行时才能计算,参数必须是字符型指针(char*),当数组名作为参数传入时,实际上数组就

41、退化成指针了,它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符 NULL,返回的长度大小不包括 NULL。sizeof(a)求数组 a所占空间的大小,包括字符串最后的0,所以sizeof(a)5,而 strlen()遇到0就结束,所以 strlen(a)4。strlen(b)是指针指向的字符串的长度,sizeof(b)是指针的大小。strlen(c)是字符串的长度,sizeof(c)是数组的长度。因此,输出4,5,2,4,1,3。故答案为 A选项。35.以下与存储类别有关的四组说明符中,全部属

42、于静态类的一组是( )。(分数:1.00)A.extern和 static B.auto和 staticC.register和 staticD.register和 extern解析:解析auto 用于声明变量的生存期为自动,即不会将在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而将在两数中定义的变量视为局部变量。这个关键字通常会被省略,因为所有的变量默认就是 auto的。 register 定义的变量告诉编译器尽可能地将变量存在 CPU内部寄存器中而不是通过内存寻址访问,这样可以提高效率。 static 变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值

43、。这一点是它与堆栈变量和堆变量的区别。变量用 static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当 static用来修饰全局变量时,它就改变了全局变量的作用域。 extern 将变量作用域限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extern 外部声明,该变量在其他地方有被定义过。因此,答案为 A选项。36. (分数:1.00)A. B.C.D.解析:解析存储结构用链式存储。链式结构每个节点有个指针域,指针域指向下一个链式结构的节点,因此指针域的结构应该是链式结构形式,因此应定义为 struct link * next,故答案为 A选项

44、。struct是结构体的说明符,不能省略。37.有以下程序: (分数:1.00)A.Qian,f,350,Sun,f,350 B.Qian,f,350,Qian,f,350C.Qian,f,350,Sun,m,370D.Zhao,m,290,Sun,m,370解析:解析C 语言函数参数传递大致分为(1)值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行的,不会影响主调函数的实参变量的值。 (2)地址传递过程中,被调函数的形参虽然也作为局部变量在培栈

45、中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中 name是数组,做实参传递,会退化为指针,因此调用 f(),b.name 发生修改,其他的成员,传递的是拷贝文件,不会被修改。因此输出 Sun,f,350。故答案为 A选项。38.有以下程序: (分数:1.00)A.5B.1C.20 D.18解析:解析运算符为按位异或运算符,即 011,101,110,000,因此 ab=101在进行操作,变为 1010022

46、0 10,因此答案为 C选项。39.以下叙述正确的是( )。(分数:1.00)A.表达式 sizeof(FILE*)=sizeof(int*)的值为真 B.文件指针的值是一个整数,它的值一定小于文件字节数C.文件指针的值是所指文件的当前语取位置D.使用 fscanf函数可以向任意类型的文件中写入任意数量的字符解析:解析sizeof(FILE*)4,因为 FILE*为指针、指针的大小 4,sizeof(int*)4,理由同前面。文件指针的值是地址,是一个十六进制的数,它的值不一定小于文件字节数,因此选项 B错误。文件指针是所指文件的当前读取位置,而不是文件指针的值,因此选项 C错误。intfsc

47、anf(FILE *stream,constchar*format,argument);fscanf 函数可以向任意类型的文件,写入任意数量的字符,但不能超过系统的缓冲区,写文件先写入缓冲区,最后一起写入文件,因此选项 D错误。答案为A选项。40.函数 fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(分数:1.00)A.freadB.fscanfC.fgetsD.getc 解析:解析fgets 读取一个长度为(n-1)的字符串;fread 按照指定的长度读取数据项;对应二进制的打开方式;fscanf 按指定格式读,对应文本打开方式;getc 从指定的文件读入一个字符,即从 fp所指向的文件中读入一个字符赋给 ch。因此答案为 D选项。二、程序填空题(总题数:1,分数:1.00)41.给定程序中,函数 fun的作用是:不断从终端读入整数,由变量 a统计大于 0的个数,用变量 c来统计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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