99级cpp01exmC++期末试题答案Word下载.docx
《99级cpp01exmC++期末试题答案Word下载.docx》由会员分享,可在线阅读,更多相关《99级cpp01exmC++期末试题答案Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
cpString,i,cChar);
}
答案:
{inti;
//作用域概念
for(i=0;
if(cpString[i]==cChar){//常见的操作符使用熟练程度
//…
voidfind2Char(constcharcpString[],constcharcChar)
{inti=0;
for(constchar*p=cpString;
*p!
p++,i++)//类型匹配概念;
dereferencing;
指针操作
if(*p==cChar){//dereferencing
2.(20分)
阅读下面的程序,写出main的输出。
inth(intiCount,constint*ipIndex,int&
irObj)
{
iCount%=2;
if(*ipIndex>
=5)
irObj+=iCount;
return*ipIndex+irObj;
main()
inti,j=1,k=2,m;
i<
10;
i++,j++){
m=h(i,&
j,k);
i=%2d,j=%2d,k=%2d,m=%2d.\n"
i,j,k,m);
i=0,j=1,k=2,m=3.
i=1,j=2,k=2,m=4.
i=2,j=3,k=2,m=5.
i=3,j=4,k=2,m=6.
i=4,j=5,k=2,m=7.
i=5,j=6,k=3,m=9.
i=6,j=7,k=3,m=10.
i=7,j=8,k=4,m=12.
i=8,j=9,k=4,m=13.
i=9,j=10,k=5,m=15.
3.(20分)
阅读下面类的定义,然后:
(1)在每个类中用注释描述该类所有数据成员的部能见度;
(2)在函数f中用示例性的语句描述这4个类所有数据成员的外部能见度;
(3)根据函数f,用图分别表示类B和类D对象的存储结构和初始状态(设:
sizeof(int)=sizeof(long)=sizeof(<
指针>
)=4*sizeof(char),字对齐规则为4*sizeof(char))。
extern"
C"
char*strncpy(char*,constchar*,size_t);
/*strncpy(t,s,n):
将字符数组s的前n个元素复制到字符数组t中*/
classA{
char*cpA1;
protected:
intiA2;
public:
long*lpA3;
A(char*p,inti,long*q):
cpA1(p),iA2(i),lpA3(q){}
//以下描述类A的部能见度(例:
cpA1:
可见/不可见;
…)……
};
classB:
protectedA{
intiB1;
charcpB2[5];
B(char*p,inti,long*q,intj,constchar*s):
A(p,i,q),iB1(j)
{strncpy(cpB2,s,4);
//以下描述类B的部能见度……
classC:
privateA{
intiC1;
charcpC2[6];
C(char*p,inti,long*q,intj,constchar*s):
A(p,i,q),iC1(j)
{strncpy(cpC2,s,5);
//以下描述类C的部能见度……
classD:
publicC{
intiD1;
charcpD2[16];
D(char*p,inti,long*q,intj,constchar*s,intk,constchar*t)
:
C(p,i,q,j,s),iD1(k){strncpy(cpD2,t,15);
//以下描述类D的部能见度……
f()
chars1[]="
Astring"
s2[]="
inaderivedclass"
s3[]="
inasubclass"
;
longg1=1000,g2=2000;
Aa(s1,1,&
g2);
Bb(s1,2,&
g1,3,s2);
Cc(s1,3,&
g1,4,s2);
Dd(s1,4,&
g2,5,s2,6,s3);
/*以下插入示性语句。
例如:
a.cpA1;
//public(或private或protected)
*/
//cpA1:
可见;
iA2:
lpA3:
可见。
不可见;
iB1:
cpB2:
iC1:
cpC2:
//iD1:
cpD2:
/*示性语句:
a.cpA1;
//private
a.iA2;
//protected
a.lpA3;
//public
b.cpA1;
b.iA2;
b.lpA3;
//protected
b.iB1;
//private
b.cpB2;
c.cpA1;
c.iA2;
c.lpA3;
c.iC1;
c.cpC2;
d.cpA1;
d.iA2;
d.lpA3;
d.iC1;
d.cpC2;
d.iD1;
d.cpD2;
4.(15分)
用C++语言定义MyString(包括成员函数的实现代码),使之能符合下面程序及在注释中描述的运行结果的要求:
MyStrings1="
0123456789"
s2(5),s3;
s1.display();
//此时显示出:
<
0123456789>
s2.display();
//此时显示出(<
>
之间是五个空格):
>
s3.display();
s3=s1;
s2=s1[2];
23456789>
s3=s2++;
3456789>
classMyString{
charcpBody[81];
public:
MyString(constchar*p=NULL);
MyString(inti);
MyString&
operator=(constMyString&
s)
{strncpy(cpBody,s.cpBody,80);
return*this;
operator[](inti);
operator++(inti)
{staticMyStrings;
s=*this;
*this=(cpBody[0]==‘\0‘)?
*this:
(*this)[1];
returns;
voiddisplay(){printf("
<
%s>
\n"
cpBody);
};
MyString:
:
MyString(constchar*p)
{
if(p==NULL)
cpBody[0]=‘\0‘;
else
strncpy(cpBody,p,80);
MyString(inti)
{intj;
for(j=0;
j<
i&
&
80;
j++)
cpBody[j]=‘‘;
cpBody[j]=‘\0‘;
MyString&
operator[](inti)
{staticMyStrings;
intj;
s=*this;
for(j=i;
cpBody[j]!
s.cpBody[j-i]=s.cpBody[j];
s.cpBody[j-i]=‘\0‘;
returns;