长沙理工大学C++题库附答案 下载本文

38、#include class Sample {

int n; public:

Sample(int i){n=i;}

friend int add(Sample &s1,Sample &s2); };

int add(Sample &s1,Sample &s2) {

return s1.n+s2.n; }

void main() {

Sample s1(10),s2(20); cout<

39、#include class Sample {

int x,y; public:

Sample(){x=y=0;}

Sample(int a,int b){x=a;y=b;} ~Sample() {

if(x==y)

cout<<\else

cout<<\}

void disp() {

cout<<\} };

void main() {

Sample s1(2,3); s1.disp(); }

六、分别指出下面的p各是什么。 1、int *p; 2、int *p[3]; 3、int (*p)[3]; 4、int *p( ); 5、int **p;

七、指出下列程序的错误,并说明为什么:

1、#include

class Student{ int sno; int age; void printStu(); void setSno(int d); };

void printStu() {

cout<<\\

cout<<\}

void setSno(int s) { sno=s; }

void setAge(int a) {

age=a; }

void main() {

Student lin; lin.setSno(20021); lin.setAge(20); lin.printStu(); }

2、

#include class Point{ public:

13

int x,y; private:

Point(){x=1;y=2;} };

void main() {

Point cpoint; cpoint.x=2; }

3、#include

void main( )

{ int x=0,y=5,z=3;

while(z>0 && ++x<3) y=y-1;

cout<

}

4、#include

void main()

{

int x=10;

int &y=x;

cout<<\x++;

cout<<\y++;

cout<<\}

5、#include

void main( )

{ int i,n=0;

for(i=2;i<10;i++)

{ if(i%3!=0) continue;

n++; } cout<

6、#include class A {

int *a;

public:

A(int x)

{

a=new int(x);

cout<<\

}

};

void main()

{

A x(3),*p;

p=new A(5);

delete p;

}

7、# include

class base

{

public:

virtual int func () { return 0; }};class derived: public base

{

public:int func() { return 100; }

14

};

void main() {

derived d; base& b = d;

cout << b.func() << endl; cout << b.base::func() << endl; }

8、#include #define pi=3.1416;

二、简答题

1、类的公有成员和私有成员有何区别?

2、引入类的静态成员有何意义?

3、什么是多态性?它能带来什么样的好处?

4、运算符重载能带来什么好处?

const float r=3.2; void main() {

float s1,s2,c1,c2,r1; c1=pi*r*r; s1=2*pi*r; r=2.8; c2=pi*r*r; s2=2*pi*r; cout

5、怎样理解类与对象的含义?类与对象的关系是什么?

6、为什么要在基类中定义虚函数?

7、引入友元的目的是什么?

8、什么是运算符重载?是否所有运算符都能进行重载?

9、析构函数有什么作用?

15

10、拷贝构造函数在哪几种情况下调用?

11、函数重载与函数覆盖有什么不同,它们与多态有什么关系?

12、C++继承是如何工作的?

三、编程题:

1. 编写一个函数,实现两个数的交换。

2. 编写一个函数,返回三个整数形参中的最小值。 3. 编写一个类LEI,实现打印私有变量a的值。

4、下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。请完成该函数。

int str_count(char *substr, char *str) { }

5、定义个datetime类,使其对象可以显示当前系统时间和日期 。

6、设计一个汽车类Vehicle,包含数据成员车轮数和车重,由它派生出类Car和类Truck,前者包含载客数,后者包含载重量。编写程序实现。

7、设计一个点类Point,包含点的坐标x,y 两个数据成员,采用友元类的方式分别计算两点间的水平距离和垂直距离。

8、设计一个点类Point,包含横、纵两个坐标数据x,y,由它派生出圆类Circle,并添加一个半径数据r,求其面积area。

9、设计一个点类Point,包含两个坐标数据成员x,y和一个构造函数;再设计一个友元函数distance()用于求两点之间的距离。

10、编写一个函数,返回三个整数形参中的最大值。 11、编写一个函数,实现两个数的交换。

12、编写class cA的派生类class cAB,增加成员函数,用于求圆的周长 class cA { int r; public:

cA(int x){ r=x; }

double area( ) { return r*r*3.14; }

16