ly新标准C++程序设计教材120章课后题答案Word格式.docx
《ly新标准C++程序设计教材120章课后题答案Word格式.docx》由会员分享,可在线阅读,更多相关《ly新标准C++程序设计教材120章课后题答案Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
D
5•以下程序段不正确的是(A)o
A.intmain(){
classA{intv;
Aa;
=3;
return0;
B.intmain(){
classA{public:
A*p;
};
=&
a;
return0;
C.intmain(){
A*p=newA;
p->
v=4;
deletep;
return0;
D.immain(){
Aa:
a.p=newA;
delete;
A
6•实现一个学生信息处理程序。
输入:
姓名,年龄,学号(整数)。
第一学年平均成绩•
第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
输岀:
姓名,年龄,学号,
4年平均成绩。
例如:
Tom18781780809070
输出:
Tom,18,7817,80
要求实现一个代表学生的类,并非所有成员变量都是私有的。
#include<
iostream>
#include<
cstdlib>
面程序的输岀结构是:
5,5
请填空:
usingnamespacestd;
classBase{
intk;
Base(intn):
k(n){
}
classBig{
Baseb;
Big{
intmain(){
Biga1(5);
Biga2=a1;
cout<
vvv"
"
vvcout<
vvreturn0;
(intn):
v(n),b(n)
(Big&
x):
v,b完成附录“魔静世界大作业”中提到的第一阶段作业
(省略)
第13章
,则该成员函数的
1如果将运算符“[]”重载为某个类的成员运算符(也即成员函数)参数个数是()。
A.0个B.1个C.2个D.3个
2
•如果将运算符“*”重载为菜个类的成员运算符(也即成员函数)参数个数是()。
A.0个B.1个C.2个D.0个或1个均可答案:
3•下面程序的输岀是
3+4i
5+6i
请补充Complex类的成员函数,不能加成员变量。
cstring>
classComplex{
doubler,i;
voidPrint(){
coutv<
rvv"
+"
vvivv"
i"
vvendl;
abcd-efgh-abcd-
2.abcd-
3.
3.abcd-efgh-
4.efgh-
5.c
6.abcd-
7.ijAl-
8.ijAl-mnop
9.qrst-abcd-
10.abcd-qrst-abcd-uvwxyz
about
big
me
take
abed
qrst-abed-
estdlib>
string>
#include《algorithm〉
classMyString:
publicstring{
MyString():
string(){};
MyString(constchar*s):
string(s){};
MyString(conststring&
s):
string(s){};
MyStringoperator。
(ints,intl){
returnthis->
substr(s,l);
intmain()
{
MyStrings1("
abcd-"
),s2,s3("
efgh-"
),s4(s1);
MyStringSArray[4]={"
big"
me"
about"
take"
cout<
<
"
1."
<
si<
s2<
s3<
s4<
endl;
s4=s3;
s3=si+s3;
cout<
2."
3."
4."
s3<
5."
s4<
6."
s1[2]<
s2=si;
si="
ijkl-"
;
si[2]='
A'
7."
8."
si+="
mnop"
9."
s4="
qrst-"
+s2;
10."
si=s2+s4+"
uvw"
+"
xyz"
11."
s1<
sort(SArray,SArray+4);
for(inti=0;
i<
4;
i++)
SArray[i]<
成附魔兽世界作业中的的二阶段。
第15章
1•以下说法正确的是()
A.在虚函数中不能使用this指针
B.在构造甬数中调用虚函数,不是动态联编
C.抽象类的成员函数都是纯虚函数
D.构造函数和析构函数都不是虚构函数
2•写岀下面程序的输岀结果
A(){
virtualvoidfunc(){
v"
:
func"
v<
endl;
~A(){
virtualvoidfund(){
fund"
classB:
publicA{
B(){
func();
voidfun(){
~B(){
fund();
classC:
publicB{
C(){}
voidfunc(){
C:
~C(){
voidfund(){
Cc;
func
fund
3.写出下面程序的输出结果。
virtual〜A(){
DestructA"
virtual~B(){
coutvv"
DestructB"
vvendl;
virtual~C(){
DestructC"
A*pa=newC;
deletepa;
DestructC
DestructB
DestructA
4.写出下面程序的输出结果:
fun"
C(){
A*pa=newB();
pa_>
fun();
B*pb=newC();
pb->
fun
5•下面程序的输岀结果是
intnVal;
voidFun(){cout<
Fun"
voidDo(){coutvv"
Do"
virtualvoidDo(){
B:
voidDo(){
voidFun(){
coutvv'
voidCall(B&
p){
();
Call(c);
system("
PAUSE"
);
Fun
Do
6•下面程序的输岀结果是
destructorB
destructorA
请完整写出classA。
限制条件:
不能为classA编写构造函数。
"
destructorB"
A*pa;
pa=newB;
cout«
destructorA"
«
7•下面的程序输岀结果是
virtualvoidDo(){cout<
voidFun(){coutvv'
voidCall(){
Fun();
Do();
intmain(){
Call(newA());
Call(newC());
A*p
8•完成附录魔兽世界大作业中提到的终极版本作业。
(省略)
第16章
1.C++标准类库中有哪几个流类,用途分别如何它们之问的关系如何
c++标准库中有istream,ostream,ifstream,ofstream,iostream,fstream等流类。
istream是用于输入的流类:
ostream是用于输出的流类:
ifstream是用于从文件读取数据的类:
ofstream是用于向文件写入数据的类:
iostream是既能用千输入,又能输出的类:
fstream是既能从文件读取数据,又能向文件写入数据的类。
ios是个抽象基类,它派生出istream和ostream;
istream派生出ifstream,ostream派生出ofstream,istream和ostream共同派生了iostream;
iostream派生出fstream。
2cin是哪个类的对象cout是哪个类的对象
cln是istream类的对象:
cout是ostream类的对象。
3编写程序,读取一行文字,然后将此行文字颠倒后输岀
输人样倒:
Theseare100dogs
输出样例:
.sgod001eseht
>
voidswap(char*s){
intlen,i;
chartmp;
len=strlen(s)-1;
for(i=0;
i<
=len/2;
++i){
tmp=s[i];
s[i]=s[len-i];
s[len-i]=tmp;
intmain(void){
chars[]="
Thereare100dods."
vsvv"
\n"
swap(s);
coutvvsvvendl;
4•编写程序,输入若干个实数,对于每个实数,先以非科学计数法输岀,小数点后面保
留5位有效数字;
再以科学计数法输出,小数点后面保留7位有效数字。
输入以Ctrl+Z
结束。
输入样例:
输出样例:
+001
+005
usingnamespacestd;
intmain()
doublenum;
while(cin>
num){
cpp处理后的结果生成为result2.cpp文件
输入样例:
iomanip>
usingnamepsacestd;
/*
testsample
*/
voidfunc(intn){
if(n){
”infunc”<
intmain()Pleasedoubleit,Thisisafile.
Pleasedoubleid.
fstream>
ifstreamin("
ofstreamout("
stringline;
stringcontent;
if(in)dat.要求是二进制文件,文件中的每个记录和上述类的对
象相对应。
students.dat最初不存在。
程序可以多次运行,如果第一敬运行程序后
students.dat生成了,则以后再运行时,程序应基干已经存在的students.dat进行操作。
程序运行时
能接受以下几种命令:
1)Add姓名学号成绩
例如IAddTom1234567
添加学生信息•姓名和学号都不会包含空格。
姓名由最多9个字母组成-学号是整
数。
可能重名,但学号不会重复。
如果发现相同学号的学生已经存在,则不添加学生信息,
而是输出:
“Aireadyentered”。
2)Search姓名
根据姓名查找学生信息,并输岀。
如果有重名的,把重名的学生信息全部输岀。
辅岀格
式为;
每个学生信息输出为一行,查不到则输出“NotFoundH。
3)Search学号
根据学号查找学生信息,并输出。
输出格式为:
姓名学号成绩
每个学生信息输出为一行。
查不到则输出“NotFound'
。
4)Modify学号成绩
根据学号修改学生的成绩并输出“Done。
如果找不到该学号的学生,则输出“Not
Found'
假定学生记录非常多,所以不能采取用一个大数组把全部学生记录都读取到内存的
答案:
#include<
cstdio>
classStudent
charname[50];
intstuID;
doublegrades;
voidAdd()
(name,50);
cin>
stuID>
grades;
voidshowData()
grades;
name<
stuID<
voidsetdata(){cout<
Done"
/**functiontowriteinabinaryfile.
voidwrite_record()
ofstreamoutFile;
("
ios:
binary|ios:
app);
Studentobj;
■
((char*)&
obj,sizeof(obj));
*functiontodisplayrecordsoffile
voiddisplay(){
ifstreaminFile;
binary);
while((char*)&
obj,sizeof(obj))){
();
*functiontosearchanddisplayfrombinaryfile
voidsearch(intn){
if())
*functiontomodifyarecord
voidmodify_record(intn){
fstreamfile;
ios:
in|ios:
out);
obj,sizeof(obj))){
if()){
\nEnterthenewdetailsofstudent"
intpos=-1*sizeof(obj);
(pos,ios:
cur);
下列函数模板中定义正确的是().
A.template<
classT1,classT2>
T1fun仃1,T2){returnTl+T2;
B.templatevclassT>
Tfun(Ta){returnT+a;
C.template<
classT1,classT2>
Tlfun(T1,T2){returnT1+T2;
D.templatevclassT>
Tfun(Ta,Tb){returna+br;
}答案:
2.下列类模板中定义正确的是().
classT1,ciaasT2>
classA:
{
T1b;
intfun(inta){returnT1+T2;
B.template<
classA{
intT2;
T1fun(T2a){returna+T2;
claasA{