return0;
}
答:
10
20
【】举例说明可以使用const替代#define以消除#define的不安全性。
答:
例如#include<>
#defineA2+4
#defineBA*3
voidmain()
{
coutvvBvvendl;
}
上面程序的运行结果是14而不是18但很容易被认为是18。
用const替代
#define就能得到正确结果从而消除了#define的不安全性。
#include<>
constA=2+4;
constB=A*3;
voidmain()
{
coutvvBvvendl;
}
运行结果为18。
【】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项,并存储到动态分配的空间中。
#include
usingnamespacestd;
intmain()
inti;
int*p;
p=newint[20];
p[0]=0;
p[1]=1;
cout<<*p<<""<<*(p+1)<<"";
for(i=2;i<20;i++)
{
p[i]=p[i-2]+p[i-1];
cout<<*(p+i)<<"";
}
deletep;
return0;
}
【】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二
次方根。
重载sroot()3次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt())。
#include<>
#include<>
intsroot(intx)
{
return
(int)sqrt(x);
}
floatsroot(floatx)
{
return
(float)sqrt(x);
}
doublesroot(doublex)
return(double)sqrt(x);
}
voidmain()析构函数名与类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
【】构造函数是在(B)时被执行的。
A.程序编译B.创建对象
C.创建类D.程序装人内存
【】在下面有关静态成员函数的描述中,正确的是(B)。
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
【】在下面有关友元函数的描述中,正确的说法是〔A)。
A.友元函数是独立于当前类的外部函数
B.一个友元函数不能同时定义为两个类的友元函数
C.友元函数必须在类的外部定义
D.在外部定义友元函数时,必须加关键字friend【】友元的作用之一是(A)。
A.提高程序的运行效率B•加强类的封装性
C.实现数据的隐藏性D.增加成员函数的种类
【】以下程序运行的结果是(B)。
#include
usingnamespacestd;
classB{
public:
B(){}
B(inti,intj)
{x=i;
y=j;
voidprintb()
{cout<}private:
intx,y;
};
classA{
public:
A()
{}
A(intI,intj);voidprinta();
private:
Bc;
};
A:
:
A(inti,intj):
c(i,j)
{}
voidA:
:
printa()
{();
}
intmain()
{Aa(7,8);
();
return0;
}
D.9,10
A.8,9B.7,8C.5,6
】以下程序的运行结果是(A)。
usingnamespacestd;
classA{
public:
voidset(inti,intj)
{x=i;
y=j;
}
intget_y()
{returny;
}
private:
intx,y;
};
classbox{
public:
voidset(intl,intw,ints,intp){length=1;
width=w;
(s,p);
}
intget_area()
{returnlength*width;
}
private:
intlength,width;
Alabel;
};
intmain()
{boxb;
(4,6,1,20);
C.20D.6
D.程序编译出错
cout<<()<return0;
A.24B.4
】以下程序的运行结果是(B)。
#include
usingnamespacestd;
classSample{
public:
Sample(inti,intj)
{x=i;
y=j;
}
voiddisp()
{cout<<"disp1"<}
voiddisp()const
{cout<<"disp2"<}
private:
intx,y;
};
intmain()
{constSamplea(1,2);
();
return0;
}
A.disp12C.disp1disp2】以下程序的运行结果是(B)。
usingnamespacestd;
classR{
public:
R(intr1,intr2)
{R1=r1;
R2=r2;
}
voidprint();
voidprint()const;
private:
intR1,R2;
};
voidR:
:
print()
{cout<}
voidR:
:
print()const
{cout<}
intmain()
{Ra(6,8);
constRb(56,88);
();
return0;
}
D.8,6
A.6,8B.56,88C.0,0
】写出下面程序的运行结果。
#includeusingnamespacestd;
classtoy
{public:
toy(intq,intp)
{quan=q;
price=p;
}
intget_quan()
{returnquan;
}
intget_price()
{returnprice;
}
private:
intquan,price;
};
intmain()
{toyop[3][2]={
toy(10,20),toy(30,48),
toy(50,68),toy(70,80),toy(90,16),toy(11,120),
};
for(inti=0;i<3;i++)
{cout<cout<cout<cout<}
cout<return0;
}
10,20
30,
48
50,
68
70,
80
90,
16
11,
120
】写出下面程序的运行结果。
#includeusingnamespacestd;classexample{public:
example(intn){i=n;cout<<"Constructing\n";
}
~example()
{cout<<"Destructing\n";
}
intget_i()
{returni;
}private:
inti;
};
intsqr_it(exampleo){return()*();
}
intmain()
{examplex(10);cout<<()<return0;
}
10
100
Destructing
Destructing
】写出下面程序的运行结果。
#includeusingnamespacestd;classaClass
{public:
aClass()
{total++;
}
~aClass()
{total--;
}
intgettotal()
{returntotal;
}
private:
staticinttotal;
};
intaClass:
:
total=0;
intmain()
{aClasso1,o2,o3;cout<<()<<"objectsinexistence\n";aClass*p;
p=newaClass;
if(!
p)
{cout<<"Allocationerror\n";return1;
}
cout<<();
cout<<"objectsinexistenceafterallocation\n";deletep;
cout<<();
cout<<"objectsinexistenceafterdeletion\n";return0;
}
3objectsinexistence
4objectsinexistenceafterallocation
3objectsinexistenceafterdeletion
】写出下面程序的运行结果。
#include
usingnamespacestd;
classtest
{public:
test();
~test(){};
private:
inti;
};
test:
:
test()
{i=25;
for(intctr=0;ctr<10;ctr++)
{cout<<"Countingat"<}
}
testanObject;
intmain()
{return0;
}
Countingat0
Countingat1
Countingat2
Countingat3
Countingat4
Countingat5
Countingat6
Countingat7
Countingat8
Countingat9
】写出下面程序的运行结果。
#include
usingnamespacestd;
classA{
inta,b;
public:
A()
{a=0;
b=0;
cout<<"Defaultconstructorcalled.\n";
}
A(inti,intj)
{a=i;
b=j;
cout<<"Constructor:
a="<intmain()
{Aa[3];
Ab[3]={A(1,2),A(3,4),A(5,6)};return0;
}
Defaultconstructorcalled.
Defaultconstructorcalled.
Defaultconstructorcalled.Constructor:
a=1,b=2
Constructor:
a=3,b=4
Constructor:
a=5,b=6
】写出下面程序的运行结果。
#includeusingnamespacestd;classTest{
private:
intval;
public:
Test()
{cout<<"default."<}
Test(intn)
{val=n;cout<<"Con."<}
Test(constTest&t)
{val=;
cout<<"Copycon."<intmain()
{Testt1(6);Testt2=t1;
Testt3;t3=t1;return0;
}
Con.
Copycon.
Default.
】写出下面程序的运行结果。
#includeusingnamespacestd;classN{private:
intA;staticintB;
public:
N(inta){A=a;
B+=a;
}
staticvoidf1(Nm);};
voidN:
:
f1(Nm){cout<<"A="<<<}
intN:
:
B=0;
intmain()
{NP(5),Q(9);
N:
:
f1(P);
N:
:
f1(Q);
return0;
}
A=5
B=14
A=9
B=14
】写出下面程序的运行结果。
#includeusingnamespacestd;classM{intx,y;
public:
M()
{x=y=0;
}
M(inti,intj)
{x=i;
y=j;
}voidcopy(M*m);voidsetxy(inti,intj){x=i;
y=j;
}voidprint(){cout<}
};
voidM:
:
copy(M*m)
{x=m->x;
y=m->y;
}
voidfun(Mm1,M*m2){(12,15);
m2->setxy(22,25);
}
intmain()
{Mp(5,7),q;
(&p);
fun(p,&q);
();
();
return0;
}
5,7
22,25
】写出下面程序的运行结果。
#includeusingnamespacestd;
classM{
intA;
staticintB;
public:
M(inta)
{A=a;
B+=a;
cout<<"Constructing"<}staticvoidf1(Mm);
~M()
{cout<<"Destructing\n";
}
};
voidM:
:
f1(Mm)
{cout<<"A="<<<}
intM:
:
B=0;
intmain()
{Mp(5),Q(10);
M:
:
f1(p);
M:
:
f1(Q);
return0;
}
Constructing
Constructing
A=5
B=15
Destructing
A=10
B=15
Destructing
Destructing
Destructing
】指出下列程序中的错误,并说明为什么#includeusingnamespacestd;
classStudent{
public:
voidprintStu();
private:
charname[10];
intage;
floataver;
};
intmain()
{Studentp1,p2,p3;
=30;
return0;
}age为private不能付值
】指出下列程序中的错误,并说明为什么。
#include
usingnamespacestd;
classStudent{
intsno;
intage;
voidprintStu();
voidsetSno(intd);
};
voidprintStu();
{cout<<"\nSnois"<}
voidsetSno(ints)
{sno=s;
}
voidsetAge(inta)
{age=a;
}
intmain()
{Studentlin;
(20021);
(20);
();
}'classStudent'不存在一个叫'setAge'的方式】指出下列程序中的错误,并说明为什么。
#include
usingnamespacestd;
classPoint{
public:
intx,y;
private:
Piont()
{x=1;y=2;
}
};
intmain()
{Pointcpoint;
=2;
return0;
}
构筑函数错误
】下面是一个计算器类的定义,请完成该类成员函数的实现classcounter{
public:
counter(intnumber);
voidincrement();<};
intmain()
{DatetestDay;
(5);
(10);
(2003);
();
return0;
}
【】建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。
用类cylinder计算圆柱体的体积,并存储在一个double变量中。
在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。
#include
usingnamespacestd;
#definePI
classCylinder
{
public:
Cylinder(doubleradius,doubleheight):
radius(radius),height(height),volume(PI*radius*radius*height)
{
total_vol+=volume;
}
doublevol()const;friendvoidgetParas(double&radius,double&height,double&vol,double&total_vol,constCylinder&obj);
private:
doubleradius;et_qu()*obj[i].get_price()<}
}
【】修改习题,通过对象指针访问对象数