C++习题答案-2C+习题答案-2.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C习题答案-2C习题答案-2

第二章[2_1]简述C++的主要特点 (1)C++保持与C的兼容,C代码不经修改就可以为C++所用,用C编写的众多的库函数和实用软件可以用于C++中。 (2)用C++编写的程序可读性好,代码结构更合理, (3) (4)面向对象的机制,[2_2]下面是一个C程序,改写它,使它采用C++风格的i/o语句 改写如下: #include iostream main() { int a,b,d,min; cout”enter two numbers: “; cina; cinb; min=ab?b:a; for(d=2;dmin;d++) if((a%b)==0)((b%d)==0)) break; if(d==min) { cout”no common denominators\n”; return 0; } cout”the lowest common denominator is “endld; return 0; } [2_3]测试下面的注释是否有效? 此注释有效,单行注释中可以嵌套/*……….*/方式的注释。 [2_4]以下简单的C++程序不可能编译通过,为什么? 原因是:在程序中,当一个函数的定义在后,而对它的调用在前时,必须将该函数的原型写在调用语句之前,而在本程序中缺少函数原型语句。在语句:后加上函数原型语句sum(int a,int b);就可以通过了。 [2_5] (1)答:这两个函数原是等价的,因为函数原型中的参数名可以缺省。 (2)答:这两个函数的第一行是不等价的,函数的第一行中必须包含参数名。[2_6]----[2_17] D D A A B A C B D C D C [2_18] 答:运行结果为:101 说明:在语句::i=i+1;中赋值号左边::i的i单元是全局变量,赋值号右边的i单元是局部变量i。所以执行该语句的结果是将局部变量i的值+1(101)赋值给全局变量i [2_19] 答:结果是:10 10 说明:函数f(m,int n)中的第一个参数是引用,引用参数是一种按地址传递参数的方法,对其的调用是传地址调用;而第二个参数是变量参数,对它的调用是通常的传值调用。所以运行后,a的值被改为10,b的值不变,仍为10 [2_20] 答:输出结果为:10 20 因为f函数的参数是引用,所以修改k的值有效。 函数调用后,主函数中k的值变为10。由于m是对函数的引用,当m被赋值为20时,k的值也变为20。 [2_21] 举例说明可以使用const替代#define以消除#define的不安全性 答:例如:#include iostream using namespace std; #define A 2+4 #define B A*3 int main() { coutBendl; return 0; } 上面程序的运行结果是14而不是18,但很容易被认为是18。用const替代#define就能得到正确结果,从而消除了#define的不安全性。 #include iostream const A=2+4; const B=A*3; int main() { coutBendl; return 0; } 运行结果为18。[2_22] 用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。 答:#include iostream using namespace std; int main() { int *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”; //”\t”表示的就是键盘上的Tab键,称为跳格键,一般等于8个空格的长度 if(i%5==0) coutendl; p++;//指向下一个空间 }} 结果:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 [2_23] 建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()三次, 让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准 库函数sqrt()) #include iostream #include math using namespace std; double sroot(int i) { return sqrt(i); } //i是整数 double sroot(long l) { return sqrt(l); } //l是长整型 double s

文档评论(0)

ganqludp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档