- 2022-04-09 发布 |
- 37.5 KB |
- 4页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
二级C考前冲刺卷2-答案
考前冲刺卷(2)二级C语言参考答案及解析一、选择题(1)D)【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。(2)C)【解析】大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。(3)D)【解析】队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。(4)B)【解析】遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树。②中序,按中序遍历左子树→访问根→按中序遍历右子树。③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为ABDGEHCF。(5)A)【解析】快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。(6)A)【解析】数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。(7)B)【解析】数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。(8)D)【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。(9)A)【解析】外模式也称子模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,它是由概念模式推导出来的,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个概念模式可以有若干个外模式。(10)B)【解析】T就是关系R中插入关系S,合并为T,即并运算(∪)。(11)D)【解析】每个C程序有且只有一个主函数(main),且程序必须从main()函数开始执行,别外main()函数可以放在程序中的任意位置。(12)D)【解析】以数字“0”开头的是八进制整型常量,以“0x”或“0X”开头的是十六进制整型常量。“%d”代表用十进制整型格式输出。题中的“010”、“0x10”转换成十进制数后分别是8和16。(13)A)【解析】逻辑与(&&)运算符的功能是:当“&&”运算符两边的运算对象均为1时,整个表达式的值为1,否则为0。因为a=320,循环结束。(21)A)【解析】C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C)、选项D)正确;在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。(22)A)【解析】此题考查的是编译预处理命令以及自加运算符。F(a++,b++)先取a和b的值,参加运算,再把a和b的值分别加1,所以F(a++,b++)=F(3,4)=3*4=12。(23)D)【解析】本题考查while表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。(24)B)【解析】本题考查switch语句。因为a=6,所以a%2=0,因此第一个switch语句,执行case0,将m加1,遇到break语句跳出switch语句,输出m值为2。(25)D)【解析】C语言规定,字符常量在程序中要用单引号括起来。首先判断c1是否为小写字母的主要条件c1>='a'和c1<='z'是逻辑与关系,其次选项A)的这种形式C语言中没有,所以选项D)正确。(26)B)【解析】本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回车或者空格。因此选项B)不能,选项C)和选项D)中按字符逐个读入字符串s中,直到读入的字符是换行符为止,因此正确。(27)D)【解析】本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。(28)D)【解析】本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。(29)B)【解析】本题主要考查的是函数的递归调用,子函数f是一个递归函数,所以主函数中执行f(a,2)时,其执行过程是a[3]+f(a,1)=a[3]+a[2]+f(a,0)=7。(30)D)【解析】本题考查如何对二维数组的元素赋值。选项A),数组第二维的大小是4,但是却赋值了5个元素,数组溢出;选项B),C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;选项C),数组第一维的大小是2,但是赋值超过了2;选项D),在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。(31)A)【解析】本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名[常量表达式]。其中,“[]”中的内容可以是整型常量,也可以是整型表达式。选项A)中的N是一个变量,所以错误。(32)B)【解析】*s-*t的输出实际是比较两个字符的ASCII码值,比较两个字符串的大小。n(33)A)【解析】fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。(34)D)【解析】二维字符数组在定义时可省略第一维的维数,根据初始化有3个字符串,所以选项D)中数组有3行,与已知说明语句等价。(35)A)【解析】C语言作为计算机高级语言,用它编写的程序必须经过C语言的编译器编译后,转换为二进制的机器来运行。(36)A)【解析】本题主要考查结构体的用法:①结构体变量a与结构体成员a同名,定义合法;②在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;③inta占2个字节,intb[2]占4个字节,共6个;④类型名structst不可以通过extern关键字提前引用。(37)B)【解析】本题考查的是联合体的有关概念。因为联合体是各个成员共享一段存储空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出s.age实际上输出了最后存入的3000,因为3000已经把原来存入的s.age(32)的值覆盖。(38)D)【解析】本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。(39)B)【解析】i=2时,fun(&a[2])返回值是b=b+a[1]=3+3=6,b=b+b=6+6=12;i=3时,fun(&a[3])返回值是b=b+a[3]=12+4=16,b=b+b=16+16=32。(40)C)【解析】数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。二、填空题(1)实体集【解析】在E-R图中用矩形表示实体集,在矩形内写上该实体集的名字。用椭圆形表示属性,在椭圆形内写上该属性的名称。用菱形表示联系,菱形内写上联系名。(2)选择结构【解析】程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。(3)层次模型【解析】层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。(4)白盒【解析】按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次;保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。(5)数据字典【解析】数据字典的作用是对数据流图中出现的被命名的图形元素进行确切解释。通常数据字典包含的信息有名称、别名、何处使用/如何使用、内容描述、补充信息等。(6)2【解析】考查基本表达式的计算,“%”运算符的功能是取余。题中条件s=8,则s%3=2,(s+1)%3=9%3=0,所以表达式s%3+(s+1)%3=2+0=2。(7)0【解析】对表达式从右向左进行计算x*=y得x=2,则y+=y-=2,右边即y-=2得y=0,则y+=0得y=0。n(8)x=2【解析】switch语句的调用形式为:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2case常量表达式3:语句3…case常量表达式n:语句ndefault:语句n+1}分析程序,首先计算表达式的值,然后依次与常量表达式i比较,若表达式的值与常量表达式j相等,则从常量表达式j处开始执行,直到switch语句结束。若所有的常量表达式的值均不等于表达式的值,则从default处开始执行;x=2则执行case2,输出结果为x=2。(9)C)【解析】数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。(10)A)【解析】数据模型描述的内容包含数据结构、数据操作和数据约束。(11)a【解析】本程序先将指针ptrl和ptr2分别指向字符数组a和b,然后通过指针的移动比较a和b中是否有相同的字符,若有相同的字符则将其输出。(12)s[i]!=' '【解析】本题是要删除字符数组中和c一样的字符,for循环实现的功能是逐个读出字符数组s中的元素,并和字符c做比较,直到遇到字符串结束标志' ',结束循环,所以横线上应该填s[i]!=' '。(13)a[i][j]+b[i][j]【解析】求两个矩阵的和只要将对应元素相加即可。(14)JD【解析】第一次循环,i=3,*p[3]="JKL",但因为是以“%c”格式输出,只能输出一个字符,所以只能输出J。第二次循环,i=1,*p[1]="DEF",同样也只能输出D。(10)12,1【解析】此程序中函数fun的实参和形参进行的是地址值的传递,因此被调用函数中形参值的改变会改变实参值。所以c=3*4=12,d=4/3=1。查看更多