201009计算机二级C语言笔试真题文字word版详细答案解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

201009二级c真题一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(1)B线性表的顺序存储结构是把线性表中相邻的元素存放在相邻的内存单元中,而链式存储结构是用一组任意存储单元来存放表中的数据元素,为了表示出每个元素与其直接后继元素之间的关系,除了存储元素本身的信息外,还需存储一个指示其直接后继的存储位置信息。故线性表的链式存储结构所需的存储空间一般要多于顺序存储结构,答案为B)。(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(2)C栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。当有新元素进栈时,栈顶指针向上移动;当有元素出栈时,栈顶指针向下移动。在栈中栈底指针不变,栈中元素随栈顶指针的变化而动态变化,故答案为C)。(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(3)D软件测试的目的是为了发现程序中的错误而运行程序。(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高4)A软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。主要表现在以下几个方面:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件可维护性差;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。故答案选A)。(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(5)A通常将软件产品从提出、实现、使用维护到使用、退役的过程称为软件生命周期。故答案为A)。(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(6)D继承是面向对象方法的一个重要特征。广义地说,继承是指能够直接获得已有的性质和特征,不必重复定义它们。在面向对象的软件技术中,继承是指子类自动地共享基类中定义的数据和方法的机制,故答案为D)。(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(7)D数据库按数据模型分为层次型数据库、网状型数据库、关系型数据库,数据模型即数据之间的联系方式,故答案为D)。(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(8)C两个实体间的联系可分为3种类型:①一对一联系,表现为主表中的一条记录与相关表中的一条记录相关联;②一对多联系,表现为主表中的一条记录与相关表中的多条记录相关联;③多对多联系,表现为主表中的多条记录与相关表中的多条记录相关联。本题中一个工作人员可以使用多台计算机,一台计算机可被多个人使用。故答案为C)。(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(9)C模式的3个级别反映了模式的3个不同环境,以及对它们的不同要求。其中,内模式处于最低层,它反映了数据在计算机物理结构中的实际存储形式,概念模式处于中层,它反映了设计者的数据全局逻辑要求,而外模式是处于最高层,反映了用户对数据的要求。故答案选C)。(10)有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(10)A自然连接是最常用的一种连接,它满足下面的条件:①两关系有公共域;②通过公共域的相等值进行连接,故答案为A)。(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(11)C一个结构化程序可以由顺序、分支、循环三种结构组成,但不是必须同时都包括,可以包括其中的一个或多个,所以选项A)错误。goto语句会破坏程序的结构性、可读性,不得以不要用,所以选项B)错误。三种基本结构构成的程序也可以解决大规模的程序,所以选项D)错误。在C语言中,利用函数来实现程序的模块化,C)正确。(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(12)B设计一个能解决实际问题的计算机程序需要经过以下几个过程:①建立模型。②算法设计:给出解决问题的步骤,即算法。③算法表达:选择一种表达算法的工具,对算法进行清晰的表达。④编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。⑤程序调试:对编写好的程序进行调试,修改程序中的错误。⑥程序文档编写与程序维护。综上所述,B)选项是符合上述描述的,其他选项不恰当。(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(13)BC程序在运行过程中所有计算都以二进制方式进行,所以A)正确B)错误。所有C程序先编译再链接,全都无误后才能运行。C程序中整型变量用于存放整数,实型变量用于存放浮点数。所以,本题答案为B)。(14)有以下定义:inta;longb;doublex,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x(14)BA)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)。(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C)字符斜杠:'\'D)字符串:\007(15)DA)选项中1,200不能表示整数1200。B)选项中应表示为1.5E2。在C语言中,反斜杠是转义符,其后必须跟有其他字符,所以选项C)也是错误的。D)选项正确。(16)表达式a+=a-=a=9的值是A)9B)-9C)18D)0(16)D题干中的表达式可以分解为以下表达式:①a=9;②a=a-a即a=9-9,此时a的值为0;③a=a+a即a=0+0,此时a的值为0。故本题的答案为D)。(17)若变量已正确定义,在if(W)printf(%d\n,k);中,以下不可替代W的是A)ab+cB)ch=getchar()C)a==b+cD)a++(17)A在C语言中,表示不等于不能用,而只能使用!=。其他选项均满足题目的要求。(18)有以下程序#includestdio.hmain(){inta=1,b=0;if(!a)b++;elseif(a==0)if(a)b+=2;elseb+=3;printf(%d\n,b);}程序运行后的输出结果是A)0B)1C)2D)318)A根据在if…else语句中,else总是和最近的if配对的原则,本题中层次关系是:if(!a)与elseif(a==0)是一组,在最外层。而if(a)与else是一组,位于elseif(a==0)条件的内层。据此所有条件均不成立,所以b未进行任何操作仍为初始值0。(19)若有定义语句inta,b;doublex;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0){case0:a++;break;{case0:a++;break;case1:b++;break;case1:b++;break;default:a++;b++;default:a++;b++;}}C)switch((int)x%2)D)switch((int)(x)%2){case0:a++;break;{case0.0:a++;break;case1:b++;break;case1.0:b++;break;default:a++;b++;default:a++;b++;}}(19)Cswitch()中括号内的变量类型应该与下面case语句后的常量保持类型一致。使用(int)x,可以将x强制转换成整型,然后与整型2做取余运算还是整型数据。若与数据2.0做取余运算,按照转换原理:向高精度的数据类型进行转换,结果就变成了实型数据。综上所述,本题C)正确,B)错误。A),D)均不满足switch语句的原则。(20)有以下程序#includestdio.hmain(){inta=l,b=2;while(a6){b+=a;a+=2;b%=10;}printf(%d,%d\n,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(20)B第一次循环后b为3,a为3;第二次循环后b为6,a为5;第三次循环:执行b+=a,所以b为11;执行a+=2所以a为7;执行b%=10,所以b为1。(21)有以下程序#includestdio.hmain(){inty=10;while(y--);printf(y=%d\n,y);}程序执行后的输出结果是A)y=0B)y=-1C)y=lD)while构成无限循环(21)B当y减为1时判断while(y--),此时满足条件,但是y变成0。下次循环判断while(y--)时,因为y为0不满足条件跳出循环,但是此时也要执行y--,所以y变成了-1。打印输出时输出-1。(22)有以下程序#includestdio.hmain(){chars[]=rstuv;printf(%c\n,*s+2);}程序运行后的输出结果是A)tuvB)字符t的ASCII码值C)tD)出错(22)C*s+2相当于(*s)+2即先取出s所指的数据然后对其加2,s是字符串的首地址,所以*s即s[0]就是字符r,所以在它的ASCII码上加上数字2就变成了字母t的ASCII码,所以以%c格式输出,即为选项C)。(23)有以下程序#includestdio.h#includestring.hmain(){charx[]=STRING;x[0]=0;x[1]='\0';x[2]='0';printf(%d%d\n,sizeof(x),strlen(x));}程序运行后的输出结果是A)61B)70C)63D)71(23)Bsizeof是返回字符串在内存中所占用的空间,是真正的长度。strlen是返回字符串的长度,strlen遇到'\0'就结束,而且不包括'\0'。(24)有以下程序#includestdio.hintf(intX);main(){intn=1,m;m=f(f(f(n)));printf(%d\n,m);}intf(intx){returnx*2;}程序运行后的输出结果是A)1B)2C)4D)8(24)D第一次调用的是最内层的f(n),即f(1)返回值2。第二次调用中间的f(f(n)),即f(2)返回值4。最后调用最外层的f(f(f(n))),即f(4)返回值8,最后打印输

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功