2016浙大面向对象程序设计离线作业

时间:2022-11-21 06:52:53 作者:壹号 字数:676字

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

姓名: 年级:

2016年春

学号: 学习中心:

紫金港

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

第2章

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

否有效。

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

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

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

using namespace std; 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; }

答:不可能通过编译,sum的使用在其声明之前是非法的,应增加一行sum(int a,int

b); 放在using namespace std;之后。

【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)两个函数的第一行不等价,因为函数的第一行必须包括参数名。 【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

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

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

cout<<::i<

return 0;

}

答:运行结果是 101

…… 此处隐藏0字 ……

因为::i=i+1;中::i 是全局变量,i是局部变量。 【2.19】 写出下列程序的运行结果。

#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

因为函数f(int &m,int n)中第一个参数是引用参数,引用函数是一种按地址传递参数的方法,对它的调用是传地址调用,第二个参数是变量参数,对它的