- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)