全国计算机等级考试二级C++笔试真题
在各个领域,我们最熟悉的就是试题了,试题是参考者回顾所学知识和技能的重要参考资料。什么样的试题才是好试题呢?以下是小编收集整理的全国计算机等级考试二级C++笔试真题,供大家参考借鉴,希望可以帮助到有需要的朋友。
一、单选题(每题2分,共20分)
1. 在C++中,用于输入单个字符的流对象是( )
A. cin
B. cout
C. cerr
D. clog
答案:A。cin用于标准输入,可输入各种数据类型,包括单个字符。
2. 下面关于C++函数默认参数的描述中,正确的是( )
A. 函数默认参数只能有一个
B. 函数默认参数必须在函数定义时设置
C. 函数默认参数可以在函数声明时设置
D. 函数默认参数的值必须是常量表达式
答案:C。函数默认参数可以在函数声明时设置,也可以在函数定义时设置(如果在声明和定义都设置,定义处不能再次指定默认值),默认参数可以有多个,其值可以是常量表达式或者具有默认构造函数的类型。
3. 若有定义:int a = 10; 则下列表达式的值为4的是( )
A. a / 3
B. a % 3
C. a >> 1
D. a << 2
答案:C。a = 10,10的二进制表示为1010,右移1位(a >> 1)后变为0101,十进制为5;左移2位(a << 2)后变为101000,十进制为40;10除以3等于3余1(a / 3 = 3,a % 3 = 1)。
4. 以下哪种数据类型不能用于定义数组的下标( )
A. int
B. char
C. float
D. enum类型
答案:C。数组下标必须是整数类型或者可以转换为整数类型的表达式,float类型不能直接用作数组下标。
5. 在C++类中,静态成员函数( )
A. 可以访问类的非静态成员
B. 不能访问类的静态成员
C. 只能通过类名来调用
D. 可以通过类的对象来调用
答案:D。静态成员函数可以通过类的对象来调用,也可以通过类名调用,它不能访问类的非静态成员,但可以访问类的静态成员。
6. 若有以下函数模板定义:
template
T Max(T a, T b) {
return (a > b)? a : b;
}
当调用`Max(3.5, 2)`时,会发生( )
A. 编译错误,因为模板参数类型不匹配
B. 编译成功,自动将2转换为double类型
C. 运行时错误
D. 以上都不对
答案:B。在函数模板调用时,会根据实参类型自动推导模板参数类型,这里会将2转换为double类型以匹配3.5的类型。
7. 在C++中,打开一个文件并将文件指针定位到文件末尾的模式是( )
A. ios::in
B. ios::out
C. ios::ate
D. ios::app
答案:C。ios::ate模式打开文件并将文件指针定位到文件末尾;ios::in用于读文件;ios::out用于写文件;ios::app用于追加写文件。
8. 以下关于C++中的引用说法正确的是( )
A. 引用必须在定义时初始化
B. 引用可以重新赋值,指向不同的对象
C. 引用是变量的别名,占用独立的内存空间
D. 引用不能作为函数的返回值
答案:A。引用必须在定义时初始化,引用一旦初始化就不能再指向其他对象,引用不占用独立的内存空间(和被引用对象共享内存),引用可以作为函数的返回值。
9. 若有类定义如下:
class A {
private:
int num;
public:
A(int n = 0) : num(n) {}
int getNum() const { return num; }
};
则以下对类A对象的操作中,合法的是( )
A.
A a;
a.num = 10;
B.
A a(5);
cout << a.getNum() << endl;
C.
A *p = new A;
*p.num = 20;
D.
A a;
const A &ra = a;
ra.num = 30;
答案:B。A选项中num是私有成员,不能在类外直接访问;C选项中应该是(*p).num或者p->num;D选项中ra是常量引用,不能修改其成员。
10. 下面关于C++中构造函数的描述,错误的是( )
A. 构造函数可以重载
B. 构造函数可以有默认参数
C. 构造函数可以是虚函数
D. 构造函数名与类名相同
答案:C。构造函数不能是虚函数,虚函数是为了实现多态性,而构造函数是在对象创建时调用的特殊函数,不适合作为虚函数。
二、多选题(每题3分,共15分)
1. 以下哪些属于C++中的基本数据类型( )
A. int
B. string
C. char
D. float
E. bool
答案:ACDE。int(整数类型)、char(字符类型)、float(单精度浮点类型)、bool(布尔类型)是基本数据类型,而string是C++标准库中的类类型,不属于基本数据类型。
2. 在C++中,关于动态内存分配的说法正确的是( )
A. 使用new关键字可以动态分配内存
B. 使用关键字释放动态分配的单个对象的内存
C. 使用 []关键字释放动态分配的数组内存
D. 动态分配的内存位于栈区
E. 动态分配内存失败时会抛出异常
答案:ABCE。动态分配的内存位于堆区,而不是栈区;new用于动态分配内存,用于释放单个对象的动态内存, []用于释放数组的动态内存,在C++中动态分配内存失败时(例如没有足够的内存)会抛出异常。
3. 以下关于C++类的继承的描述中,正确的是( )
A. 继承可以实现代码的复用
B. 可以实现多继承,即一个类可以继承多个类
C. 派生类可以访问基类的私有成员
D. 基类的构造函数不会被派生类继承
E. 继承关系是一种“is - a”关系
答案:ABDE。继承可以实现代码复用,C++支持多继承,基类的构造函数不会被派生类继承,继承关系表示派生类“is - a”基类,派生类不能直接访问基类的私有成员。
4. 在C++中,函数重载的判断依据包括( )
A. 函数名
B. 函数的返回值类型
C. 函数的参数个数
D. 函数的参数类型
E. 函数的调用方式
答案:ACD。函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数个数或者不同参数类型的函数,函数的返回值类型和调用方式不是函数重载的判断依据。
5. 对于C++中的流操作,以下哪些说法是正确的( )
A. cin和cout是预定义的流对象
B. 可以通过流操作符“<<”和“>>”进行输入输出操作
C. 可以对流对象进行格式化输出设置
D. 流操作只能用于标准输入输出设备
E. 可以自定义流类
答案:ABCE。cin是标准输入流对象,cout是标准输出流对象,可以使用“<<”(输出)和“>>”(输入)流操作符进行输入输出操作,并且可以通过一些函数对流对象进行格式化输出设置,还可以自定义流类,流操作不仅可以用于标准输入输出设备,也可以用于文件等其他设备。
三、判断题(每题1分,共5分)
1. 在C++中,所有的函数都可以被其他函数调用。( )
答案:错误。例如私有成员函数只能在类的内部被调用,不能被类外的函数直接调用。
2. 数组名在作为函数参数传递时,会退化为指针。( )
答案:正确。在C++中,数组名作为函数参数传递时,会失去其数组的特性,退化为指向数组首元素的指针。
3. C++中的友元函数破坏了类的封装性。( )
答案:正确。友元函数可以访问类的私有成员,这在一定程度上破坏了类的封装性。
4. 一个类的静态数据成员只有一份,被所有该类的对象共享。( )
答案:正确。静态数据成员属于类,而不是属于某个对象,所有该类的对象共享这一静态数据成员。
5. 在C++中,模板实例化是在编译时完成的。( )
答案:正确。模板实例化是在编译阶段根据模板参数生成具体的函数或类的过程。
【全国计算机等级考试二级C++笔试真题】相关文章:
2007年3月全国计算机等级考试二级C++笔试真题03-28
计算机等级考试二级C++笔试选择题04-23
全国计算机二级考试C++真题09-20
2006年9月全国计算机等级考试二级access笔试真题03-29
全国英语等级考试二级真题及答案09-20
3月全国计算机等级考试二级VFP考试真题09-26