全国计算机等考试二C语言笔试试卷答案及解析.doc_第1页
全国计算机等考试二C语言笔试试卷答案及解析.doc_第2页
全国计算机等考试二C语言笔试试卷答案及解析.doc_第3页
全国计算机等考试二C语言笔试试卷答案及解析.doc_第4页
全国计算机等考试二C语言笔试试卷答案及解析.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012年9月22日全国计算机等级考试二级C语言笔试题题目解析说明2012年9月22日全国计算机等级考试二级C语言笔试题题目解析说明2012年命题范围:选择题考试时间数据结构基础知识数据库系统概论软件工程知识C语言编程知识2012年3月24日3题,6分3题,6分4题,8分30题,50分2012年9月22日3题,6分3题,6分4题,8分30题,50分填空题考试时间数据结构基础知识数据库系统概论软件工程知识C语言编程知识2012年3月24日2题,4分1题,2分2题,4分10题,20分2012年9月22日2题,4分2题,4分1题,2分10题,20分本期命题存在问题:选择第21题命题和选择第26题命题与C语言关于指针概念有冲突,详见该题剖析。命题总评价:全国C语言程序设计命题原则是避开了含有复杂算法大块程序和C语言数据链表复杂操作等难题,说明全国命题能综合考核非计算机专业的学生掌握C语言初步编程能力。命题难点增加部份及日期:自2011年3月开始新增加了数据结构部分(数列、二叉树方面)内容。2012年9月22日网上发布的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、 (2)B、 (3)B、 (4)D、 (5)A(6)C、 (7)C、 (8)B、 (9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B、(22)D、(23)D、(24)B、(25)D(26)C、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6 【2】20 【3】逻辑独立 【4】选择【5】系统软件 【6】ab 【7】%lf%f 【8】224【9】16 【10】4321 【11】7 【12】22【13】2 【14】6 【15】p=p-next2012年9月22日评阅者注释的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、 (2)B、 (3)B、 (4)D、 (5)A(6)C、 (7)C、 (8)B、 (9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B?、(22)D、(23)D、(24)B、(25)D(26)C?、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6 【2】20 【3】逻辑独立性 【4】选择【5】系统软件 【6】ab 【7】%lf%f 【8】224【9】16 【10】4321 【11】7 【12】22【13】2 【14】6 【15】p=p-next2012年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、 选择题(-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(1)下列链表中,其逻辑结构属于非线性结构的是_。A)双向链表 B) 带链的栈 C) 二叉链表D) 循环链表(1)C 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第13张说明:链表存储结构是数据的存储结构;排除链表因素,从数据逻辑结构来看,线性结构包括线性表、栈和队;非线性结构包括树形结构和图形结构,所以二叉树是树形结构,即非线性结构。(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 20B) 0或35 C) 15D) 16 (2)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第100-101张关于入队(Q.rear=Q.rear+1)与退队(Q.front=Qfront+1)运算规则,此外第一次入队为Q.rear=1;第一次退队为Q.front=1。并假定循环队列最大个数为maxsize,其相应存储空间为1: maxsize,则循环队列的入队与退队图例和运算后元素个数的确定原则如下:循环队列中的元素个数或称队列长度通用计算公式:(Q.rear-Q.front+ maxsize )% maxsize例如,Q.rear=20,Q.front=15,则循环队列中的元素个数=(20-15+35)%35=5;Q.rear=40,Q.front=15,则循环队列中的元素个数=(40-15+35)%35=25;本题根据Q.rear=Q.front=15,maxsize=35,则循环队列中元素个数=(15-15+35)%35=0或35;(3)下列关于栈的叙述中,正确的是 A) 栈底元素一定是最后入栈的元素B) 栈操作遵循先进后出的原则 C) 栈顶元素一定是最先入栈的元素D) 以上三种说法都不对 (3)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第63张幻灯片说明:栈元素入、退原则:先进后出(FILO)或后进先出(LIFO)。栈顶元素S.top=栈底元素S.bottom(或S.base) 表示栈为空栈,均指示第1个单元。此处选项B是遵循FILO原则的。(4)在关系数据库中,用来表示实体间联系的是 A)网状结构 B)树状结构 C)属性 D)二维表 (4)D 【解析】此题属“数据库技术”课的内容,可见/uuxzhang上全国计算机二级考试参考资料_数据库系统概论.zip中“第1章2绪论.ppt”第14张幻灯片说明:“关系模型中数据的逻辑结构是一张二维表”。(5) 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员的联系是 A)1:m联系 B)m:n联系 C)1:1联系 D)m:1联系 (5)A 【解析】此题属“数据库技术”课的内容,可见/uuxzhang上全国计算机二级考试参考资料_数据库系统概论.zip中“第1章1绪论.ppt”第41-51张幻灯片说明:实体集A与实体集B具有一对一联系一对一联系(1:1)实体集A与实体集B有一对多联系一对多联系(1:m) 实体集A与实体B具有多对多联系多对多联系(m:n)(6) 有两个关系R和S如下:RSABCABCa12c31b21c31 则由关系R和S得到关系T的操作是 A)自然连接 B)并 C)选择 D)投影 (6)C 【解析】关系运算中传统运算有并、差、交和笛卡尔积;专门关系运算有选择、投影连接和除法运算,详见下图所示。根据题意S关系是R关系的选择运算,(7) 数据字典(DD)所定义的对象都包含于A)软件结构图 B)方框图C)数据流图(DFD图) D)程序流程图 (7)C。【解析】此题属“数据库技术”课的内容,可见/uuxzhang上全国计算机二级考试参考资料_软件工程课件.zip中“第03章需求分析(结构化分析).ppt”第7张幻灯片说明。(8) 软件需求规格说明书的作用不包括 A)软件设计的依据 B)软件可行性研究的依据 C)软件验收的依据 D)用户与开发人员对软件要做什么的共同理解(8)B 【解析】可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能选择的各种方案;说明并论证所选定的方案。它属于软件开发前期工作,不是软件需求内容。详见/uuxzhang上全国计算机二级考试参考资料_软件工程课件.zip中“第02章可行性研究.ppt”第12张幻灯片说明。对目标系统提出完整、准确、清晰和具体的要求,例如ACD,是软件需求规格编写任务,详见/uuxzhang上全国计算机二级考试参考资料_软件工程课件.zip中“第03章需求分析(结构化分析).ppt”(9) 下面属于黑盒测试方法的是A)边界值分析B)路径覆盖 C)语句覆盖 D)逻辑覆盖(9)A 【解析】软件测试方法一般分为两种:白盒测试与黑盒测试。这里,白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标,即BCD属于白盒测试。黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,实际上是站在最终用户的立场上,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定。(10) 下面不属于软件设计阶段任务的是 A)制定软件确认测试计划B)数据库设计 C)软件总体 D)算法设计(10)A 【解析】软件设计分总体设计和详细设计,详见/uuxzhang上全国计算机二级考试参考资料_软件工程课件.zip中” 第04章总体设计.ppt”和” 第05章详细设计.ppt”两部分。选项BCD属于软件设计的工作。而A属于“第07章提交与维护.ppt”内容。(11)以下叙述中正确的是A)在C语言程序中,main函数必须放在其他函数的最前面B)每个后缀为.C的C语言源程序都可以单独进行编译 C)在C语言程序中,只有main函数才可单独进行编译D)每个后缀为.C的C语言源程序都应该包含一个main函数(11)B 【解析】A错误原因是main函数可放在源程序任意位置上;C错误原因是C语言程序都可以编译,它与选项B相悖的;选项D不一定正确。(12) C语言中标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确的是 A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义 B)用户标识符可以由字母和数字任意顺序组成 C)在标识符中大写字母和小写字母被认为是相同的字符 D)关键字可用作用户标识符,但失去原有含义 (12)A 【解析】C语言对于标识符规定如下:它可以由数字、字母和下划线组成,打头字符规定为字母或下划线,对于大写与小写的同一字母,被认为两个不同的标识符;小写的关键字不用作标识符;大写的关键字仍可以用作标识符;库函数中的函数名可用作用户标识符,但失去原有含义。详见清华大学出版社“C程序设计(第四版)”P42。(13)以下选项中表示一个合法的常量的是(说明符号表示空格) A) 999 B)0Xab C)123E0.2 D) 2.7e(13)B 【解析】见南大出版社“大学计算机信息技术教程(第5版)”P40,表3.1;P51常量定义。浮点型常量形式为 xxxEyy或xxxeyy,要求yy是正负整数,不能缺少或为小数。整型常量有三种表示形式:例如十六进制形式0Xab,其十进制形式为171,八进制形式为0256;对于小于128的整数有六种表示形式:例如十进制形式为65;其十六进制形式0x41;其八进制形式为0101;其转义字符表示形式为A或x41或101。(14) C语言主要是借助以下哪个功能来实现程序模块化 A)定义函数 B)定义常量和外部变量 C)三种基本结构语句 D)丰富的数据类型 (14)A 【解析】C语言程序选项B、D是模块中运行数据所要求的;选项C是程序控制走向的控制语句。(15) 以下叙述中错误的是 A)非零的数值型常量有正值和负值的区分B)常量是在程序运行过程中值不能改变的量 C)定义符号常量必须用类型名来设定常量的类型D)用符号名表示的常量叫符号常量(15)C 【解析】详见清华大学出版社“C程序设计(第四版)”P40-41。(16)若有定义和语句:int a,b; scanf(%d,%d ,&a,&b); 以下选项中的输入数据,不能把值3赋给a、5赋给b的是 A)3,5, B)3,5,4 C)3 ,5 D)3,5(16)C 【解析】根据清华大学出版社“C程序设计(第四版)”P76“3、使用scanf函数时应注意的问题”规定,(2)如果在“格式控制字符串”中除了格式说明外还有其他字符,则在输入数据时在对应的位置上应输入与这些字符相同的字符,此题只有其他字符“,”,所以ABD均正确。(17)C语言中char类型数据占字节数为 A) 3 B) 4 C) 1 D) 2(17)C 【解析】根据清华大学出版社“C程序设计(第四版)”P49表3.3字符型数据的存储空间和值的范围。(18)下列关系表达式中,结果为“假”的是 A) (3+4)6 B) (3!=4)2 C) 3=4|3 D) (34)=1(18)B 【解析】对于选取项C,根据清华大学出版社“C程序设计(第四版)”P378附录D运算 和结合性规定,关系运算符”2得“假”的结论。(19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是 A) switch(a+9) B) switch a*b case c1: y=a-b; case 10: x=a+b; case c2: y=a+b; default: y=a-b; C) switch(a+9) D) switch(a*a+b*b) case 1: case 3: y=a+b;break; default: break; Case 0: case4: y=a+b; case 3: y=a+b;break; case 2: y=a-b;break; (19)D 【解析】根据清华大学出版社“C程序设计(第四版)”P 102说明,C语言中语句switch规定,case 后面跟常量或常量表达式,且每句case的一串语句的最后语句必须是break,否则违背了switch语句语句设计的初衷,选项BC违背了此原则;选项A不符合switch语句的语法。(20)有以下程序 #include main( ) int a=-2,b=0; while(a+&+b); printf(%d,%dn,a,b); 程序运行后的结果是 A)1,3 B)0,2 C)0,3 D)1,2(20)D 【解析】根据清华大学出版社“C程序设计(第四版)”P378附录D运算 和结合性规定,自加”+”级别是第3级;逻辑与运算符“&”,其级别是11级。据此判断如下:循环每一轮:while(-2&1);满足要求,继续循环;第二轮:while(-1&2); 满足要求,继续循环;第三轮while(0&2)不满足要求,退出循环,输出1,2。此外逻辑表达式运算规则,对于逻辑与运算符,只要左边表达式的值是假(0),则运算符右边表达式不运算,保持b为2不变。(21) 设有定义:int x=0,*p;,立刻执行以下语句,正确的语句是 A) p=x; B) *p=x; C) p=NULL; D) *p=NULL(21)B? 【解析】从头文件“stdio.h”可知NULL的值为0(宏定义#define NULL 0)。根据清华大学出版社“C程序设计(第四版)”P222关于指针变量规定,指针变量的赋值有严格规定,严禁对指针变量赋任何数值常量,否则,再次运算,若该值处于计算机系统关键内存,会导致计算机死机严重后果;指针变量赋值只有两种标准形式:int x=0,*p=x; 和int x=0,*p; p=&x;。选项A、C违犯了规定,是不正确选择,见下图。选项B和D效果一样,违犯了规定,均赋值常量0,编译时会产生警告错误是指针常量p没有赋值(在指针变量地址不明条件下,对指针变量所含内容的地址赋值),运行虽然没有致命错误提示(fatal error),但会有警告提示:严禁对该地址赋值!运行也没有结果,并提示应用程序错误!见下图所示。结论:此题命题不够正确,会导致考生误判的结果。建议改命题如下:设有定义:int x=0,*p;,立刻执行以下语句,正确的语句是(答案:B) A) p=x; B) p=&x; C) *p=x; D) *p=NULL(22) 下列叙述中正确的是 A)可以用关系运算符比较字符串的大小 B)空字符串不占用内存,其内存空间大小为0 C)两个连续的单引号是合法的字符常量 D)两个连续的双引号是合法的字符串常量(22)D 【解析】选项D的连续的双引号为空字符串,长度为0。选项A:正确说法是关系运算符只能比较字符及字符串依次的ASCII大小;选项B,空字符串长度或其内存空间为1;选项C,在定义或赋值时,连续单引号是不允许的,否则编译时会产生空字符常量的错误:error C2137: empty character constant(23)有以下程序 # include main( ) char a=H; a=(aA&a=Z)?(a-A+a):a; printf(%cn,a); 程序运行后的输出结果是 A) A B) a C) H D) h(23)D 【解析】清华大学出版社“C程序设计(第四版)”P97,4.5条件运算符内容。“-A+a”意味加十进制数32,使前面字母大写变小写。(24) 有以下程序 # include int f(int x); main( ) int a,b=0; for(a=0;a3;a+) b=b+f(a); purchar(A+b); int f(int x) return x*x+1; 程序运行后的输出结果是 A) ABE B)BD1 C)BCF D)BCD(24)B 【解析】掌握ASCII中字母变化规律,主函数输出三次,每次一个字符:第一次A+1=B;第二次A+3=D;第三次A+8=I(25)设有定义:int x23;,则以下关于二维数组x的叙述错误的是 A) x0可看作是由3个整型元素组成的一维数组 B) x0和x1是数组名,分别代表不同的地址常量 C) 数组x包含6个元素 D) 可以用语句x0=0;为数组所有元素赋初值0(25) D 【解析】清华大学出版社“C程序设计(第四版)”P151,对所有元素赋初值0的标准形式是在定义时以int x23=0;形式赋值的。(26)设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于 A) p= ; B) p=0; C) p=0; D) p=;(26)C 【解析】清华大学出版社“C程序设计(第四版)”P220“指针是什么”,指出一个变量的地址为该变量的“指针”。所以,C语言严禁直接给指针变量赋任何常量,其中包括字符、数值量,否则会导致系统混乱,因此该题命题出发点有商榷之处。(27)有以下程序 # include main( ) int a=10,20,30,40,*p=a,i; for(i=0;i=3;i+) ai=*p; p+; printf( %dn,a2 ); 程序运行后的输出结果是A) 30B) 40 C) 10D) 20 (27)B 【解析】本题比较简单,清华大学出版社“C程序设计(第四版)”P220,首先指针初始位置指向数组a首地址,即a0,并将10赋给a0,即按原次序对数组a赋值。所以a2就是原来值30。(28)有以下程序# include #define N 3void fun(int aN,int b) int i,j; for(i=0;iN;i+) bi=ai0; for(j=1;jN;j+) if(biaij) bi=aij; main( ) int xNN=1,2,3,4,5,6,7,8,9, yN,i; fun(x,y);for(i=0;iN;i+) printf( %d,yi );printf( n); 程序运行后的输出结果是 A) 2,4,8 B) 3,6,9 C) 3,5,7 D) 1,3,5(28)B 【解析】此题题非常简单,求每一行的最大值存入y数组。命题改动建议:如果此题命题对x数组赋初值改变一下为更好:int xNN=1,3 ,2 ,4,6 ,5 ,7,9 ,8 , yN,i; (29)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数) # include # include main( ) char a10=abc, b10=012, c10=xyz; strcpy(a+1,b+2); puts(strcat(a,c+1); 程序运行后的输出结果是 A) a12xyzB) 12yz C) a2yz D) bc2yz(29) C【解析】本题比较简单,清华大学出版社“C程序设计(第四版)”P385字符及字符串库函数。此题检验是否理解库函数实参的指针定义。 (30)以下选项中,合法的是A) char str3=d, e, b, u, g, 0;B) char str4; str4=hello world;C) char name10; name=china;D) char str15= pass,str26; str2=str1;(30)A 【解析】清华大学出版社“C程序设计(第四版)”P155“字符数组的初始化”和P162字符串复制函数规定,给字符数组赋值有两种:初始化时定义,例如选项A或char str3=debug;;第二种赋值方式全部采用库函数strcpy(),故BCD为不合法,例如,选项C正确表示为,char name10; strcpy(name,china);。(31)有以下程序 # include main( ) char *s=12134; int k=0,a=0; while(sk+1!= 0) k+; if(k%2=0) a=a+(sk- 0+1); continue; a=a+(sk- 0); printf(k=%d a=%dn,k,a); 程序运行后的输出结果是 A) k=6 a=11B) k=3 a=14C) k=4 a=12 D) k=5 a=15 (31)C 【解析】此题较简单,式中“sk- 0”是将字符量;转化为相应的数字量。此题抽出字符串内偶数字符2和4,转化后加一,3+5为8,执行a=a+(sk- 0),即加上s4数字量,最后为12赋给变量a(a=a+(sk- 0);)。(32)有以下程序 # include main( ) char a510= one,two,three,four,five; int i,j; char t; for(i=0;i4;i+) for(j=i+1;jaj0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是 A) fwoB) fixC) two D) owo(32)A 【解析】此题对于i=0循环,a0变为fne,a3变为oour;i=1循环,a1变为fwo,a4变为tive;i=2循环,a2变为ohree,a3变为tour;i=3循环,a3维持为tour,a4 维持为 tive;所以下一次命题加大难度,是求执行puts(a4);语句后的值:tive(33)有以下程序 # include int a=1,b=2;void fun1 ( int a, int b ) printf(%d %d,a,b); void fun2 () a=3; b=4; main( ) fun1 (5,6); fun2();printf(%d %dn,a,b); 程序运行后的输出结果是 A) 1 2 5 6 B) 5 6 3 4 C) 5 6 1 2 D) 3 4 5 6 (33)B 【解析】此题较简单,变量a和b是全局变量。但在程序设计中,应避免采用全局变量设置,因为它不符合程序模块化的要求。(34)有以下程序 # include void func( int n) static int num=1; num=num+n; printf(%d , num); main( ) func(3); func(4); func(n); 程序运行后的输出结果是 A) 4 8 B) 3 4C) 3 5 D) 4 5(34)A 【解析】此题测试语句static的功能,它定义的变量是静态局部变量(清华大学出版社“C程序设计(第四版)”P213)在函数再次调用时,仍能保存上次调用后的数值,此外,若第一次调用时没有赋初值,则系统自动设置初值为0。此题第一次调用func(3),显示4,第二次调用func(4)时num仍保持为4,所以显示为8(35)有以下程序 # include # include void fun(int *p1, int *p2, int *s) s=(int*)malloc(sizeof(int); *s=*p1+*p2; free(s); main( ) int a=1, b=40, *q=&a; fun(&a,&b,q); printf( %dn,*q ); 程序运行后的输出结果是 A) 42B) 0 C)1 D) 41(35)D 【解析】清华大学出版社“C程序设计(第四版)”P285-286“动态内存分配与指向它的指针变量”一节,s=(int*)malloc(sizeof(int);动态为指针变量s申请内存空间,函数调用时,三个形参均是可返回函数fun运算后的值,所以函数fun调用结束后,为节省内存空间,应释放内存空间free(s);。(36)有以下程序 # include struct STU char name9; char sex; int score2; ; void f( struct STU a ) struct STU b= Zhao, m, 85, 90 ; a1=b; main( ) struct STU c2= Qian, f, 95, 92, Sun, m, 98, 99; f(c); printf(%s,%c,%d,%d, , c0.sex, c0.score0, c0.score1); printf(%s,%c,%d,%dn, , c1.sex, c1.score0, c1.score1); 程序运行后的输出结果是 A) Zhao,85,90,Sun,m,98,99B) Zhao,85,90,Qian,f ,95,92C)Qian,95,92,Sun ,m ,98,99D) Qian,f ,95,92, Zhao,85,90(36)D 【解析】此题是是简单的结构体题目。(37) 以下叙述中错误的是 A) 可以用typedef说明的新类型名来定义变量 B) typedef说明的新类型名必须使用大写字母 C) 用typedef可以为基本数据类型说明一个新名称 D) 用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名(37)B 【解析】清华大学出版社“C程序设计(第四版)”P3269.7“用typedef声明新类型名”。(38) 以下叙述中错误的是A) 函数的返回值类型不能是结构体类型,只能是是简单类型B) 函数可以返回指向结构体变量的指针C) 可以通过指向结构体变量的指针访问所指结构体变量的任何成员D) 只要类型相同,结构体变量之间可以整体赋值 (38)A 【解析】清华大学出版社“C程序设计(第四版)”P306-3169.3.3 “用结构体变量和结构体变量的指针作函数参数”、9.4.4-输出链表看出,结构体的首地址(head)可以以作为函数返回值。(39) 若有定义语句int b=2; 则表达式 (b2)/(3|b) 的值是 A) 4B) 8C) 0 D) 2(39)B 【解析】这是左移位运算题目。首先将2化作二进制数“0010”,然后后面加2个0,变为“1000”,即十六进制数“8”,换成十进制数为“8”,表达式 (3|b)的值是“1”。故答案是8/1=8。(40) 有以下程序# include main( ) FILE *fp; int i,a6=1,2,3,4,5,6; fp=fopen(d2.dat, w+); for(i=0;i6;i+) fprintf(fp, %dn,ai ); rewind(fp); for(i=0;i6;i+) fscanf(fp, %dn,&a5-i ); fclose(fp); for(i=0;i6;i+) printf(%d, ,ai );程序运行后的输出结果是A) 4,5,6,1,2,3 B) 1,2,3,3,2,1C) 1,2,3,4,5,6D) 6,5,4,3,2,1(40)D 【解析】清华大学出版社“C程序设计(第四版)”P350文件位置标记的定位:rewind(fp),使文件位置标记指向文件开头。for(i=0;i6;i+) fprintf(fp, %dn,ai );向文件d2.dat写入1,2,3,4,5,6;rewind(fp);回到文件起点;for(i=0;i6;i+) fscanf(fp, %dn,&a5-i );由文件d2.dat,按6,5,4,3,2,1次序读出,放置在数组a。所以for(i=0;i6;i+) printf(%d, ,ai );屏幕输出为6,5,4,3,2,1二、填空题(每空2分,共30分) 请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)一棵二叉树共有47个结点,23个度为2的结点。假设根结点在第1层,则该二叉树的深度为 【1】 。(1)6 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第166-171张幻灯片。若总结点数为n、度为2结点数为n2、度为1结点数为n1、叶子结点数为n0,则有公式n= n2+ n1+ n0;且存在n0n21,即 n= 2n2+ n1+1;得本题度为1的结点为n1=0。由此得该二叉树为满二叉树,若定义深度为k,则二叉树有公式:总结点数最大为2k-1。符合本题的要求2k-1 47,且472k-1-1。当k为5最多结点数是32;当k为6最多结点数是64。所以本题答案为6。(2)设栈的存储空间为S(1:40),初始状态为bottom=0,top=0。现经过一系列入栈与出栈运算后,top =20,则当前栈中有 【2】 个元素。(2)20 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第65张幻灯片说明:栈顶元素S.top=栈底元素S.bottom 表示栈为空栈,均指示第1个单元。追加元素或入栈时,移动S.top+;出栈时输出元素,S.top- -。本题题操作后,其栈内元素为S.top,即20。入栈与出栈操作图解见上面选择第3题。(3)数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为 【3】 。(3) 逻辑独立性 【解析】见/uuxzhang 上全国计算机二级考试参考资料_数据库系统概论-课件.zip中第一章1绪论第28张幻灯片说明:p 物理独立性是指应用程序与数据存储方式是相互独立的。当数据的物理存储改变了,应用程序不用改变。p 逻辑独立性是指应用程序与数据的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。(4)关系数据库中能实现的专门关系运算包括 【4】 、连接和投影。(4) 选择 【解析】见/uuxzhang 上全国计算机二级考试参考资料_数据库系统概论-课件.zip中“第2章2关系数据库.ppt”第26张幻灯片“2.4.2 专门的关系运算”说明:选择、投影、连接和除。(5)软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件)。Unix操作系统属于 【5】 软件。(5)系统软件 【解析】属于计算机基础知识,详见南大出版社“大学计算机信息技术教程(第5版)”P120。(6)请写出!(ab 【解析】清华大学出版社“C程序设计(第四版)”P378附录D运算符和结合性。“!”是逻辑非运算符。“(ab”。(7)以下程序运行时从键盘输入:1.0 2.0,输出结果是:1.000000 2.000000,请填空。 # include main( ) double a; float b; scanf( 【7】 ,&a,&b); printf(%f%f, ,a,b);(7)%lf%f 【解析】清华大学出版社“C程序设计(第四版)”P76表3.8和表3.9。(8) 有以下程序# include main( ) int n1=0,n2=0,n3=0; char ch; while(ch=getchar()!=!) switch(ch) case 1 : case 3 : n1+; break; case 2 : case 4 : n2+; break; default: n3+; break; printf(%d %d %d , n1,n2,n3);若程序运行时输入01234567!,则输出结果是 【8】 。(8)2 2 4 【解析】清华大学出版社“C程序设计(第四版)”P102”4.7用switch语句实现多分支选择结构”。(9)有以下程序 # include main( ) int i, sum=0; for(i=1;i9;i+=2) sum+=i;printf(%dn ,sum);程序运行后的输出结果是 【9】 。(9)16 【解析】此题比较简单。循环从i=1开始,1+3+5+7=16。(10) 有以下程序 # include main( ) int d,n=1234; while(n!=0) d=n%10; n=n/10; printf(%d ,d); 程序运行后的输出结果是 【10】 。(10)4321 【解析】此题比较简单。从另一角度来看,它是一个求取十进制整数的逆序数通用程序。请看下图,此例也可作为下次C语言笔试题候选题。(11) 有以下程序 # include int k=7; int *st( int *a) int *c=&k; if(*a*c) c=a; return c;main( ) int i=3, *p=&i, *r; r=st(p); printf(%dn , *r); 程序运行后的输出结果是 【11】 。(11) 7 【解析】清华大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论