国家二级(C语言)机试模拟试卷160
选择题
1.下列叙述中正确的是( )。(D)
A. 一个算法的空间复杂度大,则其时间复杂度也必定大
B. 一个算法的空间复杂度大,则其时间复杂度必定小
C. 一个算法的时间复杂度太,则其空间复杂度必定小
D. 算法的时间复杂度与空间复杂度没有直接关系
解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。
2.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 以上说法都不对
解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。A选项正确。
3.一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(C)
A. 1,2,3,A,B,C
B. C,B,A,1,2,3
C. C,B,A,3,2,1
D. 1,2,3,C,B,A
解析:栈的修改是按“后进先出”的原则进行的,所以顺序应与入栈顺序相反,故C选项正确。
4.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为( )。(B)
A. 219
B. 229
C. 230
D. 231
解析:二叉树中,度为0的结点数等于度为2的结点数加1,即n2=n0-1,叶子结点即为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229。故B选项正确。
5.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为( )。(C)
A. 9
B. 10
C. 45
D. 90
解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故C选项正确。
6.下列各项中,对对象概念描述正确的是( )。(A)
A. 对象间的通信靠消息传递
B. 对象是名字和方法的封装体
C. 任何对象必须有继承性
D. 对象的多态性是指一个对象有多个操作
解析:对象之间进行通信的构造叫作消息,选项A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项B错误。对象不一定必须有继承性,选项C错误。多态性是指同一个操作可以是不同对象的行为,选项D错误。
7.下列各项中,不属于软件设计阶段任务的是( )。(C)
A. 软件总体设计
B. 算法设计
C. 制订软件并确认测试计划
D. 数据库设计
解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。
8.一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的( )。(C)
A. 记录
B. 行
C. 属性
D. 元组
解析:自然连接是一种特殊的等值连接,它满足下面的条件:①两关系间有公共域;②通过公共域的等值进行连接,故C选项正确。
9.下列各项与栈结构有关联的是( )。(C)
A. 数组的定义域使用
B. 操作系统的进程调度
C. 函数的递归调用
D. 选择结构的执行
解析:递归调用的本质就是函数调用函数本身,直到满足特定条件时才停止,然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。
10.有两个关系R和T如下:
(C)
A. 选择
B. 交
C. 投影
D. 并
解析:关系T是由关系R的第3、4行的元组组成的,很显然这是对关系R进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。选择是从表中选出满足给定条件的元组组成新表。故C选项正确。
11.有以下定义:
struct data{
int i;char c;double d;
}x;
以下叙述中错误的是( )。(D)
A. x的内存地址与x.i的内存地址相同
B. struct data是一个类型名
C. 初始化时,可以对x的所有成员同时赋初值
D. 成员i、c和d占用的是同一个存储空间
解析:i、c、d是结构体变量x中的三个不同的成员,占用不同的存储空间。
12.以下函数的功能是计算a的n次方并作为函数值返回:
double fun(double a,int n)
{
int i;double s=1.0;
for(i=1;i<=n;i++)
s=_______;
return s;
}
为实现上述功能,函数中下画线处应填入的是( )。(B)
A. s*i
B. s*a
C. s+i*i
D. s+a*a
解析:s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。
13.有以下程序:
#include<stdio.h>
#include<string.h>
main()
{
char str[]={\\(B)
A. 13.13
B. 13.14
C. 13.15
D. 14.15
解析:stden返回字符串的长度,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个’\0’,所以结果为13+1=14。
14.若有说明:
typedef struct{
int a;char c;
}w;
则以下叙述正确的是( )。(D)
A. 编译后系统为w分配5个字节
B. 编译后系统为w分配6个字节
C. 编译后系统为w分配58个字节
D. 编译后系统不为w分配存储空间
解析:w是一个自定义类型,而不是变量,故编译后系统不为w分配存储空间。当使用w定义变量时才会为其定义的变量分配存储空间。
15.以下叙述中错误的是( )。
D
解析:数组初始化时,若所赋初值多于所定义数组的元素个数时,编译器将会报错。
16.若有以下定义:
struct tt{
char name[10];char sex;
}aa={\\(A)
A. scanf(
本文档预览:3600字符,共12159字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载