点击查看:2018年9月计算机二级C++考前基础练习题及答案汇总
1.下列关于C++流的描述中,错误的是( )。
A.cout>>’A’表达式中输出字符A
B.eof函数可以检测是否到达文件尾
C.对磁盘文件进行流操作时,必须包含头文件fstream
D.以ios_base::Out模式打开的文件不存在时,将自动建立一个新文件
2.有如下程序:
#include
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;)
~Toy( ){count一一;)
char*GetName( ){returnname;}
staticintgetCount( ){returncount;)
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmain( ){
Toyt1("snoopy"),t2("Mickey"),t3("Barbie");
tout
)
运行时的输出结果是( )。
A.1
B.2
C.3
D.运行时出错
3.有如下程序:
#include
usingnamespacestd;
classA{
public:
A(inti):rl(i){)
voidprint( ){cout<<’E’
intr1:
};
intmain( ){
Aal(2);constAa2(4);,
al.print( );a2.print( );
return0;
}
运行时的输出结果是( )。
A.运行时出错
B.E2一C16一
C.C4一Cl6一
D.E2一E4—
4.有如下程序:
#include
usingnamespacestd;
className{
charname[20];
public:
Name( ){
strcpy(name,"");cout<<’?’;
}
Name(char*fname){
strcpy(name,fname);cout<<’?’;
}
};
intmain( ){
Namenames[3]={Name(”张三”),Name(”李四”));
return0;
}
运行此程序输出符号?的个数是( )。
A.O
B.1
C.2
D.3
5.有如下程序:
#include
usingnamespacestd;
classAA{
public;
AA( ){cOUt<<’1’;)
};
classBB:publicAA{
intk;
public:
BB( ):k(0){tout<<’12’;}
BB(intn):k(n)(cout<<’3’;)
};
intmain( ){
BBb(4),c;
return0;
}
运行时的输出结果是( ).
A.1312
B.132
C.32
D.1412
6.有如下程序:
#include
usingnamespacestd;
classC1{
public:
~C1( ){cout<<1;)
};
classC2:publicC1{
public:
~C2( ){cout<<2;)
};
intmain( ){
C2cb2;
C1*cb1:
return0;
}
运行时的输出结果是( )。
A.121
B.21
C.211
D.12
7.有如下程序:
#include
usingnamespacestd;
classPublication{//出版物类
charname[30];
public:
Publication(char*name=”未知名称”){
~strcpy(this一>name,name);
}
constchar*getName( )const{returnname;}
virtualconstchar*getType( )const{return”未知类型”;}
};
classBook:publicPublication{//书类
public:
Book(char*name):Publication(name){}
virtualconstchar*getType( )const{return"书";}
};
voidshowPublication(Publication&p){
cout
}
intmain( ){
Bookbook(”精彩人生”);
showPublication(book);
return0;
}
运行时的输出结果是( )。
A.未知类型:未知名称
B.未知类型:精彩人生
C.书:未知名称
D.书:精彩人生
8.下列关于运算符重载的描述中,错误的是( )。
A.::运算符不能重载
B.类型转换运算符只能作为成员函数重载
C.将运算符作为非成员函数重载时必须定义为友元
D.重载口运算符应完成“下标访问”操作
9.有如下程序:
#include
#includediomanip>
usingnamespacestd;
intmain( ){
ints[]={123,234);
cout
}
运行时的输出结果是( )。
A.123
B.***123
234234
C.***123
D.***123
***234234***
10.有如下类定义:
classA{
char*a;
public:
A( ):a(O){}
A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
a=__;
strcpy(a,aa);
}
~A( ){delete[]a;}
};
横线处应填写的表达式是( )。
A.Dewchar[strlen(aa)+1]
B.char[strlen(aa)+1]
C.char[strlen(aa)]
D.newchar[sizeof(aa)-1]
参考答案:
1.A。【解析】在C++中输入用“cin>>”,输出用“<32.C。【解析】析构函数主要用于最后函数的释放空间。本题在已输出t1.getCount()后才调用即不影响所输结果。
3.B。【解析】const关键字可以用于参与对重载函数的区分。重载的原则是常对象调用常成员函数,一般对象调用一般成员函数。
4.D。【解析】对有参与无参构造函数的调用。当names[2]为空时调无参构造函数,而names[0],names[1]调用有参构造函数,即输出3个“?”。
5.A。【解析】当基类的构造函数默认或无参时,派生类可省略对基类构造函数的显示调用,但系统会自动调用该类的缺省构造函数,且先调用基类的构造函数后调用派生类的构造函数。
6.B。【解析】在基类与派生类中,析构函数在派生类先调用,而本题有两个不同类对象,对于cb2需先调c2的析构函数,再调c1的析构函数。而对于*cb1由于没有指针性析构函数,它将不参加传递数据。
7.D。【解析】因为getType是虚函数,所以P.getType()执行继承类的getType函数,输出“书”;P.getName()执行基类的getName函数,输出“精彩人生”。总共输出“书:精彩人生”,故选D。
8.C。【解析】除了·、*、→*、::、?:这五个运算符外,其他运算符都可以重载。=、[]、()、→以及所有的类型转换运算符只能作为成员函数重载。口作为成员函数重载时,应完成“下标访问”操作,使得向指定下标处的元素赋值或取值成为可能。
9.B。【解析】setw()为填充字符控制,仅对紧接着它的字符起作用,当输出的字符宽度小于setw()预留的字符数时,需用setw()设置的字符给予填充。
10.A。【解析】对动态分配存储空间的考查,在C++中,回车键需计一字符,即总的长度为strlen(aa)+1。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: