2013年高级语言程序设计考研真题答案及解析(二)
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2013年高级语言程序设计考研真题答案及解析,供大家参考!
本文提供2013年高级语言程序设计考研真题答案及解析,以下为具体内容
1、下列数据中,( )是非线性数据结构。
A、栈
B、队列
C、完全二叉树
D、堆
2、下面关于B树和B+树的叙述中,不正确的结论是( )。
A、B树和B+树都能有效地支持顺序查找
B、B树和B+树都能有效地支持随机查找
C、B树和B+树都是平衡的多分树t
D、B树和B+树都可用于文件的索引结构
3、稀疏矩阵一般的压缩存储方式有两种,即( )。
A、二维数组和三维数组
B、三元组和散列
C、三元组和十字链表
D、散列和十字链表
4、设int x=1,y=1;表达式(!x++||y--)的值是( )。
A、0
B、1
C、2
D、-1
5、若变量c为char类型,能争取判断出c为小写字母的表达式是( )。
A、'a'<= c<='z'
B、(c>='a')||(c<='z')
C、('a'<= c)and('z'>=c)
D、(c>='a')&&(c<='z')
6、若有定义语句:int a[2][3], *p[3];则以下语句正确的是( )。
A、p=a;
B、p[0]=a;
C、p[0]=&a[1][2];
D、p[1]=&a;
7、以下对二维数组a进行初始化正确的是( )。
A、int a[1][2]={{1,2},{3,4},{5,6}};
B、int a[][3]={1,2,3,4,5,6};
C、int a[2][]={1,2,3,4,5,6};
D、int a[2][]={{1,2},{3,4}};
8、设有说明double(*p1)[N];其中标识符p1是( )。
A、N个指向double型变量的指针。
B、指向N个double型变量的函数指针。
C、一个指向由N个double型元素组成的一维数组的指针。
D、具有N个指针元素的一维指针数组,每个元素都只能指向double型量。
9、下列程序段的输出结果是_____。void main(){int k;for(k=1; k<5; k++){if(k%2!=0)prinft(“#”);elseprintf(“*”);}}
A、#*#*;
B、*#*#
C、##
D、以上都不对
10、若在一个c语言源程序中“e1”,“e2”和“e3”是表达式,“s;”是语句,则下列选项中与语句“for(e1; e2; e3) s;”功能等同的语句是( )。
A、e1; while(e2) s; e3;
B、e1; while(e2) {s; e3;}
C、e1; while(e2) {e3; s;}
D、while(e2) {e1; s; e3}
1、试题答案:C
试题解析:
线性结构是一个有序数据元素的集合,其特点是数据元素之间存在一对一的线性关系。栈和队列是线性数据结构,堆也可以看作是线性结构,一般存储在数组中。而完全二叉树根结点与子结点存在一对多的关系,一定是非线性结构。故本题选C。
2、试题答案:A
试题解析:
【考点】本题考查B树和B+树的特点。
【解析】B树只能支持随机查找,而B+树是有序的树,既能支持随机查找,又能支持顺序查找,所以选项A说法错误。故本题选A。
3、试题答案:C
试题解析:
稀疏矩阵一般有两种压缩存储方法:
(1)三元组存储方式:将矩阵中非零元素的行、列坐标及元素值一起存储起来,可以节省存储空间,但是在矩阵的访问和操作时需要进行额外的计算。
(2)十字链表存储方式:在三元组存储方式的基础上,为每行和每列各设置一个指针,指向该行或该列中第一个非零元素的位置,这样可以方便地进行矩阵的访问和操作。
故本题选C。
4、试题答案:B
试题解析:
【考点】本题考查运算符。
【解析】进行运算的两个数据,按二进制位进行“或”运算。运算规则:0|0=0;0|1=1;1|0=1;1|1=1;即:参加运算的两个对象只要有一个为1,其值为1。!和++运算同级,结合性是从右向左,那么!x++等价于!( x++)。表达式!x++运行结果为0,x的值为2,表达式y—的运行结果为1,y的值为0。因此,表达式(!x++||y--)相当于(0||1),结果为1。故本题选B。
5、试题答案:D
试题解析:
【考点】本题考查判断一个字符是小写字母的表达式。
【解析】在C语言程序设计中,用符号“&&”表示与,即要满足符号两边的条件。表达式(c>='a')&&(c<='z')的意思就是既要满足条件c>='a',也要满足条件c<='z'。这样写表达式才能正确判断出c为小写字母。故本题选D。
6、试题答案:C
试题解析:
【考点】本题考查二维数组以及指针数组。
【解析】p是一个指针数组,它有四个元素,每个都是一个指向int型的指针。a是一个二维数组,它的每个元素都是int型的。A:因为p是常量(数组名都是指针常量),不可以被赋值。而且p和a的类型也不一致,所以选项A错误。B、C、D都是对p的元素赋值,这是可以的,等号右边应当是一个int型数据的指针(即地址)。C选项中a[1][2]是a的一个int型的元素,&取了它的地址,所以选项C是正确的。故本题选C。
7、试题答案:B
试题解析:
【考点】本题考查二维数组的初始化。
【解析】二维数组必须指定列的数量,行的数量可以不指定,所以选项C和D初始化错误。
选项A:在{ }内部再用{ }把各行分开,第一对{ }中的初值1,2是0行的2个元素的初值。第二对{ }中的初值3,4是1行的2个元素的初值。第三对{ }再赋值就超过数组元素的个数了,所以选项A不正确。
选项B: a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。初始化各元素值为a[0][0]=1,a[0][1]=2,a[0][2]=3,a[1][0]=4,a[1][1]=5,a[1][2]=6。因此,选项B中的初始化正确。故本题选B。
8、试题答案:C
试题解析:
【考点】本题考查数组指针。
【解析】p1是一个指针,此指针指向一个数组,此数组具有N个元素,并且每个元素都是double类型的,所以p1是一个指向具有N个double类型元素的数组的指针。故本题选C。
9、试题答案:A
试题解析:
【考点】本题考查程序分析。
【解析】当k=1时,k%2!=0,输出“#”;当k=2时,k%2=0,输出“*”;当k=3时,k%2!=0,输出“#”;当k=4时,k%2=0,输出“*”;当k=5时,for循环结束。因此,整个程序的输出结果为“#*#*”。
10、试题答案:B
试题解析:
【考点】本题考查for循环语句与while循环语句。
【解析】for语句中第1个表达式是初始化用的,第2个是循环条件,第3个是循环体执行完成后调用的。因此,先e1,再循环while(e2),其中e2为循环条件,循环体是{s; e3;}。故本题选B。