模拟题一及参考答案.pdf
页脚下载后可删除,如有侵权请告知删除!模拟题一及参考答案 1.关于 C十与 C语言的关系的描述中,_是错误的。(2分)语言是 C十的一个子集 B.C+是兼容 C语言的 十对 C 语言进展了一些改良 D.C+和 C语言都是面向对象的 2.C+对 C 语言作了很多改良,以下描述中_ 使得 C 语言发生了质变,即从面向过程变成又面向对象。(2分)A.增加了一些新的运算符 B.允许函数重载,并允许设置默认参数 C.规定函数说明必须用原型 D.引进了类和对象的概念 3.按照标识符的要求,_符号不能组成标识符。(2 分)A.连接符 B.下划线 C.大小写字母 D.数字字符 4.下述关于 break语句的描述中,_是不正确的。(2 分)语句可用于循环体中,它将退出该重循环 语句可用于 switch 中,它将退出 switch 语句 语句可用于 if 体内,它将退出 if语句 语句在一个循环体内可以出现屡次 5.以下关于 do-while 语句的表达正确的选项是_。(2分)A.不能使用 dowhile语句构成的循环 while 语句构成的循环必须用 break语句才能退出 while 语句构成的循环,当 while 语句中的表达式值为非零时完毕循环 while 语句构成的循环,当 while 语句中的表达式值为零时完毕循环 6._是给对象取一个别名,它引入了对象的同一词。(2 分)A.指针 B.引用 C.枚举 D.构造 7.以下数组的定义中,_是错误的。(2分)A.char cal=c,h,a,r B.char ca25=char C.char ca34=char D.int array=6,5,3,4 8.1以下变量名中,_是合法的。(2 分)页脚下载后可删除,如有侵权请告知删除!size a 9.使用数学函数,程序要包含_头文件。(2分)D.stdio.h 10.函数参数传递以下_不是正确的。(2分)A.函数类型一定和形参类型完全一样。B.在函数被调用时才分配形参的存储单元。C.实参类型必须与形参相符。D.传递时是传递参数值,即单向传递 11.有关析构函数的说法不正确的选项是:(2 分)A.一个类中析构函数有且只有一个 B.析构函数无任何函数类型 C.析构函数和构造函数一样可以有形参 D.析构函数作用是在对象被撤消时收回先前分配的内存 12.以下说明中正确的选项是:(2分)const char*ptr;A.指向字符常量的指针 B.指向字符的常量指针 C.指向字符串常量的指针 D.指向字符串的常量指针 13.系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在以下选项中,不能作为依据的是_。(2分)A.参数个数 B.参数的类型 C.函数名称 D.函数的类型 14.关于纯虚函数和抽象类的描述中,_是错误的。(2分)A.纯虚函数是一种特殊的虚函数,它没有具体的实现 B.抽象类是指具有纯虚函数的类 C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 15.以下关于运算符重载的描述中,_是正确的。(2分)A.运算符重载可以改变运算数的个数 B.运算符重载可以改变优先级 C.运算符重载可以改变结合性 页脚下载后可删除,如有侵权请告知删除!D.运算符重载不可以改变语法构造 16.进展磁盘文件的 I/O 操作时需要包含_文件。(2分)D.stdlib.h 17.定义重载函数错误的为_。(多项选择)(3 分)A.功能相近的函数在一样作用域内以一样函数名定义重载函数。B.编译器以形参名来区分函数。C.编译器以返回值来区分函数。D.不同功能函数可以定义为重载函数。18.以下对类模板正确的描述为_。(多项选择)(3分)A.系统规定应该使用模板。B.模板是 C+支持参数化多态性的工具。C.使用模板将程序所处理的对象的类型参数化。D.使用模板可以为用于处理多种不同类型的对象。19.同一数组的各元素具有_的数据类型(2分)20.指针变量是用来存储_的变量(2 分)21.字符串的完毕标记是_(2分)22.派生新类的过程包括_已有类的成员,调整已有类的成员和添加新成员(2 分)23.构造派生类对象时,就要对基类数据成员、_数据成员和成员对象的数据成员进展初始化(2分)24.作用域分辨符是_(2分)25.使用虚基类时要用_关键字(2分)26.C+程序按构造可划分为:类_文件、类定义文件和类实现文件(2 分)27.在使用 I/O 流类库对文件进展二进制操作时,文件翻开模式应使用标志值_。(2 分)28.利用 I/O 流类库中的格式标志值_设置以定点格式显示浮点数值。(2 分)29.分析以下程序执行的结果.(10 分)#include#include class Sample public:int x,y;页脚下载后可删除,如有侵权请告知删除!Sample()x=y=0;Sample(int a,int b)x=a;y=b;void disp()coutx=x,y=yendl;void main()Sample s1(2,3);s1.disp();30.分析以下程序的执行结果(10分)#include class Sample int x,y;public:Sample()x=y=0;Sample(int a,int b)x=a;y=b;Sample()if(x=y)coutx=yendl;else coutx!=yendl;void disp()coutx=x,y=yendl;void main()Sample s1(2,3);s1.disp();31.分析以下程序的输出结果(10分)#include class Sample int x;public:Sample(int a)x=a;coutconstructing object:x=xendl;页脚下载后可删除,如有侵权请告知删除!;void func(int n)static Sample obj(n);void main()func(1);func(10);32.分析以下程序的执行结果(12分)#include class Sample public:int x;int y;void disp()coutx=x,y=yendl;void main()int Sample:*pc;Sample s;pc=&Sample:x;s.*pc=10;pc=&Sample:y;s.*pc=20;s.disp();参考答案:页脚下载后可删除,如有侵权请告知删除!29.解:x=2,y=3 此题说明了重载构造函数的定义方法。首先定义了一个类 Sample,在main()中定义了它的一个对象,定义 s1 对象时调用其重载构造函数(x=2,y=3),然 后,调 用 其 成 员 函 数 输 出 数 据 成 员。所 以 输 出 为:x=2,y=3。注意:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。30.解:x=2,y=3 x!=y 此题说明了析构函数的定义方法。首先定义了一个类 Sample,在 main()中定义了它的一个对象,定义 s1 对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。所以输出为:x=2,y=3 x!=y 注意:析构函数在对象的作用域完毕时被自动隐式调用。1 D 2 D 3 A 4 C 5 D 6 B 7 C 8 A 9 B 10 A 11 C 12 A 13 D 14 C 15 D 16 B 17 BCD 18 BCD 19 一样 20 内存单元地址 21 0 22 吸收 23 新增 24:25 virtual 26 申明 27 ios:binary 28 ios:fixed 页脚下载后可删除,如有侵权请告知删除!31.解:counstructing object:x=1 此题说明静态对象构造函数的调用情况,由于在 func()函数中定义的对象 obj 是静态对象,故只被构造一次,所以输出为:counstructing object:x=1 注意:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。32.解:x=10,y=20 此题说明了类数据成员指针的使用方法。在 main()中定义的 pc 是一个指向 Sample 类数据成员的指针。执行 pc=&Sample:x 时,pc 指向数据成员 x,语句 s.*pc=10等价于 s.x=10(为了保证该语句正确执行,Sample 类中的 x 必须是公共成员);执行 pc=&Sample:y 时,pc 指向数据成员y,语句 s.*pc=20 等价于 s.y=20(同样,Sample 类中的 y 必须是公共成员)。所以输出为:x=10,y=20。