第六套模拟试题参考答案及解析1.一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
本题答案是D。
2.栈是限定在一端进行插入与删除的线性表。
栈是按照"先进后出"的或后进先出的原则组织数据的,因此,栈也被称为"先进后出"表或"后进先出"表。
本题答案是D。
3.所谓满二叉树是指这样的一种二叉树:除最后一层外,每层上的所有结点都有两个子结点。
这就是说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2K-1个结点,且深度为m的满二叉树有2m个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,本题中深度为5,故叶子结点数为25-1=24=16。
本题答案是C。
4.要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
本题答案为A。
5.对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。
对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
本题答案为A。
6.软件工程包括3个要素,即方法、工具和过程。
本题答案为D。
7.程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
本题答案为B。
8.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是数据库系统。
本题答案为A。
9.层次模型是最早发展出来的数据库模型。
它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、层次分明。
本题答案为B。
10.关系数据库管理系统能实现的专门关系运算,包括选择运算、投影运算、连接运算。
本题答案为B。
11.本题的考查点是赋值语句。
选项A和B中,"7+b+c"和"7+b++"中是表达式,而赋值语句中赋值号的左边应为变量,所以不正确;选项C中由于没有";",所以不是语句,因为语句必需以分号结束。
故本题答案为D。
12.本题的考查点是函数的调用。
"a+=x"表达式和"a=a+x"是等效的,所以在程序中,fun3(k)的值为5,即为n的值,所以打印时结果应当等于5。
故本题答案为C。
13.本题的考查点是if判断语句。
"%"是求模运算符,所以if判断语句中实际是指出只有当y可以被3整除时方可以执行循环体;--y是先进行y的自减运算,再使用y值。
所以,最后的打印结果应当为"852"。
故本题答案为B。
14.本题的考查点是枚举类型。
枚举的语法规定,当枚举元素没有赋值时,如果其前面没有其它枚举元素,其值为0,如果其前面有其它枚举元素,其值为其前一个元素的值加一,所以his的值为5,her的值为15。
故本题答案为C。
15.本题的考查点是逻辑与及自增、自减运算。
a++是先使用a值再将a的值加1,b--是先使用b的值再将b的值减1,所以题中的逻辑运算表达式的值应当为真,即为1,而经过运算后,a和b的值已经分别变成0和3了。
故本题答案为C。
16.本题的考查点是除法运算。
在C语言中,参与运算的两个数如果是整型数,则/运算为整除运算。
故x/y的结果约为3。
故本题答案为C。
17.本题的考查点是指针变量作为函数参数。
观察程序,可以发现,函数prtv()的作用是将地址等于x的内存单元中值加1,因为我们在主函数中是将变量a的地址作为实参传递给了prtv()函数,所以,函数prtv()将地址等于变量a的地址的那个内存单元中的值加1,打印结果自然就是25+1=26了。
故本题答案为D。
18.本题的考查点是根据程序写出数学函数关系。
题中的两个判断语句实际上指出了y取值的条件,即是当x大于零时y取1;当x小于零时y取0;当x等于零时y值不变,为-1。
故本题答案为C。
19.本题的考查点是运算符在表达式中的处理原则。
在x=y+z这个表达式中,应当先计算出y+z的值,然后再将这个值和x的值进行比较,根据比较结果打印输出,不能认为是将y值赋给x后再与z相加。
由于3不等于0,if条件不成立,所以输出####。
故本题的答案为D。
20.本题的考查点是do-while语句。
在第一次循环时,先计算表达式x-=2,所以输出1,--x为0,判断表达式的值为非零,返回重新执行该语句;在第二次循环时,表达式x-=2,即-2,所以输出-2,--x为-3,判断表达式的值为零,循环结束。
故本题答案为B。
21.本题的考查点是函数scanf()的格式输入。
根据函数scanf()的语法可知,在函数中的参数表列部分,应当是欲赋值变量的内存地址,像第六行这样,将数组元素直接放在参数表列中是无法达到给数组元素赋值的目的。
故本题答案为C。
22.本题的考查点是while()循环语句。
这个函数的功能是求字符串的长度,需要注意的是,在返回长度时一定记住要减一,否则计算出的串长度将会多一。
故本题答案是A。
23.本题的考查点是格式输出函数printf的格式字符。
由于字符"5"和"3"的ASCII码相差为2,所以ch1经过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符"D"。
故本题答案为A。
24.本题的考查点是sqrt()函数的应用。
函数sqrt(x)是一个标准的数学函数,用于求x的二次方根,知道这一点以后就好做了,将各变量的值带入程序求解即可,另外,程序中的(double)是强制类型转换,将原来为float 型的y强制转换成double型变量。
故本题答案为C。
25.本题的考查点是运算符的应用。
第一个表达式中,运算的方向是从左至右,所以a的值为2;第二个表达式中,等式右边是一个逻辑表达式,由于结果为真,所以表达式的值为1,即b为1。
故本题答案为B。
26.本题的考查点是格式控制字符的应用。
printf()函数:当"格式控制"字符串中连续使用两个"%"符号时,表示要输出字符"%",所以,a,c两个变量的值并不带入输出字符串,最后的打印结果应当是 a=%d,b=%d。
故本题答案为D。
27.本题的考查点是对'NULL'的理解。
NULL在C编译器中是一个值为0的常量,它的定义在头文件"stdio.h"中,本题的程序在一开始就包含了这个头文件,所以,在打印的时候,将打印出0。
故本题答案为B。
28.本题的考查点是变量的自增、自减运算。
++i是先对i进行加1运算,再使用i的值;j--是先使用j值,再对j进行减1运算。
所以,程序的打印结果应当为"11,10"。
故本题答案为A。
29.本题的考查点是函数的调用。
将k和m的值带入函数func中,第一次调用完func()后,其中m和i的值要保留,并在第二次调用时使用,这是因为两者都是局部静态变量,最后的结果是8和17。
故本题答案为A。
30.本题的考查点是指向指针的指针。
指针数组*alpha[6]实际上相当于一个二维数组,而p是一个指向指针的指针,p=alpha 后,引用p[x]便是引用数组*alpha[6]中的第x个数组元素的首地址,所以打印的结果应当为ABCDEFGHIJKLMNOP。
故本题答案为C。
31.本题的考查点是求数组中最大值的下标。
k是一个指针,它的值是一个地址,要通过它为主函数的变量改变数据,必须使用*p,这样就可以把一个下标数赋给p指针指向的那个内存单元,所以横线处应填入 *k=p。
故本题答案为D。
32.本题的考查点是for语句循环条件的判断。
循环条件是表达式(y!=123)&&(x<4),因为y值始终为0,所以表达式左边一定恒为1,当x<4时,循环可以运行,当x=4时,循环终止,所以这个循环一共可以执行4次。
故本题答案为C。
33.本题的考查点是对实参的理解。
实参可以是常量、变量或表达式,(exp1,exp2)是逗号表达式,它的值是exp2的值;(exp3,exp4,exp5)是逗号表达式,它的值是exp5的值。
所以该函数调用语句含有的实参个数是2,即:(exp1,exp2)和(exp3,exp4,exp5)。
故本题答案为B。
34.本题的考查点是运算符。
题目的四个选项中,(B)(C)(D)都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。
故本题答案为A。
35.本题的考查点是指针变量的引用。
p的地址本身和i的地址一样,所以*p代表i中的数值,而&j是j的地址,*&j就是j 中的数值,所以,*p=*&j和i=j是等价的。
故本题答案为B。
36.本题的考查点是通过指针引用数组元素。
选项A,*p+6,其值等于1+6=7;选项B,*(p+6),其值等于a[6]=7;选项C,*p+=5,其值等于*p=*p+5=1+5=6;选项D,p+5是个地址值。
故本题答案为C。
37.本题的考查点是格式字符。
在C语言格式字符的输出中,"%d"是以带符号的十进制形式输出整数,即k=11;"%o"是以8进制无符号形式输出整数(不输出前导符0),即k=13;"%x"是以16进制无符号形式输出整数(不输出前导符0x),即k=b。
故本题答案为D。
38.本题的考查点是函数的反复调用。
在子函数fun()中,第一次执行使得a数组的3个元素的值都翻倍后减一,即为1,3,5;此时h的值为1,a[h]即a[1]的值3,返回作为fun()第二次执行的实参,函数第二次的执行使得各个数组元素的值分别变为-1,3,7。
故本题答案为D。
39.本题的考查点是字符串的应用。
观察子函数fun()可知,它是实现一个数组首末元素位置互相依次交换。
联系主函数,可以看出,是对字符串中的元素依次进行首末位置的对调。
故本题答案为A。
40.本题的考查点是二维数组的运算。
观察程序段可知,第一个for循环语句是给数组中的各元素赋值,第二个for循环语句是给数组中的元素进行重新赋值,得到数组中的最大元素值为6。
故本题答案为C。
41.本题的考查点是共用体类型数据的特点。
根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同一段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。