第二章::C++基础
[2_1]简述C++的主要特点
(1)C++保持与C的兼容,用C编写的软件可以用到C++中。
(2)用C++编写的程序可读性好,代码结构更合理,可直接地在程序中映射问 题空间的结构。
(3)生成代码的质量高。
(4)软件的可重用性、可扩充性、可维护性和可靠性有了明显的提高,从而节省了开发费用和时间。
(5)支持面向对象的机制,可方便地构造出模拟现实问题的实体和操作。 [2_2]下面是一个C程序,改写它,使它采用C++风格的i/o语句 改写如下:
#include
{ 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 [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 { 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 { 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 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 cout<<100-5*i-2*j<<”\\t”< cout<<”sum is “< 习题[2_12] 编写C++风格的程序,用二分法求解f(x)=0的根 #include { return 2*x*x*x-4*x*x+3*x-6; } void main() { float left,right,middle,ym,yl,yr; cout<<”pleass two number:”< 10