《面向对象程序设计2261》22春在线作业2
共40道题 总分:100分
一、单选题(共30题,60分)
1.两个指针变量不可以()
A、相加
B、比较
C、相减
D、指向同一地址
2.有如下类定义:class MyClass{ int value; public:MyClass(int n): value (n) {}int gerValue()const{ return value;}};则类 MyClass 的构造函数的个数是 ( )
A、1个
B、2个
C、3个
D、4个
3.以下对二维数组a的正确说明是:()
A、inta[3][];
B、floata(3,4);
C、doublea[1][4];
D、floata(3)(4);
4.假定a为一个短整型(shortint)数组名,则元素a[8]的地址为()
A、a+4
B、a+8
C、a+16
D、a+32
5.若有定义:intaa[8];则以下表达式中不能代表数组元aa[1]的地址的是()
A、&aa[0]+1
B、&aa[1]
C、&aa[0]++
D、aa+1
6.如果短整型的长度是2字节,有一个短整型指针p的值是0xFFED1200,那么p+1的值为()
A、0xFFED1201
B、0xFFED1202
C、0xFFED1203
D、0xFFED1204
7.数组名作为实参传递给形参时,数组名被处理为该数组的()
A、长度
B、元素个数
C、首地址
D、各元素的值
8.已知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是()
A、Valueoperator+(Valuev,inti);
B、Valueoperator+(Valuev=value,inti);
C、Valueoperator+(Valuevinti=0);
D、Valueoperator+(Valuev=value,inti=0);
9.如果有如下定义:constchar*str=”OK”;那么,sizeof(str)的值应该是()
A、1
B、2
C、3
D、4
10.下列哪个是C++语言的有效标识符?()
A、_No1
B、No、1
C、12345
D、int
11.如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后++运算符的声明应该为()
A、myclassoperator++();
B、myclass& operator++();
C、myclassoperator++(int);
D、myclass& operator++(int);
12.二叉查找树按()遍历时访问到节点的数据是排好序的川大答案请进:opzy.net或请联系微信:1095258436
A、前序
B、中序
C、后序
D、层次
13.十进制数127转换成二进制数是()
A、11111111
B、01111111
C、10000000
D、11111110
14.若k为整形,则while循环执行( )次。 k=2; while(k==0) printf(“%d”,k); k–; printf(“\n”);
A、10
B、9
C、0
D、1
15.执行下列语句段后,输出字符“*”的个数是()for(inti=50;i>1;I-=2)cout<<~*~;
A、24
B、25
C、26
D、50
16.下列排序算法中,平均效率最低的排序算法是()
A、插入法
B、冒泡法
C、选择法
D、快速排序法
17.在下列关键字中,不能用来表示继承方式的是()
A、private
B、static
C、public
D、protected
18.如果在try块中用throw”error”;语句抛出一个异常,则参数类型是()的catch块能够捕获这个异常。
A、char*
B、constchar*
C、Char
D、constchar
19.当需要使用istrstream流类定义一个流类对象并联系一个字符串时,应在文件开始使用#include命令,使之包含()文件
A、iostream、h
B、iomanip、h
C、fstream、h
D、ststreh
20.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“<<left”,输出效果将发生变化的是()
A、cout<<left<<setfill(~*~)<<357;
B、cout<<left<<setw(5)<<357;
C、cout<<left<<setw(5)<<”ABCDE”;
D、cout<<left<<”ABCDE”;
21.下面是一个模板声明的开始部分:templute<typename T> double __由此可知 ( )
A、这可能是一个函数模板的声明
B、这可能是一个类模板的声明
C、这既可能是一个函数模板的声明,也可能是一个类模板的声明
D、这肯定是一个错误的模板声明
22.多重继承时,如果派生类的两个父类有一个共同的虚基类,那么虚基类的初始化参数由()的构造函数来传递
A、第一个父类
B、第二个父类
C、派生类
D、以上都不是
23.在每个C++程序中都必须包含有这样一个函数,该函数的名称为()
A、main
B、MAIN
C、name
D、function
24.有如下类和对象的定义:class Constants{public: static double getPI(){return 3.1416;}};Constants constants;下列各组语句中,能输出 3.1416 的是 ( )
A、cout<<constants->getPI();和cout<<Constants::gerPI();
B、cout<<constants.getPI();和cout<<Constants.getPI();
C、cout<<constants->getPI();和cout<<Constants->getPI();
D、cout<<constants.getPI();和cout<<Constants::getPI();
25.下面函数调用语句含有实参的个数为: ( )func((exp1,exp2),(exp3,exp4,exp5))
A、1
B、2
C、4
D、5
26.父类和子类各自定义一个成员函数,函数名相同,参数表不同,那么()
A、在子类中这两个函数构成重载关系
B、子类不会继承父类的这个函数
C、子类中的函数会覆盖父类中的函数
D、编译时会发生错误
27.C++异常处理机制中没有()
A、try
B、throw
C、catch
D、finally
28.有如下 4 个语句:① cout<<~A~<<setfill(~*~)<<left<<setw(7)<<~B~<<endl;② cout<<setfill(~*~)<<left<<setw(7)<<~A~<<~B~<<endl;③ cout<<~A~<<serfill(~*~)<<right<<setw(7)<<~B~<<endl;④ cout<<setfill(~*~)<<right<<setw(7)<<~A~<<~B~<<endl;其中能显示 A******B 的是
A、①和③
B、①和④
C、②和③
D、②和④
29.C++函数的声明和定义可以分开,函数声明不需要()
A、返回类型
B、函数名
C、参数表
D、函数体
30.多态性是通过()实现的
A、构造函数
B、析构函数
C、虚函数
D、函数重载
二、多选题(共5题,20分)
1.类成员的访问属性可以是()
A、public
B、protected
C、private
D、default
2.面向对象的编程方法的主要特征包括()
A、封装
B、继承
C、多态
D、消息
3.设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i; 要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_( )、
A、for(i=0;i<6;i++)printf(“-”,*(p++));
B、for(i=0;i<6;i++)printf(“-”,*(p+i));
C、for(i=0;i<6;i++)printf(“-”,*p++);
D、for(i=0;i<6;i++)printf(“-”,(*p)++);
4.for语句的格式为for(表达式1;表达式2;表达式3),其中可以省略的是()
A、两个分号
B、表达式1
C、表达式2
D、表达式3
5.两个同名函数构成重载关系,只要()不同
A、返回类型
B、参数个数
C、参数类型
D、函数头后有无const
三、判断题(共5题,20分)
1.逻辑运算符两侧运算对象的数据类型只能是0或1。()
A、错误
B、正确
2.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是面向过程。()
A、错误
B、正确
3._int可以定义为用户标识符。()
A、错误
B、正确
4.宏名必须用大写字母表示。()
A、错误
B、正确
5.C++语言的跳转语句中,break语句只应用于循环体中。()
A、错误
B、正确