国家二级C语言机试(选择题)模拟试卷374
选择题
1.某二叉树的中序遍历序列为CBADE,后序遍历序列为CBEDA,则前序遍历序列为( )。(C)
A. CBADE
B. CBEDA
C. ABCDE
D. EDCBA
解析:二叉树的后序遍历序列为CBEDA,由于后序遍历最后访问根节点,可以确定该二叉树的根节点是A。再由中序遍历序列为CBADE,可以得到子序列(CB)一定在左子树中,子序列(DE)一定在右子树中。节点C、B在中序序列和后序序列中顺序未变,说明节点B是节点C的父节点;节点D、E在中序序列和后序序列中顺序相反,说明节点D是节点E的父节点。因此该二叉树的前序遍历序列为ABCDE。
2.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
3.下列属于黑盒测试方法的是( )。(C)
A. 语句覆盖
B. 逻辑覆盖
C. 边界值分析
D. 路径覆盖
解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C选项。而A、B、D选项均为白盒测试方法。
4.以下选项中正确的定义语句是(D)
A. double a=b=7;
B. double a;b;
C. double,a,b;
D. double a=7,b=7;
解析:在C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。
5.设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数是(A)
A. 0
B. 1
C. 188
D. 不可能有这样的二叉树
解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。本题中,度为2的结点有187个,叶子结点应该有187+1=188个,度为1的结点个数=375-187-188=0。
6.若有定义:
double a=22;
int i=0,k=18;
则不符合C语言规定的赋值语句是(C)
A. i=(a+k)<=(i+k);
B. a=a++,i++;
C. i=a%11;
D. i=!a;
解析:在C语言中,求余运算符的运算对象只能是整型,在题目中,变量a是一个双精型实型变量。
7.下列叙述中正确的是(C)
A. 循环队列是队列的链式存储结构
B. 能采用顺序存储的必定是线性结构
C. 所有的线性结构都可以采用顺序存储结构
D. 具有两个以上指针的链表必定是非线性结构
解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。所有的线性结构都可以采用顺序存储结构。
8.设有定义: int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是(A)
A. k++
B. k+=1
C. ++k
D. k+1
解析:因为题中有语句“int k=0;”,所以选项B,C、D都是对k的值加1,选项A的语句k++表示先利用k的值进行运算,然后k值才加1。
9.层次型、网状型和关系型数据库划分原则是( )。(D)
A. 记录长度
B. 文件的大小
C. 联系的复杂程度
D. 数据之间的联系方式
解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
10.已知“int a=6;”则执行“a+=a-=a*a;”语句后,a的值为( )。(D)
A. 36
B. 0
C. -24
D. -60
解析:此题考查的是赋值表达式。执行语句“a+=a-=a*a;”时,首先执行“a=a-a*a=-30”,然后执行“a=a+a=一60”。
11.有三个关系R、S和T如下:
(D)
A. 选择
B. 投影
C. 交
D. 并
解析:由关系T中的数据可以看出,其数据由关系R和S的数据组成。所以关系T是由关系R和T通过并运算得到的。
12.设有宏定义:#define IsDIV(k,n)((k%n==1)?1:0),且变量m已正确定义并赋值,则宏调用:Is DIV(m,5)&&IsDIV(m,7)为真时所要表达的是( )。(B)
A. 判断m是否能被5和7整除
B. 判断m被5和7整除是否都余1
C. 判断m被5或者7整除是否余1
D. 判断m是否能被5或者7整除
解析:本题考查逻辑运算符的相关概念。逻辑与若要为真,那么两边都要为真,所以需要m能被5和7整除都余1,所以选项B正确。
13.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( )。(A)
A. 1
B. 0
C. 2
D. 不知道a的值,不能确定
解析:逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零。
14.有以下程序:
#include
#define N 4
void fun(int a[][N],int b[]){
int i;
for(i=0;i<N;i++)b[i]=a[i][i];
}
main()
{
int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},Y[N],i;
fun(X,y);
for(i=0;i<N;i++)
prinff(“%d,”,Y[i]);
prinff(“\n”);
}
程序的运行结果是( )。(A)
A. 1,0,7,0,
B. 1,2,3,4,
C. 1,4,5,9,
D. 3,4,8
本文档预览:3600字符,共11588字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载