浙江大学城市学院C++程序设计A答案.docx
《浙江大学城市学院C++程序设计A答案.docx》由会员分享,可在线阅读,更多相关《浙江大学城市学院C++程序设计A答案.docx(18页珍藏版)》请在冰豆网上搜索。
![浙江大学城市学院C++程序设计A答案.docx](https://file1.bdocx.com/fileroot1/2022-11/15/ab7c26ae-9ab2-48c6-8ec5-c9e7bb2312bb/ab7c26ae-9ab2-48c6-8ec5-c9e7bb2312bb1.gif)
浙江大学城市学院C++程序设计A答案
年级:
_____________专业:
_____________________班级:
_________________学号:
_______________姓名:
__________________
…………………………………………………………..装………………….订…………………..线………………………………………………………
诚信应考考出水平考出风格
浙江大学城市学院
2012—2013学年第二学期期末考试试卷A
《C++程序设计》
开课单位:
信电分院;考试形式:
开 卷;考试时间:
_2013__年_07__月_1_日;
所需时间:
分钟
题序
一
二
三
四
五
六
七
八
总分
得分
评卷人
得分
一._判断题_(本大题共__10____题,每题__5____分,共__50_分。
判断1分,写出理由或正确写法4分)
1.(×)有如图所示的类成员访问示意图,其含义是正确的。
理由是:
类中的公有成员是提供给外部访问的
2.(√)有如下类定义:
classarea
{
private:
intx;
inty;
public:
voidarea(inta,intb);
voidprint();
intareas();
};
在main函数中有语句:
area A(x,y),B;
在类及类对象定义中存在错误。
理由是:
(1)构造函数不允许有返回值,
(2)还需要有一个默认值的构造函数
area(inta,intb);
area();
请把正确的写法写在右边的空白处。
3.(×)下列程序编译不可能通过。
#include
voidmain()
{
intnum=100;
constint&x=num;
cout<num=num+20;
cout<cout< }
理由是程序没有错误,num是个变量,在程序中是可改变的。
如有问题,把正确的写法改在程序中。
4.(×)阅读下列程序,程序中存在那些错误,并请改正。
#include
classAAA
{
private:
inti;
AAA(intid);
~AAA();
public:
voidshow();
};
voidAAA:
:
show()
{
cout<
}
AAA:
:
AAA(intid)
{
i=id;
cout<<"AAAobject"<
}
AAA:
:
~AAA()
{
cout<<"AAAobject"<
}
voidmain()
{
AAAx
(1),y
(2);
cout<<"AAAobjectx.i";
x.show();
cout<<"AAAobjecty.i";
y.show();
}
答:
构造函数与析构函数不能定义为私有的,程序改为:
classAAA
{
private:
inti;
public:
AAA(intid);
~AAA();
voidshow();
};
5.(×)阅读下列程序,程序输出的结果为:
dateconstructorcalledyear2012month5day15
dateconstructorcalledyear2013month7day1
今天是2012年5月15日
dateconstructorcalledyear2013month7day1
dateconstructorcalledyear2012month5day15
Pressanykeytocontinue
理由是析构函数不能重载去掉语句:
~date(inta){};。
如有问题,把正确的写法改在程序中。
源程序为:
#include
classdate
{
private:
intyear,month,day;
public:
date(inty,intm,intd);
date();
~date();
~date(inta){};//析构函数不能重载
voidprint();
};
date:
:
date()//构造函数定义在类外的例子
{
year=2013;
month=07;
day=01;
cout<<"dateconstructorcalledyear"<}
date:
:
date(inty,intm,intd)
{
year=y;
month=m;
day=d;
cout<<"dateconstructorcalledyear"<}
date:
:
~date()//构造函数定义在类外的例子
{
cout<<"dateconstructorcalledyear"<}
voiddate:
:
print()
{
cout<<"今天是"<}
intmain()
{
dateDATE(2012,5,15),DATE1;
DATE.print();
return1;
}
6.(×)下列定义了一个完整的类,可以编译通过。
理由是不能定义对象C,把对象C与调用成员函数删除。
如有问题,把正确的写法改在程序中。
intmain()
{
dateA(2012,5,15),B(2013);
A.print();
B.print();
return0;
}
#include
classdate
{
private:
intyear,month,day;
public:
date(inty,intm,intd);//date(inty=2012,intm=01,intd=01)
voidprint();
};
date:
:
date(inty=2012,intm=01,intd=01)//构造函数定义在类外
{
year=y;
month=m;
day=d;
cout<<"dateconstructorcalled"<}
voiddate:
:
print()
{
cout<<"今天是"<}
intmain()
{
dateA(2012,5,15),B(2013),C();
A.print();
B.print();
C.print();
return0;
}
7.( × )下列程序编译能通过,程序执行的结果为1200。
理由是fun函数中不能用i,j
把fun改为:
doublefun(){returnx*y;}并且程序执行结果为:
1800。
如有问题,把正确的写法改在程序中。
#include
classAAAA
{
protected:
doublex,y;
public:
AAAA(doublei,doublej){x=i;y=j;}
doublefun(){returni*j;}
};
classBBBB:
publicAAAA
{
private:
doublez;
public:
BBBB(doublex,doubley,doubler):
AAAA(x,y)//fun函数中不能用i,j
{z=r;}
doublefun(){returnx*z+10*y;}
};
voidmain()
{
AAAA*p;
BBBBCBBBB(30,60,20);
p=&CBBBB;
doublea=p->fun();
cout<<"ThefunoftheBBBBis"<}
8.( × )下列程序编译能通过。
理由是B类构造函数出错,它是容器类的对象,
B(inti,intj,intk):
A(i,j),aa(j,k)//构造函数中应该用容器类的对象
{
b=k;
}
。
如有问题,把正确的写法改在程序中。
#include
classA
{
protected:
inta,b;
public:
A(inti,intj)
{a=i;b=j;}
voidPrint()
{
cout<}
intGeta(){returna;}
};
classB:
publicA
{
private:
intb;
Aaa;
public:
B(inti,intj,intk):
A(i,j),A(j,k)//构造函数中应该用容器类的对象
{
b=k;
}
voidPrint(){};
};
voidmain()
{
Bbb(1,2,3);
}
9.( )有下列基类与派生类定义的程序段:
#include
classA
{
protected:
inta;
public:
A(intx){a=x;}
voidvirtualshow(){cout<<"AAAAAAAAAAAAAAAA"<};
classAB:
virtualpublicA
{
protected:
intab;
public:
AB(intx,inty):
A(x)
{ab=y;}
};
classAC:
virtualpublicA
{
protected:
intac;
public:
AC(intx,inty):
A(x)
{ac=y;}
};
classABC:
publicAB,publicAC
{
protected:
intabc;
public:
ABC(intx,inty,intz):
AB(x,y),AC(x,y) //A(z)