二级C++选择题专项强化真题试卷13
选择题
1.有如下程序:
#include<iostream>
using namespace std;
void f1(int& x, int& y){int z=x; x=y; y=z;)
void f2(int x, int y){int z=x; x=y; y=z;}
intmain(){
int x=10, y=26;
f1(x, y);
f2(x, y);
cout<<y<<end1;
return 0;
}
运行时的输出结果是( )。
A) 10
B) 16
C) 26
D) 36(A)
A.
B.
C.
D.
解析:
2.有如下程序:
#include<iostream>
using namespace std;
class XA{
int a;
public:
static int b;
XA(int a
A) : a(aA) {b++;}
~XA(){}
int get(){return a;}
};
int XA::b=0;
int main(){
XA d1(2), d2(3);
cout<<d1. get()+d2. get()+XA::b<<end1;
return 0;
}
运行时的输出结果是( )。A) 5
B) 6
C) 7
D) 8(C)
A.
B.
C.
D.
解析:
3.下列关于对象初始化的叙述中,正确的是(C)
A. 定义对象的时候不能对对象进行初始化
B. 定义对象之后可以显式地调用构造函数进行初始化
C. 定义对象时将自动调用构造函数进行初始化
D. 在一个类中必须显式地定义构造函数实现初始化
解析:构造函数的作用是在对象被创建的时候对对象进行初始化。构造函数在对象被创建的时候由系统自动调用。故C项正确。
4.有如下程序:
#include
#include
using std::cout;
class Point{
public:
friend double distance(const Point &p); //P距原点的距离
Point(int xx=0,int yy=0):x(xx),Y(YY){}//①
private:
int x,y;
};
double distance(const Point &p){ //②
return sqrt(P.x*P.x+P.y*P.y);
}
int main(){
Point p1(3,4);
cout<<distance(p1);
return 0; //③
}
下列叙述中正确的是(A)
A. 程序编译正确
B. 程序编译时语句①出错
C. 程序编译时语句②出错
D. 程序编译时语句③出错
解析:
5.有如下程序:
#include
using namespace std;
class Book{
public:
Book(char*t=””){strcpy(title,t);}
private:
char title[40];
};
class Novel:public Book{
public:
Novel(char *t=””):Book(t){}
char*Category()const{return”文学”;)
};
int main(){
Book *pb;
pb=new Novel();
cout<Category();
return 0;
}
若程序运行时输出结果是“文学”,则划线处缺失的语句是(D)
A. char*Category();
B. char*Category()const;
C. virtual char*Category()const;
D. virtual char*Category()const=0;
解析:
6.判断字符型变量ch是否为大写英文字母,应使用表达式(D)
A. ch>=’A’ & ch<=’Z’
B. ch<=’A’||ch>=’Z’
C. ’A’<=ch<=’Z’
D. ch>=’A’ && ch<=’Z’
解析:本题考核C++表达式类型及求值规则。ch为大写字母的条件是大于等于’A’且小于等于’Z’。
7.已知:int m=10:在下列定义引用的语句中,正确的是(A)
A. int &x=m;
B. int y=&m;
C. int &z;
D. int &t=&m;
解析:本题考核引用的定义。C++的引用是一种赋值、发送和返回复杂数据结构的方法,应用这种方法,系统不需要负担额外的开销,节省内存空间。建立引用的格式为:类型 &引用名=已定义的变量名;。所以只有A选项是符合要求的。
8.下列关于运算符重载的描述中,正确的是(D)
A. 运算符重载可以改变操作数的个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载可以使运算符实现特殊功能
解析:
9.有如下语句序列; int k=0; do{k+=5;couk<<’$’;) while(k<19); while(k–>0)cout<<’*’; 执行上面的语句序列输出字符$和。的个数分别是(A)
A. 4和20
B. 5和20
C. 4和21
D. 5和21
解析:
10.下列关于模板的叙述中,错误的是(C)
A. 模板声明中的第一个符号总是关键字templale
B. 在模板声明中用括起来的部分是模板的形参表
C. 类模板不能有数据成员
本文档预览:3600字符,共10276字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载