一、选择题(每题2分,共30分)
1、C++源程序文件的扩展名为( )
A、.CPP B、.C C、.DLL D、.EXE
2.下列给整数数组进行初始化中____________是正确的。
A、int a[5]={1,2,3,4,5,6}
B、int a[]={1,,2,3,4}
C、int a[5]={1,2,3,}
D、int a[]={1,2,3,4,5}
3.假定p所指对象的值为58,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指对象的值为( )
A、58 B、59 C、46 D、47
4.已知const int a=78;const int b=28;int c=18;const int *pi = &a; _____是正确的
A、*pi=58 B、pi=&b C、*pi=&a D、pi=88
5.已知'A'~'Z'的ASCII码为65~90, 当执行" char ch = 14*5+2; cout<<ch<<endl;" 语句序列后, 得到的输出结果为( )
A、72 B、H
C、I D、71
6.在a=3,p=&a中,*p的值是 ____________。
A、变量a的地址值 B、无意义 C、变量p的地址值 D、3
7.下列____________的调用方式时引用调用。
A、形参是指针,实参是地址值
B、形参和实参都是变量
C、形参是数组名,实参是数组名
D、形参是引用,实参是变量
8.下列语句( )是正确的递归函数。
A、int Fun(int n) {if(n<1) return 1; else return n*Fun(n+1);}
B、int Fun(int n) {if(abs(n)<1) return 1; else return n*Fun(n/2);}
C、int Fun(int n) {if(n>1) return 1; else return n*Fun(n*2);}
D、int Fun(int n) {if(n>1) return 1; else return n*Fun(n-1);}
9.假定a为一个整型数组名,则元素a[4]的字节地址( )
A、 a+4 B、 a+8
C、 a+16 D、 a+32
A、 a+4 B、 a+8
C、 a+16 D、 a+32
以下程序的输出结果是:
#include <iostream.h>
void prt(int *x,int *y,int *z){
cout<<++*x<<","<<++*y<<","<<*z++<<endl;
}
int a=10,c=20,b=40;
void main(){
prt(&a,&b,&C、; prt(&a,&b,&c);
}
A、11,42,31 B、11,41,20 C、11,21,40 D、11,41,21
12,21,41 12,42,20 11,21,41 12,42,22
10.对于常数据成员,下面描述正确的是( )
A、常数据成员可以不初始化,并且不能更新
B、常数据成员必须被初始化,并且不能更新
C、常数据成员可以不初始化,并且可以被更新
D、常数据成员必须被初始化,并且不能更新
11.定义一个时间类
class Time{
public:
Time (int h=0){hour=h;}
private:
int hour;
};
拷贝构造函数在( )情况下不被调用
A、Time fn(){
class Time{
public:
Time (int h=0){hour=h;}
private:
int hour;
};
拷贝构造函数在( )情况下不被调用
A、Time fn(){
//……
Time t1(3);
return t1;
}
void main(){
Time t2;
t2=fn();
}
Time t1(3);
return t1;
}
void main(){
Time t2;
t2=fn();
}
B、void fn(Time t2){
//…… ……
}
void main( ){
Time t1(3);
fn(t1);
}
C、Time t1(3);
Time t2=t1;
D、Time t1(3),t2;
t2=t1;
//…… ……
}
void main( ){
Time t1(3);
fn(t1);
}
C、Time t1(3);
Time t2=t1;
D、Time t1(3),t2;
t2=t1;
12.有关析构函数的说法不正确的是____________。
A、析构函数有且只有一个
B、析构函数无任何函数类型
C、析构函数和构造函数一样可以有形参
D、析构函数的作用是在对象被撤销时收回先前分配的内存空间
13.有关静态成员的说法不正确的是____________。
A、静态数据成员可以在类声明中定义
B、静态数据成员在类的内部实现部分中定义
C、静态成员函数不能对非静态成员进行默认访问
D、静态成员函数没有this指针
14.对于拷贝初始化构造函数,正确的描述是( )
A、在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数
B、必须为每个类定义拷贝初始化构造函数
C、如果要使用拷贝初始化构造函数,则必须在类中先定义
D、当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数
15.下面叙述错误的是( )
A、在C++中,成员函数运算符重载和友元函数运算符重载的唯一区别是前者有this指针,后者没有this指针
B、假设定义人民币RMB类
RMB operator + (RMB d)
{return RMB(yuan+d.yuan+(jf+d.jf)/100); }
这是成员函数运算符重载的形式
A、在C++中,成员函数运算符重载和友元函数运算符重载的唯一区别是前者有this指针,后者没有this指针
B、假设定义人民币RMB类
RMB operator + (RMB d)
{return RMB(yuan+d.yuan+(jf+d.jf)/100); }
这是成员函数运算符重载的形式
C、重载加号运算符使用引用返回的形式
D、重载减号运算符使用值返回的形式
D、重载减号运算符使用值返回的形式
二、填空题(1-6题每空1分,7-9每空2分,共30分)
1.面向对象程序设计中的三大特点是:封装性、继承性和 (1) 。
2、函数的返回类型有:void返回、值返回和 (2) 。
3、变量的作用域有四种,分别是: (3指向类成员函数的指针) 、函数作用域、函数原型作用域、局部作用域。
4.XY为一个类名,则该类的拷贝构造函数的声明语句为(4)。
5.类中一个字符指针成员指向具有n个字节的存储空间时, 它所能存储字符串的最大长度为________(5)_________ 。
6.带有 (6) 的类称为抽象类,它只能作为基类来使用。
7.下面的函数Fun将一个整数字符串转换为一个整数。请完成下列函数定义。
#include <string.h>
int Fun(char * str)
{
int num,digital,len;
(7)
len=strlen(str);
while(*str!=NULL)
{
digital=*str-‘0’;
for(int i=0; (8) ;i++)
digital*=10;
len--;
(9)
num+=digital;
}
return num;
}
8.下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序
#include <iostream.h>
#include <math.h>
class Point
{
public:
(10)
Point( (11) ) {
X=a;
Y=b;
}
void Print(){
cout<<”X=”<<X<<endl;
cout<<”Y=”<<Y<<endl;
}
private:
float X,Y;
};
class Distance{
public:
float Dis(Point& p, Point &q);
};
float Distance::Dis(Point& p, Point &q){
float result;
(12)
cout<<result<<endl;
return result;
}
void main(){
Point p(10,10),q(20,20);
Distance d;
d.Dis(p,q);
}
9.在划线处填上适当的语句,完成下列程序。
#include <iostream.h>
#include <math.h>
class Point{
public:
Point(double a,double b,double c){ (13) }
double Getx( ){return X;}
double Gety( ){return Y;}
double Getz( ){return Z;}
private:
(14)
protected:
(15)
};
class Line: (16) Point{
public:
Line(double a,double b,double c,double d) (17) { (18) }
void show(){
cout<<Getx()<<endl;
cout<<Gety()<<" "<<Y<<endl;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论