浙大远程 - 面向对象程序设计的 - 离线作业答案

更新时间:2023-10-10 15:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浙江大学远程教育学院 《面向对象程序设计》课程作业

姓名: 年级:

学 号: 学习中心:

—————————————————————————————

第2章

【2.3】 测试下面的注释(它在C++风格的单行注释中套入了类似于C的注释)是

否有效。

//this is a strange /*way to do a comment*/

答:此注释有效,单行注释中可以嵌套 / * ?? * /方式的注释。

【2.4】 以下这个简短的C++程序不可能编译通过,为什么? #include

using namespace std; sum(int a,int b) int main() {int a,b,c;

cout<<\ cin>>a>>b; c=sum(a,b); cout<<\ return 0;

}

sum(int a,int b) { return a+b; }

答:不可能通过编译.在using namespace std;后面加上sum(int a,int b)

就可以通过。

【2.5】 回答问题。

(1) 以下两个函数原型是否等价:

float fun(int a,float b,char *c); float fun(int,float,char * );

(2) 以下两个函数的第一行是否等价:

float fun(int a,float b,char * c); float fun(int,float,char * );

答:(1)这两个函数原型是等价的,函数原型中的参数名可以缺省。 (2)这两个函数的第1行是不等价的,因为这个函数的第1行中必须包含参数名。

【2.6】 下列语句中错误的是(D )。

A.int *p=new int(10); B.int *p=new int[10]; C.int *p=new int; D.int *p=new int[40](0);

【2.7】 假设已经有定义“const char * const name=\”下面的语句中

正确的是(D )。

A. name[3]='a'; B. name=\C. name=new char[5]; D. cout<

【2.8】 假设已经有定义“char * const name=\”下面的语句中正确的

是( A )。

A. name[3]='q'; B. name=\C. name=new char[5]; D. name=new char('q');

【2.9】 假设已经有定义“const char * name=\”下面的语句中错误的

是( A )。

A. name[3]='q'; B. name=\C. name=new char[5]; D. name=new char('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. int i,*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

【2.19】using namespace std; int i=15; int main() { int i;

i=100; ::i=i+1;

cout<<::i<

return 0;

} 答:101

写出下列程序的运行结果。

#include using namespace std; void f(int &m,int n) { int temp; temp=m; m=n; n=temp; } int main() { int a=5,b=10; f(a,b);

cout<

答:10,10

【2.20】 分析下面程序的输出结果。

#include using namespace std; int &f(int &i) { i+=10; return i; } int main() { int k=0; int &m=f(k); cout<

【2.21】 举例说明可以使用const替代#define以消除#define的不安全性。 答:

【2.22】 编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci 数

列的前20项,并存储到动态分配的空间中。

答:#include using namespace std; int main() {

int * p=new int[20]; *p=1; *(p+1)=1;

本文来源:https://www.bwwdw.com/article/r9sf.html

Top