面向对象程序设计C++课后题答案(2)

2020-05-05 13:17

第二章::C++基础

[2_1]简述C++的主要特点

(1)C++保持与C的兼容,用C编写的软件可以用到C++中。

(2)用C++编写的程序可读性好,代码结构更合理,可直接地在程序中映射问 题空间的结构。

(3)生成代码的质量高。

(4)软件的可重用性、可扩充性、可维护性和可靠性有了明显的提高,从而节省了开发费用和时间。

(5)支持面向对象的机制,可方便地构造出模拟现实问题的实体和操作。 [2_2]下面是一个C程序,改写它,使它采用C++风格的i/o语句 改写如下:

#include main()

{ int a,b,d,min;

cout<<”enter two numbers: “; cin>>a; cin>>b; min=a>b?b:a; for(d=2;d

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

{ cout<<”no common denominators\\n”; return 0; }

6

cout<<”the lowest common denominator is “<

[2_3]测试下面的注释是否有效?

此注释有效,单行注释中可以嵌套/*……….*/方式的注释。 [2_4]以下简单的C++程序不可能编译通过,为什么?

原因是:在程序中,当一个函数的定义在后,而对它的调用在前时,必须将该函数的原型写在调用语句之前,而在本程序中缺少函数原型语句。在语句:#include 后加上语句sum(int a,int b);就可以通过了。

[2_5](1)答:这两个函数原形是等价的,因为函数原型中的参数名可以缺省。 (2)答:这两个函数的第一行是不等价的,函数的第一行中必须包含参数名。 (3)答:这两个函数原型是等价的,因为在函数原型中未注明参数,C++认为该函数的参数表为空(void)

[2_6]答:输出结果为:10 20 因为f函数的参数是引用,所以修改k的值有效。 函数调用后,主函数中k的值变为10。由于m是对函数的引用,当m被赋 值为20时,k的值也变为20。

[2_7] 举例说明可以使用const替代#define以消除#define的不安全性 答:例如:#include #define A 2+4 #define B A*3 void main()

{ cout<

上面程序的运行结果是14而不是18,但很容易被认为是18。用const替代#define就能得到正确结果,从而消除了#define的不安全性。 #include

7

const A=2+4; const B=A*3; void main()

{ cout<

[2_8]答:使用内联函数的优点主要有两个:一是能加快代码的执行,减少调用 开销;二是能消除宏定义的不安全性。

[2_9] 用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的 空间中。

答:#include #include “stdio.h” void main()

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

*(p+1)=1;//前面两个空间赋值1 cout<<*p<<”\\t”<<*(p+1)<<”\\t”; p=p+2;//p指向第三个空间 for(i=3;i<=20;i++) { *p=*(p-1)+*(p-2); cout<<*p<<”\\t”; if(i%5==0) cout<

结果:1 1 2 3 5

8

8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

[2_10] 建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()三次, 让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准 库函数sqrt()) #include #include

int sroot(int );long sroot(long);double sroot(double); double sqrt();//声明开方函数sqrt() void main()

{ int i,x;long l,y;double d,z; cin>>i; cin>>l; cin>>d; x=sroot(i); y=sroot(l); z=sroot(d); cout<

int sroot(int i)

{ return sqrt(i); } //i是整数 long sroot(long l)

{ return sqrt(l); } //l是长整型 double sroot(double d) { return sqrt(d); } //d是双精度 //敲进9 16 25 //输出3 4 5

9

习题[2_11] 编写C++风格的程序,解决百钱问题,将一元人民币兑换成1、2、5分的硬币,有多少种换法? #include void 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<<”\\t”<

cout<<”sum is “<

习题[2_12] 编写C++风格的程序,用二分法求解f(x)=0的根 #include #include inline float f(float x)

{ return 2*x*x*x-4*x*x+3*x-6; } void main()

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

cout<<”pleass two number:”<>left>>right; yl=f(left); yr=f(right);

10


面向对象程序设计C++课后题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四川省石室中学2019届高三一诊模拟数学(文)试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: