浙大远程面向对象程序设计离线作业答案解析.docx
- 文档编号:5302931
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:85
- 大小:876.31KB
浙大远程面向对象程序设计离线作业答案解析.docx
《浙大远程面向对象程序设计离线作业答案解析.docx》由会员分享,可在线阅读,更多相关《浙大远程面向对象程序设计离线作业答案解析.docx(85页珍藏版)》请在冰豆网上搜索。
浙大远程面向对象程序设计离线作业答案解析
浙江大学远程教育学院
《面向对象程序设计》课程作业
姓名:
董建良
学号:
715005012034
年级:
2015年秋
学习中心:
杭州学习中心
—————————————————————————————
第2章
【2.3】测试下面的注释(它在C++风格的单行注释中套入了类似于C的注释)是否有效。
//thisisastrange/*waytodoacomment*/
答:
此注释有效,单行注释中可以嵌套/*……*/方式的注释。
【2.4】以下这个简短的C++程序不可能编译通过,为什么?
#include
usingnamespacestd;
intmain()
{inta,b,c;
cout<<"Entertwonumbers:
";
cin>>a>>b;
c=sum(a,b);
cout<<"sumis:
"< return0; } sum(inta,intb) {returna+b; } 答: 不可能通过编译,sum的使用在其声明之前是非法的,应增加一行sum(inta,intb);放在usingnamespacestd;之后。 【2.5】回答问题。 (1)以下两个函数原型是否等价: floatfun(inta,floatb,char*c); floatfun(int,float,char*); (2)以下两个函数的第一行是否等价: floatfun(inta,floatb,char*c); floatfun(int,float,char*); 答: (1)两个函数原型等价,因为函数原型中的参数名可以缺省。 (2)两个函数的第一行不等价,因为函数的第一行必须包括参数名。 【2.6】下列语句中错误的是(D)。 A.int*p=newint(10);B.int*p=newint[10]; C.int*p=newint;D.int*p=newint[40](0); 【2.7】假设已经有定义“constchar*constname="chen";”下面的语句中正确的是(D)。 A.name[3]='a';B.name="lin"; C.name=newchar[5];D.cout< 【2.8】假设已经有定义“char*constname="chen";”下面的语句中正确的是(A)。 A.name[3]='q';B.name="lin"; C.name=newchar[5];D.name=newchar('q'); 【2.9】假设已经有定义“constchar*name="chen";”下面的语句中错误的是(A)。 A.name[3]='q';B.name="lin"; C.name=newchar[5];D.name=newchar('q'); 【2.10】重载函数在调用时选择的依据中,(B)是错误的。 A.函数名字B.函数的返回类型 C.参数个数D.参数的类型 【2.11】在(A)情况下适宜采用内联函数。 A.函数代码小,频繁调用B.函数代码多,频繁调用 C.函数体含有递归语句D.函数体含有循环语句 【2.12】下列描述中,(C)是错误的。 A.内联函数主要解决程序的运行效率问题 B.内联函数的定义必须出现在内联函数第一次被调用之前 C.内联函数中可以包括各种语句 D.对内联函数不可以进行异常接口声明 【2.13】在C++中,关于下列设置默认参数值的描述中,(B)是正确的。 A.不允许设置默认参数值 B.在指定了默认值的参数右边,不能出现没有指定默认值的参数 C.只能在函数的定义性声明中指定参数的默认值 D.设置默认参数值时,必须全部都设置 【2.14】下面的类型声明中正确是(D)。 A.int&a[4];B.int&*p; C.int&&q;D.inti,*p=&i; 【2.15】下面有关重载函数的说法中正确的是(C)。 A.重载函数必须具有不同的返回值类型 B.重载函数形参个数必须不同 C.重载函数必须有不同的形参列表 D.重载函数名可以不同 【2.16】关于new运算符的下列描述中,(D)是错误的。 A,它可以用来动态创建对象和对象数组 B.使用它创建的对象或对象数组可以使用运算符delete删除 C.使用它创建对象时要调用构造函数 D.使用它创建对象数组时必须指定初始值 【2.17】关于delete运算符的下列描述中,(C)是错误的。 A.它必须用于new返回的指针 B.使用它删除对象时要调用析构函数 C.对一个指针可以使用多次该运算符 D.指针名前只有一对方括号符号,不管所删除数组的维数 【2.18】写出下列程序的运行结果。 #include usingnamespacestd; inti=15; intmain() {inti; i=100; : : i=i+1; cout<<: : i< return0; } 答: 运行结果是 101 因为: : i=i+1;中: : i是全局变量,i是局部变量。 【2.19】写出下列程序的运行结果。 #include usingnamespacestd; voidf(int&m,intn) {inttemp; temp=m; m=n; n=temp; } intmain() {inta=5,b=10; f(a,b); cout< return0; } 答: 运行结果是 1010 因为函数f(int&m,intn)中第一个参数是引用参数,引用函数是一种按地址传递参数的方法,对它的调用是传地址调用,第二个参数是变量参数,对它的调用是传值调用。 【2.20】分析下面程序的输出结果。 #include usingnamespacestd; int&f(int&i) {i+=10; returni; } intmain() {intk=0; int&m=f(k); cout< m=20; cout< return0; } 答: 运行结果是 10 20 因为函数f参数是变量的引用,对它的调用是传地址调用,函数f调用后,k的值变为10,而m是对函数f的引用,m被赋值20,k的值也变为20. 【2.21】举例说明可以使用const替代#define以消除#define的不安全性。 答: 例如: #include #defineA1+2 #defineBA*4 voidmain() {cout< 上面程序的运行结果是9而不是12,但很容易被认为是12。 如果用const替代#define就能得到正确结果,从而消除了#define的不安全性。 #include constA=1+2; constB=A*4; voidmain() {cout< 运行结果为12。 【2.22】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项,并存储到动态分配的空间中。 答: #include intmain() { int*p=newint[20]; *p=1; *(p+1)=1; cout<<*p<<"\t"<<*(p+1)<<"\t"; p=p+2; for(inti=3;i<=20;i++) { *p=*(p-1)+*(p-2); cout<<*p<<"\t"; if(i%5==0)cout< p++; } return0; } 【2.23】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二次方根。 重载sroot()3次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt())。 答: #include #include doublesroot(inta) {returnsqrt(a); } doublesroot(longb) {returnsqrt(b); } doublesroot(doublec) {returnsqrt(c); } intmain() { inti=67; longl=6789; doubled=67.89; cout<<"i的二次方根是: "< cout<<"l的二次方根是: "< cout<<"d的二次方根是:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙大 远程 面向 对象 程序设计 离线 作业 答案 解析