C++面向对象程序设计习题解答与上机指导(第二版)源程序

更新时间:2023-11-06 05:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++面向对象程序设计习题解答与上机指导(第2版)

习题参考答案源代码

使用源程序的几点注意事项

(1) 由于源程序在复制、编辑、解压缩等过程中可能引起部分符号(主要是标点符号,如分号、冒号、逗号、引号)的字体、半全角等发生变化,在编译时可能被检出语法错误,只要使用“替换”功能,纠正后即能顺利运行。

(2) 有的C++系统(如Visual C++6.0)没有完全实现C++标准,它所提供的不带后缀的.h的头文件不支持友元运算符重载函数,在Visual C++6.0中编译会出错,这时可采用带后缀的.h头文件。将程序中的

#include using namespace std; 修改成

#include 即可顺利运行。

第2章 C++基础

【2.2】下面是一个C程序,改写它,使它采用C++风格的I/O语句。 #include int main()

{ int a,b,d,min;

printf(\ scanf(\ min=a>b? b:a;

for (d=2; d

if (((a%d)==0)&&((b%d)==0)) break; if (d==min)

{ printf(\ return 0; }

printf(\ return 0; }

【解】

#include using namespace std; int main()

{ int a,b,d,min;

cout<<\cin>>a; cin>>b;

1

min=a>b? b:a;

for (d=2; d

if (((a%d)==0)&&((b%d)==0)) break; if (d==min)

{ cout<<\ return 0; }

cout<<\ return 0; }

【2.24】写出下列程序的运行结果。#include using namespace std; int i=15; int main() { int i; }

运行结果:101

Please any key to continue。

【2.25】写出下列程序的运行结果。#include using namespace std; void f(int &m,int n) { int temp; temp=m; m=n; n=temp; }

int main()

{ int a=5,b=10; f(a,b);

cout<

结果:10 10

Please any key to continue。

【2.26】分析下面程序的输出结果。#include using namespace std;

2

i=100; ::i=i+1;

cout<<::i<

int &f(int &i) { i+=10; return i;

}

int main() { int k=0; int &m=f(k); cout<

cout<

return 0; }

运行结果:10 20

Please any key to continue。

【2.27】 编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。

【解】实现本题功能的程序如下: #include using namespace std; int main()

{ int *p=new int[20]; //动态分配20个整型内存空间 *p=1;

*(p+1)=1; //对前面2个内存空间赋值1 cout<<*p<<\

p=p+2; //p指向第3个内存空间 for (int i=3;i<=20;i++) { *p=*(p-1)+*(p-2); cout<<*p<<\

if (i%5==0) cout<

p++; //p指向下一个内存空间; }

return 0; }

【2.28】 编写一个C++风格的程序,建立一个被称为sroot的函数,返回其参数的二次方根。重载函数sroot三次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt)。

【解】实现本题功能的程序如下: #include #include using namespace std; double sroot(int i) { return sqrt(i);

3

}

double sroot(long l) { return sqrt(l); }

double sroot(double d) { return sqrt(d); }

int main() { int i=12; long l=1234; double d=12.34;

cout<<\的二次方根是:\cout<<\的二次方根是:\cout<<\的二次方根是:\return 0; }

【2.29】 编写一个C++风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法?

【解】实现本题功能的程序如下: #include using namespace std; int main()

{ int i,j,sum=0;; for(i=0;i<=20;i++)

for (j=0;j<=50;j++) if (100-5*i-2*j>=0) { sum++;

cout<<100-5*i-2*j<<\

}

cout<<\ return 0;

}

【2.30】编写一个C++风格的程序,输入两个整数,将它们按由小到大的顺序输出。要求使用变量的引用。

【解】实现本题功能的程序如下: #include using namespace std; int main()

{ void change(int &,int &); int a,b; cin>>a>>b;

if(a>b)change(a,b); cout<

4

}

void change(int &a1,int &b1) { int temp; temp=a1; a1=b1; b1=temp; }

【2.31】编写C++风格的程序,用二分法求解f(x)=0的根。 【解】实现本题功能的程序如下: #include #include using namespace std;

inline float f(float x) { return 2*x*x*x-4*x*x+3*x-6; }

int main()

{ float left,right,middle,ym,yl,yr;

cout<<\接收输入,确定第一组数据区域 cin>>left>>right; yl=f(left); yr=f(right); do

{ middle=(right+left)/2; ym=f(middle); if (yr*ym>0) { right=middle; yr=ym; } else

{ left=middle; yl=ym; }

} while (fabs(ym)>=1e-6); cout<<\return 0; }

第3章 类和对象(一)

【3.18】写出下面程序的运行结果。 #include using namespace std; class test { public:

5

本文来源:https://www.bwwdw.com/article/7cp2.html

Top