求C++题..

来几道C++题...
我刚学C++时间不长..还没学到数组..
所以找几道简单的题练练手..
主要是练一下逻辑思维能力
追加20分

一、选择填空

1.在下列关键字中,用以说明类中公有成员的是( )。

A.public; B.private; C.protected; D.friend

2.下列的各类函数中,( )不是类的成员函数。

A. 构造函数; B.析构函数;

C.友元函数;D.拷贝初始化构造函数

3.作用域运算符的功能是( )。

A.标识作用域的级别的;

B.指出作用域的范围的;

C.给定作用域的大小的;

D.标识某个成员是属于哪个类的。

4.( )是不可以作为该类的成员的。

A.自身类对象的指针;

B.自身类的对象;

C.自身类对象的引用;

D.另一个类的对象。

5.( )不是构造函数的特征。

A.构造函数的函数名与类名相同;

B.构造函数可以重载;

C.构造函数可以设置缺省参数;

D.构造函数必须指定类型说明。

6.( )是析构函数的特征。

A.一个类中只能定义一个析构函数;

B.析构函数名与类名不同;

c.析构函数的定义只能在类体内;

D.析构函数可以有一个或多个参数。

7.通常的拷贝初始化构造函数的参数是( )。

A.某个对象名;

B.某个对象的成员名; ‘

C.某个对象的引用名;

D.某个对象的指针名。 .

8.关于成员函数特征的下述描述中,( )是错误的。

A.成员函数一定是内联函数;

B.成员函数可以重载;

C.成员函数可以设置参数的缺省值;

D.成员函数可以是静态的。

9.下述静态数据成员的特性中,( )是错误的。

A.说明静态数据成员时前边要加修饰符static

B. 静态数据成员要在类体外进行初始化

C.引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符

D.静态数据成员不是所有对象所共用的。

10.友元的作用( )。

A.提高程序的运用效率;

B.加强类的封装性;

C.实现数据的隐藏性;

D.增加成员函数的种类。

二、判断下列描述的正确性,对者划√,错者划×。

1.使用关键字class定义的类中缺省的访问权限是私有(private)的√。

2.作用域运算符(::)只能用来限定成员函数所属的类。

3.析构函数是一种函数体为空的成员函数。

4.构造函数和析构函数都不能重载。

5.说明或定义对象时,类名前面不需要加class关键字。√

6. 对象成员的表示与结构变量成员表示相同,使用运算符.或者->

7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。

8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。

9. 可以在类的构造函数中对静态数据成员进行初始化

10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数√。

三、分析下列程序的输出结果。

1.构造函数

#include <iostream.h>

class A

{

public:

A();

A(int i,int j);

void print();

private:

int a,b;

};

A::A()

{

a=b=0;

cout<<"Default constructor called.\n";

}

A::A(int i,int j)

{

a=i;

b=j;

cout<<"Constructor called.\n";

}

void A::print()

{

cout<<"a="<<a<<",b="<<b<<endl;

}

void main()

{

A m,n(4,8);

m.print();

n.print();

}

2. 类中有其它类的对象

#include<iostream.h>

class B

{

public:

B(){}

B(int i,int j);

void printb();

private:

int a,b;

};

class A

{

public:

A(){}

A(int i,int j);

void printa();

private:

B c;

};

A::A(int i,int j):c(i,j)

{}

void A::printa()

{ c.printb(); }

B::B(int i,int j)

{ a=i; b=j; }

void B::printb()

{ cout<<"a="<<a<<",b="<<b<<endl; }

void main()

{

A m(7,9);

m.printa();

}

3. 静态成员变量和静态成员函数

#include<iostream.h>

class Count

{

public:

Count(){ count++; }

static int HM(){return count;}

~Count()

{

count--;

cout<<"count="<<HM()<<endl;

}

private:

static int count;

};

int Count::count=100;

void main()

{

Count c1,c2,c3,c4;

cout<<"Count::HM : "<<Count::HM()<<endl;

cout<<"c1.hm : "<<c1.HM()<<endl;

}

4. 引用

#include<iostream.h>

class A

{

public:

A(double t,double r){ Total=t; Rate=r;}

friend double Count(A &a)

{

a.Total += a.Rate*a.Total;

return a.Total;

}

private:

double Total,Rate;

};

void main()

{

A a1(100.0,0.35),a2(200.0,0.02);

cout<<Count(a1)<<","<<Count(a2)<<endl;

}

5. 引用和拷贝构造函数

#include<iostream.h>

class Set

{

public:

Set(){ PC=0; }

Set(Set &s);

void Empty(){ PC=0; }

int IsEmpty(){ return PC==0; }

int IsMemberOf(int n);

int Add(int n);

void Print();

friend void reverse(Set *m);

private:

int elems[100];

int PC;

};

int Set::IsMemberOf(int n)

{

for(int i=0;i<PC;i++)

if(elems[i]==n)

return 1;

return 0;

}

int Set::Add(int n)

{

if(IsMemberOf(n))

return 1;

else if(PC>=100)

return 0;

else

{

elems[PC++]=n;

return 1;

}

}

Set::Set(Set &p)

{

PC=p.PC;

for(int i=0;i<PC;i++)

elems[i]=p.elems[i];

}

void Set::Print()

{

cout<<"{";

for(int i=0;i<PC-1;i++)

cout<<elems[i]<<",";

if(PC>0)

cout<<elems[PC-1];

cout<<"}"<<endl;

}

void reverse(Set *m)

{

int n=m->PC/2;

for(int i=0;i<n;i++)

{

int temp;

temp = m->elems[i];

m->elems[i] = m->elems[m->PC-i-1];

m->elems[m->PC-i-1]=temp;

}

}

void main()

{

Set A;

if(A.IsEmpty())

cout<<"空序列"<<endl;

else

cout<<"非空序列"<<endl;

A.Print();

Set B;

for(int i=1;i<=8;i++)

B.Add(i);

B.Print();

if(B.IsMemberOf(5))

cout<<" 数 5 在此序列中"<<endl;

else

cout<<" 数 5 不在此序列中"<<endl;

B.Empty();

for(int j=11;j<20;j++)

B.Add(j);

Set C(B);

C.Print();

reverse( &C);

C.Print();

}

四、按下列要求编写程序。

在一个程序中,实现如下要求:

(1)构造函数重载;

(2)成员函数设置缺省参数;

(3)有一个友元函数;

(4)有一个静态函数;

(5)使用不同的构造函数创建不同对象。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-01-24
那就做做题库呗。

acm.fjnu.edu.cn

1300 输出排列成菱形的字母
1301 输出三角形的字符
1303 敲七
1340 数制转换

这些或里面的中文题都可以做吧。不知道你学的程度。本回答被提问者采纳
第2个回答  2007-01-25
用*号输出正金字塔
用*号输出倒金字塔,用输出命令实现,setw(),setfill()和循环实现
如下:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
第3个回答  2007-01-24
循环
相似回答