二级C++笔试333
(总分98, 做题时间90分钟)
一、选择题
1. 
在C++中用来实现运行时多态性的是(    )。
A 重载函数
B 析构函数
C 构造函数
D 虚函数
    分值: 2
答案:D
[解析] C++中的多态性分为两类:编译时的多态性和运行时的多态性。编译时的多态性通过函数重载和模板体现的,而运行时的多态性是通过虚函数体现的。
2. 
下面程序输出的结果是(    )。    #include<iostream>    using namespace std;    int fuc (char *x);    int main(){        cout<<fuc("hello")<<endl;        return 0;    }    int fuc(char *x){        char *y=x;        while(*y! ='\0')y++;        return(y-x);    }
A 5
B 6
C 0
D 语法错误,不能输出结果
    分值: 2
答案:A
[解析] 函数fuc()的功能是计算字符串x的长度,因此程序的输出是5。
3. 
在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(    )。
A 公有成员和保护成员
B 公有成员和私有成员
C 私有成员和保护成员
D 公有成员、私有成员和保护成员
    分值: 2
答案:A
[解析] 无论在什么派生情况下,派生类总是能够访问到基类公有和保护成员,而无法访问到基类的私有成员。
4. 
下面程序的输出结果是(    )。    #include<iostream>    using namespace std;    int main()    {        int a=2,b= -1,c=2;        if(a<b)            if(b<0)                c=0;        else c+=1;        cout<<c<<endl;        return 0;    }
A 0
B 1
C 2
D 3
    分值: 2
答案:C
[解析] 本题考查订语句中if与else的搭配问题。C++程序在编译时并不看缩进格式,而只是关心语法结构。根据规定:else关键字总是与它前面最近的未配对的且可见的那个if关键字配对。因此上述程序中的else应该与第2个订关键字配对,所以程序最后c的值并没有改变。
5. 
下面选项中,不属于C++语句的是(    )。
A {;}
B cout<<"Hello!"<<endl
C ;
D {int i=1;int f=i;cout<<f<<endl;}
    分值: 2
答案:B
[解析] 选项A和选项D是复合语句,C是空语句,而选项B中没有以“;”结尾,这不是 C++语句。
6. 
在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(    )。
A fail
B eof
C bad
D good
字符串常量的特殊字符串是什么    分值: 2
答案:B
[解析] 在本题的4个选项中,只有eof函数能用于检测输入操作。
7. 
设有两个串p和q,求q在p中首次出现位置的运算称作(    )。
A 连接
B 模式匹配
C 求子串
D 求串长
    分值: 2
答案:B
[解析] 设有两个串p和q,求q在p中首次出现位置的运算称为模式匹配。
8. 
下列叙述中正确的是(    )。
A 一个算法的空间复杂度大,则其时间复杂度也必定大
B 一个算法的空间复杂度大,则其时间复杂度必定小
C 一个算法的时间复杂度大,则其空间复杂度必定小
D 上述三种说法都不对
    分值: 2
答案:D
[解析] 算法的时间复杂度和空间复杂度之间没有必然联系。
9. 
下列关于抽象类和纯虚函数的说法错误的是(    )。
A 抽象类只能作为基类使用,而纯虚函数的实现由派生类给出
B 抽象类是指具有纯虚函数的类
C 纯虚函数是一种特殊的虚函数,它允许没有具体的实现
D 一个基类的说明中有纯虚函数,则该基类的派生类一定不再是抽象类
    分值: 2
答案:D
[解析] 一个抽象类的派生类在重新定义一个纯虚函数时,可以继续将之声明为纯虚函数,此时该派生类仍然为抽象类。
10. 
C++中,对于结构中定义的成员,其默认的访问权限为(    )。
A protected
B public
C static
D private
    分值: 2
答案:B
[解析] C++中,结构与类的不同之处在于结构中的成员默认是公有的,结构的继承默认也是公有的;而类的继承默认是私有的,类的成员默认也是私有的。
11. 
cout是I/O流库预定义的(    )。
A 常量
B 类
C 对象
D 成员函数
    分值: 2
答案:C
[解析] C++中包含了4个预定义的流对象:cout、cin、cerr、clog。
12. 
在任意一棵二叉树中,度为0的结点总是比度为2的结点多(    )。
A 1个
B 2个
C 3个
D 4个
    分值: 2
答案:A
[解析] 根据二叉树的性质,叶子节点总是比度为2的节点多一个。
13. 
C++语言中while循环和do…while循环的主要区别是(    )。
A do…while的循环体至少五条件执行一次
B while的循环控制条件比do…while的循环控制条件严格
C do…while允许从外部转到循环体内
D do…while的循环体不能是复合语句
    分值: 2
答案:A
[解析] do…while语句与while语句不同的是,do…while循环中的语句至少会执行一次,而 while语句中当条件在第一次循环就不满足时,语句一次也不会执行。
14. 
以下数据结构中不属于线性结构的是(    )。
A 队列
B 线性表
C 二叉树
D 栈
    分值: 2
答案:C
[解析] 线性表、栈和队列所表达和处理的数据都以线性结构为组织形式。
15. 
下列叙述中正确的是(    )。
A 软件工程只是解决软件项目的管理问题
B 软件工程主要解决软件产品的生产率问题
C 软件工程的主要思想是强调在软件开发过程牛需要应用工程化原则
D 软件工程只是解决软件开发中的技术问题
    分值: 2
答案:C
[解析] 软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过实践考验而证明正确的管理技术和当前能够得到的最好技术结合起来。
16. 
设一棵完全二叉树共有699个节点,则在该二叉树中的叶子节点数为(    )。
A 349
B 350
C 255
D 351
    分值: 2
答案:B
[解析] 所谓完全二叉树是指除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=699,故父结点数等于int(699/2)=349,叶子结点数等于 699-349=350。
17. 
若有一个MyClas类,则执行语句MyClas a,b(2),*p;后,自动调用该类的构造函数 (    )次。
A 2
B 3
C 4
D 不确定
    分值: 2
答案:A
[解析] C++在创建一个对象时,会自动调用类的构造函数,在构造函数中可以执行初始化成员变量的操作。题目中语句创建了两个对象a、b和一个对象指针。在创建a和b时,系统会调用类的构造函数。而在创建指针p时,不调用类的构造函数,因为指针p本身不定义类对象,而是定义一个可以指向MyClas对象的指针。
18. 
希尔排序法属于(    )。
A 交换类排序法
B 插入类排序法
C 选择类排序法
D 建堆排序法
    分值: 2
答案:B
[解析] 希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。所以希尔排序法属于插入类排序。
19. 
已知:int n=10;  在下列定义引用的语句中,正确的是(    )。
A int &x=n;
B int x=&n;
C int &x;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。