杜茂康版C++部分习题参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
部分习题解答
第2章习题
2. 读程序,写出程序的执行结果
(1)若输入数据“12 345 634 3214”并按Enter键后,写出程序的输出结果。(2)
第三章习题
9. 指出下面程序的错误。
int &f1(int x=0,int y){ //y应该有缺省值
return x*y; //只能返回整型变量名,因函数返回的是引用}
C++.NET面向对象程序设计
int *f2(int a;int b=1){ //应以逗号为参数间隔符
int t=a*b;
return &t; //t的生命期短于f2函数名,程序会因此出现不定的函数值}
void main(){
const r; //r是常量,当在定义是初始化
int &a,*p; //引用a当在定义时初始化
r=10;
a=r;
const char *pc1="dukang";
char *const pc2="dukang";
char const *pc3="dukang";
const char const*pc4="dukang";
pc1[2]='t'; //pc1所指内容为常量,不能修改
pc2[2]='t';
pc3[2]='t'; // pc3所指内容为常量,不能修改
pc4[2]='t'; //pc4所指内容为常量,不能修改
cout< cout< } 10. 读程序,写出程序的执行结果。 (1) (2) 第4章习题 6. 分析下面程序中的错误。 class X{ private: int a=0; //数据成员不能在声明类时赋初值 int &b; const int c; void setA(int i){ a=i; } X(int i){ a=i; } //构造函数必须在列表中提供b,c的初如化public: int X(){a=b=c=0;} //与类同名的函数只能是构造和析构函数,不能有返回类型 //b,c只能在构造函数初始化列表中初始化 X(int i,int j,int k){ a=i;b=j;c=k; }//b,c只能在构造函数初始列表中初始化 static void setB(int k){ b=k; } //静态成员函数不能访问非静态成员b setC(int k)const{ c=c+k; } //const成员函数不能修改数据成员c }; void main(){ X x1; //默认构函数为private,不能定义对象 X x2(3); X x3(1,2,3); //应用X类的私有构造函数定义对象,不允许 x1.setA(3); //访问调用私有成员,不允许 } 7. 读程序,写出程序运行结果。 (1) } (2) C++.NET面向对象程序设计 (3) 第5章习题 6. 指出下面程序中的错误。 #include //应增加using namespace std; class A{ int x; A(int a){ x=a; } public: setA(int y){ x=y; } }; class B:private A{ public: B(){ cout<<"B"< void main(){ A a1(2), a2; //不能定义a1,没有默认构造函数 A a3=a1; B b; b.setA(3); //在B中,setA被private继承方式更改为私有成员,不能访问 } 7. 读程序,分析程序的运行结果。 (1) (2) C++.NET面向对象程序设计 第6章习题 6. 读程序,写出程序运行的结果。 (1) 写出本程序的结果,并指出本程序存在的错误。 本程序执行过程中,由于x1,x2,x3三个对象的指针数据成员s都指向同一内存区域,在它们的生存期结束时,将调用析构函数,同一内存区域(即s所指向的区域)将被delete 3次,产生指针悬挂问题。 (2) 3) 第8章4-1 4-2 第9章 C++.NET面向对象程序设计6-1 6-2 6-3 6-4