东北林业大学
2009—2010画画图片大全风景学年第二学期考试试题
考试科目:C++程序设计 考试时间:120分钟 试卷总分:100分
得分: 一、选择题(每题2分,共26分)
1、假设已经有定义 const char *const name=”chen”,下面语句中正确的是( D )。
A) name[3]=’b’; B)name=”Lin” ;
有前景的行业
C) name=new char[6]; D)cout<<name[2];
2、以下语句错误的是( D)。
A) int *p=new int(10); B)int *p=new int[10];
C) int *p=new int; D) int *p=new int[10](0);
3、如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是(C )。
A)virtual show()=0;
B) virtual void show();
C) virtual void show()=0;
D) virtual show()=0 virtual;
4、构造函数是在( B )时被执行的。
A)程序编译。 B)创建对象。C)创建类。 D)程序装入内存。
5、在声明类时,下面的说法正确的是(C )。
爱的天堂A) 可以在类的声明中给类的数据成员赋初值。
B) 数据成员的数据类型可以是register。
C) private,public,protected可以按任意顺序出现。
D) 没有用private,public,protected定义的数据成员是公有成员。
6、要实现动态联编,派生类中的虚函数( D )。
A)荷花作文600字返回的类型可以与虚函数的原型不同。
B) 参数个数可以与虚函数的原型不同。
C) 参数类型可以与虚函数的原型不同。
D)以上都不对。
7、假设定义了函数摸板
template<class T>
T max(T x, T y)
{return (x>y)?x:y;}
并定义了 int i;char c;错误的调用语句是(D )。
A)max(i,i); B)max(c,c); C)max((int)c,i) D)max(i,c);
8、关于析构函数,正确的是( B )
A) 一个类中可以定义多个析构函数.
B) 析构函数名与类名完全相同且前面有~.
C) 打狗棍戴若男析构函数必须指定返回类型.
D) 析构函数必须有多个参数.
9、以下说法正确的是( A )。
A) 基类的指针可以指向它公有派生类的对象
B) 派生类的指针可以指向基类的对象
C) 基类的指针可以指向它私有派生类的对象
D) 基类的指针可以指向任何类的对象
10、摸板的使用是为了(A )。
A) 提高代码的可重用性 B)提高代码的运行效率
C)加强类的封装性 D)实现多态性
11、使用派生类的主要原因是( A )
A)提高代码的可重用性;B) 提高程序的运行效率;
C) 加强类的封装性; D) 实现数据的隐藏。
12、假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是( C )
A)class derived:student private{//…};
B) class derived:student public{//…};
C) class derived:private student{//…};
D) class derived:public student{//…};
13. 下列关于派生类构造函数和析构函数的说法中,错误的是D
A)派生类的构造函数会隐含调用基类的构造函数
B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
得分: 二、指出下列各程序中的错误并说明为什么。(每题4分,共12分)
1、class student
{int sno,age;
void printstu()
{cout<<”Sno is ”<<sno<<”,”; cout<<”age is ”<<age<<endl;}
void tSno(int s){sno=s;}
void tAge(int a){age=a;}};
void main()
{student myst;
myst.tSno(20091);
myst.tAge(17);
myst.printstu();
}
2、class point
{public:
int x,y;
private:
point(){x=1;y=2;}
};
void main()
{point cp; cp.x=2;}
3、学习摄影class myclass
{char name[20];
int age;
void print();
};
void main()
{myclass p1,p2; p1.age=25;//…}
得分: 三、写出以下程序的运行结果。(每题5分;共35分)
1、Template<class T1,class T2>
class myclass
{public:
myclass(T1 a,T2 b){i=a;j=b;}
void show(){cout<<i<<’ ’ <<j<<endl;}
private:
T1 i; T2 j;
};
void main()
{myclass <int,double> ob1(10,2.34);
myclass<char,char*> ob2(’X’, ”This is a test”);
ob1.show();
ob2.show();早晨的祝福语
}
2、class ba
{public:
ba(int n){a=n;cout<<”Constructing ba class\n”;}
~ba(){cout<<”Destructing ba class\n”;}
Void show(){cout<<”a=”<<a<<endl;}
private:
int a;
};
大皮皮虾 class derived:public ba
{private:
int b;
public:
Derived(int x,int y):ba(x)
{b=y*2; cout<<” Constructing derived class”<<endl;}
~derived(){cout<<” destructing derived class”<<endl;}
void show()
{ba::show();
Cout<<”b=”<<b<<endl;}
};
Void main()
{derived obj(10,12);
Obj.show();}
3、class circle{
protected:
int r;
public:
void tr(int x){r=x;}
virtual void show()=0;};
class area:public circle{
public:
virtual void show()
{cout<<”area is ”<<3*r*r<<endl;}
};
class perimeter:public circle{
public :
void show()
{cout<<”perimeter is ”<<2*3*r<<endl;}
void main()
{ circle *ptr;
area ob1;
perimeter ob2;
(9);
(10);