国家二级C++机试(选择题)模拟试卷192
选择题
1.支持子程序调用的数据结构是( )。(A)
A. 栈
B. 树
C. 队列
D. 二叉树
解析:栈是一种限定在一端进行插入与删除的线性表。在土函数调用予函数时,要首先保存主函数当前的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数时的位置,主函数再接着往下执行,这种过程符合栈的特点。所以一般采用栈式存储方式。
2.下列关于this指针的描述中,正确的是( )。(D)
A. 类的成员函数都有this指针
B. 类的友元函数都有this指针
C. 任何与类相关的函数都有this指针
D. 类的非静态成员函数都有this指针
解析:mis作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。
3.模板对类型的参数化提供了很好的支持,因此( )。(B)
A. 类模板的主要作用是生成抽象类
B. 类模板实例化时,编译器将根据给出的模板实参生成一个类
C. 在类模板中的数据成员都具有同样类型
D. 类模板中的成员函数都没有返回值
解析:本题考查类模板的基本概念。类模板的定义和声明都以关键字template开头。关键字后面是一个用逗号分隔的模板参数表,用尖括号“”括起来,这个表被称为类模板的模板参数表。类模板是类的抽象,类是类模板的实例。类模板使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。所以B选项正确。
4.下列重载函数中,正确的是( )。(B)
A. void fun(int a,float b);void fun(int C,float d)
B. void fun(int a,float b);void fun(float a,int b)
C. float fun(int a,float b);int fun(int b,float a)
D. int fun(int a,int b);float fun(int a,int b)
解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。
5.下列关于软件工程的描述中正确的是( )。(C)
A. 软件工程只是解决软件项目的管理问题
B. 软件工程主要解决软件产品的生产率问题
C. 软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D. 软件工程只是解决软件开发中的技术问题
解析:软件工程是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程主要思想是强调在软件开发过程中需要应用工程化原则。
6.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用柜形表示加工步骤,用菱形表示逻辑条件。
7.下列关于this指针的描述中,正确的是( )。(D)
A. 类的成员函数都有this指针
B. 类的友元函数都有this指针
C. 任何与类相关的函数都有this指针
D. 类的非静态成员函数都有this指针
解析:this是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针可以知道自己属于哪一个对象。它隐藏于每个类的非静态成员函数中。
8.有如下程序:
#include
using namespace std;
class Base{
public:
Base(int x=0){cout<<x;)
};
class Derived:public Base{
public:
Derived(int x=0){cout<<x;)
private:
Base val;
);
int main(){
Derived d(1);
return 0:
}
程序的输出结果是( )。(D)
A. 0
B. 1
C. 01
D. 001
解析:此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行自身的构造函数。本题中,首先会构造基类Base,调用Base类的构造函数,输出0;然后还定义了一个Base类的对象,再次调用Base类的默认构造函数输出0;最后构造自身,因主函数中传入了构造参数l,所以输出1。故最后输出结果是:001。
9.C++中的模板包括( )。(C)
A. 对象模板和函数模板
B. 对象模板和类模板
C. 函数模板和类模板
D. 变量模板和对象模板
解析:本题考查函数模板和类模板,所以答案为c。
10.有以下程序,在横线应添加( )。
#include<iostream>
using namespace std;
class TestClass
{
public:
TestClass(int n){number=n;}
//拷贝构造函数
~TestClass(){}
private:
int number;
};
TestClass fun(TestClass p)
{
TestClass temp(p);
return temp;
}
int main()
{
TestClass obj1(10),obj2(0);
TestClass obj3(obj1);
obj2=fun(obj3);
return0:
}
A
解析:拷贝构造函数也是构造函数,但它只有一个参数,这个参数是本类的对象,即other,所以赋值操作将本类的参数other.number赋值给number;而且采用对象的引用的形式,也就是&other。
11.下列字符串中,正确的C++标识符是( )。(D)
A. foo-1
B. 2b
C. new
D. 256
解析:此题考查的是C++语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线;标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。
12.若一个函数的原型为“int*Xfun1(int x,int&y,char z);”,则该函数的返回值类型为( )。(A)
A. int*
本文档预览:3600字符,共5366字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载