1、MOOC 西交大 C+程序设计 单元测试 第 1 周单元测试 1、 下列哪项不是 C+的语句? A.c=a+b; B.c=a+b C. a; D.a+b; 正确答案: B 你选对了 解析: B、语句末尾必须有分号。常量、变量、表达式末尾加分号也是语句。 直接一个分号也是语句 空语句。空语句可以增加程序的可读性,可以作为待写的函数体、循环体、语句块。 2、 设整型变量 a,b,c 已经声明,下列哪项语句的顺序是正确的? A. c=a+b; coutab; B. coutab; C. c=a+b; cinab; coutab; c=a+b; coutab; 就是一例。 第 2 周单元测试 1、 设
2、 x, y, z 为整型数,下列各式中,运算结果与 x=y=24 的表达式相同的是 _。 A. x- (y=z= 8),4*6 B. x=y=(z=8,4*6) C. .x=(y=z=8,4*6) D. x=y=z=8, 4*6 2、 C+源程序中,以下说法不正确的是( )。 A. 表达式 1/4+1/4+1/4 的结果为 0 B. 逗号运算符的优先级最低 C. 变量必须先声明或定义,后使用。 D. 变量声明语句一定要给变量赋初值 3、 设下列变量均已正确声明为 int,下列选项中不正确的赋值表达式是( )。 A. a=1,b=2,c=3,k=4 B. +k C. a=b+c=1 D. n1
3、= n2 = n3 4、 下列不合法的变量名为 A. astudent B. st%udent C. _cppclass D. s_student 5、 当 a=6,b=5 时,语句 cout8)=y-z B. xy C. xy-z 9、 若 x 为整型变量, j 为实型变量,当执行 x=(int)j;语句后, j 也变为整型变量。 A. 错 B. 对 10、 若 int i=65535, j=0x000a, k; k=i 则不与 a5等价的是 _。 A. *(p+5) B. p5 C. p+5 D. *(a+5) 5、 如果定义 int aa10=1,2,3,4,5,6,7,8,9,10,*
4、p=aa;则数值为 6 的表达式是 _。 A. *p+=5 B. *p+6 C. *(p+6) D. p+5 6、 使用 new 向系统动态申请内存时,正确的是 _ A. 分配的内存空间不用时系统会自动收回 B. 有可能获得空指针 C. 总是能获得一个指向所需内存空间首地址的指针 D. 分配的内存空间只能使用一个特定的指针访问 7、 语句 int * cc=new int* 10; 动态申请了有 10 个元素的数组,数组中每个元素都是一个 int *指针。 A. 错 B. 对 8、 应用中, C+中的字符指针在大多数情况下都指的是一个字符串(字符串数组首地址)。 A. 对 B. 错 9、 结构
5、体指针变量所占的内存空间比整型指针变量的要大。 A. 错 B. 对 10、 动态数组的优点在于存取性能比静态数组要高。 A. 对 B. 错 第 9 周单元测试 1、 下列有关类的说法,不正确的是 A. 类是一种用户自定义的数据类型 B. 只有类中的成员函数或类的友元函数才能存取类中的私有数据 C. 在类中,如果不作特别说明,所有的成员均为公有成员 D. 在类中,如果不作特别说明,所有的数据成员均为私有数据成员 2、 有如下两个类定义: class AA; class BB AA v1,*v2; BB v3; BB *v4; ; 其中有一个成员变量的定义是错误的,这个变量是 A. v1 B. v
6、3 C. v2 D. v4 3、 有关类和结构体的关系,错误的是 _。 A. 结构体一般只有数据成员,通常不会加入函数方法 B. 结构体的成员默认都是公开的 C. 类一般只有函数方法,通常不会包含数据成员 D. 类的成员默认都是私有的 4、 按照常理,下列哪个概念可以理解为对象而不是类? A. 西安交通大学 B. 985 工程大学 C. 诺贝尔奖获得者 D. 国际知名学府 5、 设有以下类和对象的定义 : class A public: int k; ; A x1,x2,*p1,*p2; 则下面针对成员变量 k 的引用,正确的是 A. x1-k=1; B. p1.k=3; C. (*p2)-k
7、=4; D. x2.k=2; 6、 下面有关类与对象的说法中,错误的是 _。 A. 一个对象不能同时属于多个没有关系的独立的类 B. 类和对象的关系与数据类型和变量的关系相似 C. 对象是类的实例 D. 一个类只能有一个对象 7、 设计类时应该尽量设计完备,将所有能想到的属性方法全部写入声明。 A. 错 B. 对 8、 以下类的声明是完全正确的。 class mobile private: char mynumber11; /机主的电话号码 public: void init(char number11=”0000000000”) /隐式定义的内联函数 void dial(); /拨打电话的函
8、数声明 void answer(char othernumber11); /接听电 话的函数声明 void hangup(); /挂断电话的函数声明 A. 错 B. 对 9、 语法上,一个类不能将自身的所有成员定义为私有的。 A. 对 B. 错 10、 类的成员函数都必须设成公有的,以便外界调用。 A. 对 B. 错 第 10 周单元测试 1、 以下有关析构函数的叙述,不正确的是 A. 析构函数名前必须冠有符号“ ” B. 析构函数不允许用返回值 C. 在一个类只能定义一个析构函数 D. 析构函数 和构造函数一样可以有形参 2、 建立一个类对象时,系统必然会调用 A. 构造函数 B. 静态函数
9、 C. 析构函数 D. 内联函数 3、 有如下程序: #include #include using namespace std; class XCF int a; public: XCF (int aa=0) : a(aa) coutGeta( ); delete pd; 运行时的输出结果是 A. 1218855 B. 12185 C. 1215588 D. 128512 4、 下列关于构造函数说法不正确的是 _ A. 构造函数必须与类同名 B. 构造函数必须有返回值 C. 在构造函数中可以对类中的成员进行初始化 D. 构造函数可以省略不写 5、 下列哪些情况下不会调用对象的析构函数? A.
10、 将对象指针强行赋值为 NULL 时 B. 函数中定义的动态对象变量当函数执行结束时 C. 用 delete 删除对象指针时 D. 当对象变量脱离其作用域时 6、 使用对象指针来动态生成对象时不会调用构造函数。 A. 对 B. 错 7、 一个类的构造函数和析构函数都可以有多种形式。 A. 对 B. 错 8、 构造函数可以是内联函数。 A. 对 B. 错 9、 如果没有显式定义构造函数(包括拷贝构造函数), C+编译器就隐式定义一个默认的。 A. 对 B. 错 10、 this 指针存储的值是当前被调用的成员函数所在的对象的地址。 A. 对 B. 错 第 11 周单元测试 1、 为了使类中的某个
11、成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 A. protected B. private C. public D. static 2、 由于以下哪个原因,在编程实践中很少使用私有继承: A. 经过私有继承之后,基类的成员再也无法在以后的派生类中直接发挥作用 B. 私有继承不能很好的保护基类成员的安全性 C. 私有继承的性能低于公有继承 D. 私有继承对基类的编写方法有更为严格的要求 3、 下列程序的输出结果是: include using namespace std; class Base public: void print ( ) cout print( );
12、pd-print( ); delete pd; return 0; A. BD B. BB C. DD D. DB 4、 当派生类从基类公有继承时,以下哪种说法是错误 的 A. 可以把派生类对象的地址赋给基类对象的指针 B. 可以用基类对象为派生类对象赋值 C. 可以把指向派生类对象的指针赋给基类对象的指针 D. 可以用派生类对象为基类对象赋值 5、 下列对派生类的描述中,错误的是 A. 一个派生类可作为另一个派生类的基类 B. 派生类成员除了它自己的成员外,还包含它的基类成员 C. 派生类至少有一个基类 D. 派生类中继承的基类成员的访问权限到派生类保持不变 6、 在面向对象程序设计中,实现
13、信息隐蔽是靠 A. 对象的间接访问 B. 对象的继承 C. 对象的分类 D. 对象的封装 7、 在公有继承的情况下,基类中的 private 成员在派生类中仍是 private 的。 A. 错 B. 对 8、 在派生类中,可以直接继承基类的构造函数和析构函数。 A. 对 B. 错 9、 派生类中成员函数的名称不能和基类的成员函数名称重复。 A. 错 B. 对 10、 当在多条继承路径上有一个公共的基类时,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例,此时可以用虚基类来解决这个问题。 A. 错 B. 对 第 12 周单元测试 1、 关于基类中的虚函数与一般成员函数,正确的是( )。
14、 A. 虚函数只能定义一个,而一般成员函数可以多个 B. 虚函数不能定义函数体,而一般成员函数可以 C. 虚函数与一般成员函数在基类中没什么区别 D. 虚函数不能被调用,而一般成员函数可以 2、 虚函数不得声明为 _函数。 A. 构造 B. 其他三项均正确 C. 友元 D. 静态 3、 如果一个类至少有一个 _,那么就称该类为抽象类。 A. 友元函数 B. 构造函数 C. 纯虚函数 D. 成员函数 4、 只有使用虚函数机制,才能 _ A. 使基类指针指向派生类对象 B. 使用派生类指针调用基类的成员函数 C. 使派生类指针指向基类对象 D. 使用基类指针调用派生类的成员函数 5、 基类中的虚函
15、数如果在派生类中未重新定义,则会出现( )的情况。 A. 不允许定义派生类的对象 B. 使用派生类的对象调用的仍然是基类的这个函数 C. 无法使用派生类的对象调用这个函数 D. 无法使用基类的对象调用这个函数 6、 基类中允许定义 _个虚函数 ? A. 两个 B. 和成员变 量的个数有关 C. 一个 D. 任意多个 7、 基类中的运算符重载函数不能定义为纯虚函数。 A. 对 B. 错 8、 函数重载也是 C+中多态性的一个体现。 A. 对 B. 错 9、 基类中的纯虚函数在派生类中必须重新定义。 A. 错 B. 对 10、 抽象基类可以通过指针和 new 运算符实例化对象。 A. 对 B. 错 第 13 周单元测试 1、 打开一个文件后,若不关闭并且再次打开同一文件程序会出错。 A. 错 B. 对 2、 符号和 chmathengphy; / 若读取文件数据正常 float avg=1.0*(math+eng+phy)/3; if(fin)