浙江大学远程教育学院 《面向对象程序设计》课程作业
姓名: 年级:
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)中第一个参数是引用参数,引用函数是一种按地址传递参数的方法,对它的调用是传地址调用,第二个参数是变量参数,对它的