1、秋川大网教面向对象程序设计第一二次作业及答案详解面向对象程序设计第一次作业答案一、单项选择题。本大题共30个小题,每小题 2.0 分,共60.0分。在每小题给出的选项中,只有一项是符合题目要求的。1. C函数的声明和定义可以分开,函数声明不需要( D)。A. 返回类型B. 函数名C. 参数表D. 函数体2. 函数的形参是( B )。A. 全局变量B. 局部变量C. 静态变量D. 部变量3. 数组名表示的是数组的(C )。A. 类型B. 用途C. 地址D. 长度4. 如果短整型的长度是2字节,有一个短整型指针p的值是0xFFED1200,那么p+1的值为(B )。A. 0xFFED1201B.
2、0xFFED1202C. 0xFFED1203D. 0xFFED12045. private访问属性限制对象的成员可以在( A)中访问。A. 本类的成员函数B. main函数C. 父类的成员函数D. 子类的成员函数6. 如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后+运算符的声明应该为(C )。A. myclass operator+();B. myclass&operator+();C. myclass operator+( int );D. myclass& operator+( int );7. 如果有如下定义: const char* str = OK;那
3、么,sizeof(str)的值应该是( D)A. 1B. 2C. 3D. 48. 父类和子类各自定义一个成员函数,函数名相同,参数表不同,那么(D )。A. 在子类中这两个函数构成重载关系B. 子类不会继承父类的这个函数C. 子类中的函数会覆盖父类中的函数D. 编译时会发生错误9. 如果myclass类定义了拷贝构造函数和一个整型参数的构造函数,还重载了赋值运算符,那么语句myclass obj = 100;会( B)。A. 调用拷贝构造函数B. 调用整型参数的构造函数C. 调用赋值运算符D. 引起编译错误10. 抽象类指的是(D )。A. 没有任何成员的类B. 只有成员函数没有数据成员的类C
4、. 有虚函数的类D. 有纯虚函数的类11. 多重继承时,如果派生类的两个父类有一个共同的虚基类,那么虚基类的初始化参数由(C )的构造函数来传递。A. 第一个父类B. 第二个父类C. 派生类D. 以上都不是12. 多态性是通过(C )实现的。A. 构造函数B. 析构函数C. 虚函数D. 函数重载13. 十进制数127转换成二进制数是(B )A. 11111111B. 01111111C. 10000000D. 1111111014. 执行语句char ch = Hello;char * p = &ch0;cout1; I-=2)cout*;A. 24B. 25C. 26D. 508. 有如下定
5、义:int a5=1,3,5,7,9,*p=a;下列表达式中不能得到数值 5 的是 (B )A. a2B. a3C. *(p+2)D. *p+49. 已知函数 f 的原型是 void f(int *a, long & b);,变量 v1、v2 的定义是:int v1; loong v2;下列调用语句中正确的是 (D )A. f(v1, &v2)B. f(v1, v2)C. f(&v1, &v2)D. f(&v1, v2)10. 有如下类定义:class Pointprivate;static int how_many;_ how_many=0;要初始化 Point 类的静态成员 how_man
6、y,下划线处应填入的内容是 DA. ingB. static intC. int Point:D. static int Point:11. 在下列关键字中,不能用来表示继承方式的是 (B )A. privateB. staticC. publicD. protected12. 已知 Value 是一个类,Value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( B)A. Value operator+(Value v, int i);B. Value operator+(Value v=value, int i);C. Value operator+(V
7、alue vint i=0);D. Value operator+(Value v=value, int i=0);13. 下面是一个模板声明的开始部分: templute double _由此可知 (A ) A. 这可能是一个函数模板的声明B. 这可能是一个类模板的声明C. 这既可能是一个函数模板的声明,也可能是一个类模板的声明D. 这肯定是一个错误的模板声明14. 有如下 4 个语句: coutAsetfill(*)leftsetw(7)Bendl; coutsetfill(*)leftsetw(7)ABendl; coutAserfill(*)rightsetw(7)Bendl; cou
8、tsetfill(*)rightsetw(7)ABendl;其中能显示 A*B 的是 (A )A. 和B. 和C. 和D. 和15. 有如下类定义:class MyClassint value;public:MyClass(int n): value (n) int gerValue()const return value;则类 MyClass 的构造函数的个数是 ( A)A. 1 个B. 2 个C. 3 个D. 4 个16. 有如下类和对象的定义:class Constantspublic:static double getPI()return 3.1416;Constants consta
9、nts;下列各组语句中,能输出 3.1416 的是 (D )A. coutgetPI();和 coutConstants:gerPI();B. coutconstants.getPI();和 coutConstants.getPI();C. coutgetPI();和 coutgetPI();D. coutconstants.getPI();和 coutConstants:getPI();17. 若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的是(B )A. p1=&m,p2=&p1B. p1=&m;p2=&n;*p1=*p2C. p1=&m;p1=p2D. p1=&m;*
10、p2=*p118. C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是(D )A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念19. 若已定义int a=5;下面对(1),(2)两个语句正确理解的是( D)(1)int *p=&a; (2)*p=a;A. (1)(2)中的*P含义相同,都表示给指针变量P 附值B. (1)(2)的执行结果都是把变量a的地址值赋给指针变量PC. (1)在对P进行说明的同时进行初始化,使P指向a,(2)将变量a的值赋给指针变量PD. (1)在对P进行说明的同时进行初始化,使P指向
11、a,(2)将变量a的值赋给*20. 下列有关抽象类和纯虚函数的叙述中,错误的是 (D )A. 拥有纯虚函数的类是抽象类,不能用来定义对象B. 抽象类的派生类若不实现纯虚函数,它也是抽象类C. 纯虚函数的声明以“=0;”结束D. 纯虚函数都不能有函数体21. 下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“left”,输出效果将发生变化的是 (B )A. coutleftsetfill(*)357;B. coutleftsetw(5)357;C. coutleftsetw(5)ABCDE;D. coutleftABCDE;22. 下面函数调用语句含有实参的个数为: (B )func(
12、exp1,exp2),(exp3,exp4,exp5)A. 1B. 2C. 4D. 523. 设有定义int x; float v;,则10+x+v值的数据类型是 (C )A. intB. doubleC. floatD. 不确定24. 在定义int a342;后,第10个元素是( B)A. a212B. a101C. a201D. a22125. 下列哪个是C+语言的有效标识符? (A )A. _No1B. No、1C. 12345D. int26. 下面的选项中正确的赋值语句是(char a5,*p=a;)。 ( A)A. p=“abcd”;B. a=“abcd”;C. *p=“abcd”
13、;D. *a=“abcd”;27. 若k为整形,则while循环执行(C )次。k=2; while(k=0) printf(“%d”,k); k-; printf(“n”);A. 10B. 9C. 0D. 128. 数组名作为实参传递给形参时,数组名被处理为该数组的(C )。A. 长度B. 元素个数C. 首地址D. 各元素的值29. 两个指针变量不可以(A )。A. 相加B. 比较C. 相减D. 指向同一地址30. 以下对二维数组a的正确说明是:(C )A. int a3;B. float a(3,4);C. double a14;D. float a(3)(4);二、多项选择题。本大题共5
14、个小题,每小题 4.0 分,共20.0分。在每小题给出的选项中,有一项或多项是符合题目要求的。1. 构造函数(ACD )。A. 函数名只能是类名B. 返回类型可以是任意的C. 参数个数和类型可以是任意的D. 在对象创建时自动调用2. 关于公共静态数据成员,下面说法正确的是(ABCD )。A. 在main函数之前创建B. 跟某个具体对象无关C. 可以用类名和成员名直接访问D. 需要在类体外初始化3. 两个同名函数构成重载关系,只要(BCD )不同。A. 返回类型B. 参数个数C. 参数类型D. 函数头后有无const4. 模板定义中的类型参数可以用作( ABCD)。A. 局部变量类型B. 函数参
15、数类型C. 函数返回值类型D. 数据成员类型5. 设有定义语句: int x6=2,4,6,8,5,7,*p=x,i;要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_(ABC )、A. for(i=0;i6;i+)printf(“%2d”,*(p+);B. for(i=0;i6;i+)printf(“%2d”,*(p+i);C. for(i=0;i6;i+)printf(“%2d”,*p+);D. for(i=0;i6;i+)printf(“%2d”,(*p)+)三、判断题。本大题共5个小题,每小题 4.0 分,共20.0分。1. 逻辑运算符两侧运算对象的数据类型只能是0或1。 ( 错误 )2. 宏名必须用大写字母表示。 (错误)3. C+程序从上机到得到结果的几个操作步骤依次是:编辑、编译、连接、运行。 (正确 )4. 字符串abn在机器中占6个字节。 (错误)5. 1.234e0为C语言合法常量。 (正确)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1