国家二级(C++)机试模拟试卷278
选择题
1.下列方法中,不属于软件调试方法的是( )。(C)
A. 回溯法
B. 强行排错法
C. 集成测试法
D. 原因排除法
解析:软件调试主要采用以下三种方法:
强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。
回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。
原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。
2.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。(A)
A. ios_base::in
B. ios_base::in | ios_base::out
C. ios_base::out
D. ios_base::in & ios_base::out
解析:本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件输入流打开方式为ios::in。故答案为A。
3.有如下程序:
#include
using namespace std;
class TestClass{
static int i;
public:
TestClass (){i++;}
~TestClass (){i–;}
stmic int getVal(){return i;}
};
int TestClass::i=0;
void fO{TestClass obj2;cout<<obj2.getVal();}
int main(){
TestClass obj1;
f0;
TestClass*obj3=new TestClass;cout<getVal();
delete obj3;cout<<TestClass::getVal();
return 0:
}
程序的输出结果是( )。(B)
A. 232
B. 221
C. 222
D. 231
解析:由于i是类TestClass的静态成员,该成员被类的所有实例共享。当定义objl时,系统自动调用构造函数TestClass(),i的值将加1;调用函数f()时,在定义obj2时系统会自动调用构造函数TestClass(),i的值将再加1:调用obj2.getVal();后,将i的值输出,输出值为2;当调用函数f()即将结束时,系统自动调用析构函数~TestClass(),i的值将减1;当定义obj3时,系统自动调用构造函数TestClass(),i的值将加1,调用coutgetVal();后,将j的值输出,输出值为2;调用delete obj3后将执行TestClass的析构函数~TestClass(),执行后,i的值将减1,TestClass::getVal()为类的一个静态成员函数,其作用是返回私有静态成员变量i的值l。
4.必须用一对大括号括起来的程序段是( )。(D)
A. switch语句中的case标号语句
B. if语句的分支
C. 循环语句的循环体
D. 函数的函数体
解析:本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。
5.在C++中,实现封装性需借助于( )。(B)
A. 枚举
B. 类
C. 数组
D. 函数
解析:此题考查的是C++语言中对象概念的理解。所谓封装性是指将数据和算法捆绑成一个整体,这个整体就是对象。C++语言通过建立用户定义类型“类”来支持封装性和信息隐藏。
6.C++中的模板包括( )。(C)
A. 对象模板和函数模板
B. 对象模板和类模板
C. 函数模板和类模板
D. 变量模板和对象模板
解析:本题考查函数模板和类模板,所以答案为C。
7.在软件开发中,需求分析阶段产生的主要文档是( )。(D )
A. 数据字典
B. 详细设计说明书
C. 数据流图说明书
D. 软件需求规格说明书
解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。
8.下列有关模板的叙述中,正确的是( )。(B)
A. 函数模板不能含有常规形参
B. 函数模板的一个实例就是一个函数定义
C. 类模板的成员函数不能是模板函数
D. 用类模板定义对象时,绝对不能省略模板实参
解析:本题考查函数模板和类模板的基础知识,所以本题答案为B。
9.下面是一个模板声明的开始部分:
tempiatedouble…
由此可知( )。(A)
A. 这可能是一个函数模板的声明
B. 这可能是一个类模板的声明
C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明
D. 这肯定是一个错误的模板声明
解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是一个函数模板的声明。
10.下列关于多态性的描述,错误的是( )。(C)
A. C++语言中的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模板和虚函数实现
D. 实现运行时多态性的机制称为动态绑定
解析:编译时的多态性是通过函数重载和模板体实现的,运行时的多态性是通过虚函数体实现的。
11.有如下类定义和变量定义:
class A{
public:
A(){data=0;}
A(int x){data=x;}
~A(){}
void outData(){cout<<data;}
int getData(int n)const{return data*n;}
private:
int data;
};
A a(5);
const A b(8);
下列函数调用中错误的是( )。(B)
A. a.outData();
B. b.outData();
C. a.getData(10);
D. b.getData(10);
解析:常对象是指对象的所有成员的值都不能被修改,常成员函数是指只能引用本类的数据成员,而不能修改它们的成员函数;常成员函数可以被常对象调用,也可以被普通对象调用,而普通成员函数只能被普通对象调用,不能被常对象调用,题意中对象a是普通对象,b是常对象,outData()是普通成员函数,getData()是常成员函数,所以选项B中通过常对象
本文档预览:3600字符,共21189字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载