国家二级(C++)机试模拟试卷283
选择题
1.下列语句中,错误的是( )。(B)
A. const int buffer=256;
B. const int temp;
C. const double*point;
D. const double*rt=new double(5.5);
解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用conat在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*double point形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。
2.执行语句:{cout<<setfill(’*’)<<setw(10)<<setfill(’#’)<<left<<123<<\\(B)
A. 123*******OK
B. 123#######OK
C. 123********OK********
D. 123#######OK#######
解析:cout.fill(、)用于设置或返回输出的填充字符,默认是空格,fill(、)函数的设置一直有效,直到下一个fill()函数改变该值为止。setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为0。注意:默认为输出数据在指定宽度内右对齐。
3.在下面的类定义中,横线处应填入的内容是( )。
class Fred
{
public:
void print(){cout<<data<<endl;)
void setData(double d) {data=d;}
static int count;
private:
double data;
};
count=0; //静态数据成员的定义(C)
A. int
B. static int
C. int Fred::
D. static int Fred::
解析:此题考查的是静态数据成员的定义。题目中count数据成员要定义成静态的,其初始化的格式为:类型类名::静态数据成员=常量。
4.某二叉树中度为2的结点有10个,则该二叉树中有( )个叶子结点。(C)
A. 9
B. 10
C. 11
D. 12
解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。
5.在类中说明的成员可以使用关键字的是( )。(A)
A. public
B. extem
C. cpu
D. register
解析:extern用于声明外部变量的,register声明寄存器类型变量,无cpu类型。它们都不能声明类成员。public声明为公有访问权限。
6.在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(A)
A. auto
B. extern
C. register
D. static
解析:此题考查的是存储类型。C++语言变量的存储类型分为如下几种类型:auto一一函数内部的局部变量;static一一静态存储分配:extern…全局变量;register一一变量存储在硬件寄存器中。
7.下面的描述中,正确的是( )。(A)
A. virtual可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
解析:在基类中用virtual声明成员函数为虚函数,所以A是正确的。纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。
8.在C++中,cin是一个( )。(B)
A. 类
B. 对象
C. 模板
D. 函数
解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为B。
9.关于函数重载,下列叙述中错误的是( )。(C)
A. 重载函数的函数名必须相同
B. 重载函数必须在参数个数或类型上有所不同
C. 重载函数的返回值类型必须相同
D. 重载函数的函数体可以有所不同
解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。
10.下列关于类模板的描述中,错误的是( )。(D)
A. 类模板的成员函数都是模板函数
B. 可以为类模板参数设置默认值
C. 类模板描述了一组类
D. 类模板中只允许有一个类型参数
解析:类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选D。
11.下列语句中错误的是( )。(A)
A. const int a;
B. const int a=10;
C. eonst int*point=0;
D. const int*point=new int(10);
解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。
12.下面是一个模板声明的开始部分:
templatedouble…
由此可知( )。(A)
A. 这可能是一个函数模板的声明
B. 这可能是一个类模板的声明
C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明
D. 这肯定是一个错误的模板声明
解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是一个函数模板的声明。
13.关于运算符重载,下列表述中正确的是( )。(C )
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、.>,*、::、?:这五个运算符之外,其他运算符都可以重载;在类型转换符函数的定义中不需要声明返
本文档预览:3600字符,共17906字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载