国家二级C++机试(选择题)模拟试卷180
选择题
1.下列关于线性链表的叙述中,正确的是( )。(C)
A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C. 进行插入与删除时,不需要移动表中的元素
D. 以上都不正确
解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
2.有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的表达式是( )。(B)
A. *P+9
B. *(P+8)
C. *P+=9
D. P+8
解析:本题考查指向数组的指针,本题中指针变量p指向数组a,那么,*p的值就是1,即表示数组的第一个元素,那么数值为9的表达式就是将指针向后移动8个地址,即p+8指向的是数组元素值为9,所以数值为9的表达式是术(p+8)。
3.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。(C)
A. log2n
B. n/2
C. n
D. n+1
解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。
4.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(D)
A. 冒泡排序为n/2
B. 冒泡排序为n
C. 快速排序为n
D. 快速排序为n(n一1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种交换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。
5.对长度为n的线性表作快速排序,在最坏情况下,比较次数为( )。(D)
A. n
B. n-1
C. n(n-1)
D. n(n-1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。
6.开发大型软件时,产生困难的根本原因是( )。(A)
A. 大型系统的复杂性
B. 人员知识不足
C. 客观世界千变万化
D. 时间紧、任务重
解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。
7.有如下类定义:
class AA{
int a;
Publc:
AA(int n=0):a(n){}
};
class BB:public AA{
public:
BB(int n)
};
其中横线处的缺失部分是( )。
B
解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。
8.—个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联系是( )。(D)
A. 1:1联系
B. 1:m联系
C. m:1联系
D. m:n联系
解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。
9.已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是( )。(A)
A. void print() const;
B. const void print();
C. void const print();
D. void print(const);
解析:const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。
10.若x和y是程序中的两个整型变量,则下列if语句中正确的是( )。(A)
A. if(x==0)y=1; else y=2;
B. if(x==0)then y=1 else y=2;
C. if(x==0)y=1 else y=2;
D. if(x==0)y=1; else y=2;
解析:if else语句的形式为:
if(<条件>)<语句1>else<语句2>
所以符合以上形式的ifelse语句为选项A)。
11.有如下函数模板定义:
template<typename T1,hat a2,int a3>
T1 sum(T1 a1)
{return(a1+a2+a3);}
则以下调用中正确的是( )。(A)
A. sum<int,4,3>(5);
B. sum<4,3>(5);
C. sum<int,int,int>(5);
D. sum(5);
解析:本题考查的函数模板的使用,有时不能根据用户传进来的参数决定所有模板函数的值类型,如函数的返回值,还有用户希望自己指定参数类型,这时就需要显式地指出参数模板的类型,显示指定模板的类型格式为:返回值类型函数模板<参数类型表>(参数表)。
12.下列关于函数模板的描述中,正确的是( )。(D)
A. 函数模板是一个实例函数
B. 使用函数模板定义的函数没有返回类型
C. 函数模板的类型参数与函数的参数相同
D. 通过使用不同的类型参数,可以从函数模板得到不同的实例函数
解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。
13.已知类Myclass的定义如下
class MyClass {
public:
void function1(MyClass&c){cout<<c.data;}
static void function2(MyClass&c){cout<<c.data;}
void function3(){cout<<data;}
staric void function4(){cout<<data;}
private:
int data;
};
其中有编译错误的函数是( )
本文档预览:3600字符,共8464字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载