国家二级(C++)机试模拟试卷275
选择题
1.在一棵二叉树上,第5层的结点数最多是( )。(D)
A. 8
B. 9
C. 15
D. 16
解析:根据二叉树的性质:二叉树第i(i>1)层上至多有2i-1个结点。得到第5层的结点数最多是16个。
2.若整型变量a、b、C、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是( )。(A)
A. 1
B. 2
C. 3
D. 4
解析:酉先把c<d?c:d算出。结果为2,表达式a<b?a:c<d?c:d变为:a<b?a:2,结果为1。
3.有如下程序:
#include<iostream>
using namespace std;
class Base
{
pfivme:
void funl()const{cout<<”funl”;}
protected:
void fun2()const{cout<<”fun2”;}
public:
void fun3()coast{cout<<”fun3”;}
};
class Derived:protected Base
{
public:
void fun4()const{cout<<”fun4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
0bj.fun3();//③
obj.fun4();//④
return 0;
}
其中有语法错误的语句是( )。(B)
A. ①②③④
B. ①②③
C. ②③④
D. ①④
解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。
4.有如下程序:
#include
using namespace std;
class Base
{
public:
void fun1(){cout<<\\(B)
A. Base
Base
B. Base
Derived
C. Derived
Base
D. Derived
Derived
解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个派生类对象obj,执行f函数后,将派生类对象obj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为B。
5.下列运算符不能重载为友元函数的是( )。(A)
A. = () [] ->
B. + – ++ —
C. > = <=
D. += -= *= /=
解析:此题考查的是运算符重载的概念。C++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。
6.通过运算符重载,可以改变运算符原有的( )。(A)
A. 操作数类型
B. 操作数个数
C. 优先级
D. 结合性
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为A。
7.下列程序用来判断指定文件是否能正常打开,横线处应填写的内容是( )。
#include
main()
{ FILE*fp;
if(((fp=fopen(\\(A)
A. NULL
B. 文件打开成功!
C. 未能打开文件!
D. 以上均不正确
解析:在本题中,fopen函数如果成功打开了文件,返回文件指针,否则返回NULL。
8.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为c。
9.有如下程序段:
int i=0,j=1;
nt&r=i;//①
r=j;//②
int*p=&i;//③
*p=&r;//
其中会产生编译错误的语句是( )。(A)
A. ④
B. ③
C. ②
D. ①
解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。
10.在C++中,cin是一个( )。(B)
A. 类
B. 对象
C. 模板
D. 函数
解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为B。
11.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
12.对C++编译器区分重载函数无任何意义的信息是( )。(C)
A. 参数类型
B. 参数个数
C. 返回值类型
D. 常成员函数关键字const
解析:所谓函数重载是指同一
本文档预览:3600字符,共15425字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载