1、二级 C+笔试-345 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.设有下定义的语句: inta32=10,20,30,40,50,60; intb32=10,20,30,40,50,60; 则 a11*b21)的结果为( )。(分数:2.00)A.2000B.1200C.2400D.30002.下列是重载乘法运算符的函数原型声明,其中错误的是( )。(分数:2.00)A.MyClass operator*(double,doubl;B.MyClass operator*(double,MyClas;C.MyClass opera
2、tor*(MyClass,doubl;D.MyClassoperator*(MyClass,MyClas;3.有下列程序: #includeiostream using namespace std; class TestClass private: int x,y; public: TestClass (int i,int j) x=i; y=j; void print() cout“printl“endl; void print ()const cout“print2“endl; ; int main() const TestClass a(1,2); a.print(); return 0
3、; 运行该程序后的输出结果是( )。(分数:2.00)A.print1B.print2C.pfint1 print2D.程序编译时出错4.定义如下枚举类型:enum Numberone=l,two=2,fomr=4,eight=8,则枚举类型 Number的取值范( )。(分数:2.00)A.18B.08C.115D.0155.( )既可重载为一元运算符,又可重载为二元运算符。(分数:2.00)A.“*”B.“=”C.“=”和“*”D.“*”和“*+”6.下列表达式的值为 false的是( )。(分数:2.00)A.13 则下列调用中正确的是( )。(分数:2.00)A.funint,4,3(
4、5);B.fun4,3(5);C.funint,int,int(5);D.fun(5);8.下列关于结构化程序设计原则和方法的描述中,错误的是( )。(分数:2.00)A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO语句D.语言中所没有的控制结构,应该采用前后一致的方法来模拟9.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.nD.n+110.有如下函数模板声明: templatetypename T T Max(T a,T b)return(a-b)?a:b;
5、 下列对函数模板 Max()的调用中错误的是( )。(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4)C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)11.一个函数为 void f(int,char ch=a),另一个函数为 void f(iht),则它们( )。(分数:2.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载C.可以在同一程序中定义,但不可以重载D.以上三种说法均不正确12.下列叙述中错误的是( )。(分数:2.00)A.派生类可以使用 private派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生
6、类中维持不变D.赋值兼容规则也适用于多继承的组合13.最简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序14.下列程序的输出结果是( )。 #includeiostream.h void main() char*Str; str=“testI“; coutstr5; (分数:2.00)A.test!B.testC.空字符D.异常15.关于关键字 class和 typename,下列表述中正确的是( )。(分数:2.00)A.程序中的 typename都可以替换为 classB.程序中的 class都可以替换为 typenameC.在模板形参表中只能用
7、 typename来声明参数的类型D.在模板形参表中只能用 class或 typename来声明参数的类型16.派生类中的成员不能直接访问基类中的( )成员。(分数:2.00)A.publicB.privateC.virtualD.protected17.有下列程序: #includeiostream using namespace std; class VAC public: int f() constreturn3; int f() return 5; ; int main() VAC v1; const VAC v2; coutv1.f()v2.f(); return 0; 运行该程序的
8、输出结果是( )。(分数:2.00)A.53B.35C.55D.3318.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化19.下列叙述中正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率20.下列叙述中正确的是( )。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个算法的空间复杂度大,则其时间复杂度
9、必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对21.有下列程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void fimction(double val) val=3; 编译运行这个程序将出现的情况是( )。(分数:2.00)A.编译出错,无法运行B.输出 3C.输出:3.0D.输出一个不确定的数22.有下列程序: #includeiostream using
10、namespace std; class TestClass protected: TestClass()coutx; TestClass(char c)coutc; ; class TestClassl:public TestClass public: TestClassl(char c)coutc; ; int main() TestClass1 d1(y); retum 0; 执行这个程序屏幕上将显示输出( )。(分数:2.00)A.yB.yxC.xyD.yy23.若有下列定义及初始化语句: int i=100; int*p= intk=*ip; 并假设整型数 i的地址为0x123456
11、78,指针中的地址为 0x21000000,则 k的值为( )。(分数:2.00)A.0x12345678B.0x21000000C.100D.异常24.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( )。(分数:2.00)A.调用语句B.命令C.口令D.消息26.以下( )成员函数表示纯虚函数。(分数:2.00)A.virtual int fun(inB.void fun(in=0C.virtual void fun()=0D.virtual void fun(in27.下列描述中错误的是( )。(分数:2.00)A.继承分为多重继承和单继承B.对象间通信靠传递消息实现C
12、.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合28.派生类构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类中子对象的初始化D.派生类中一般数据成员的初始化29.下列程序的运行结果是( )。 #includeiostream.h void fun(int a=a+b+i; i=i+a; void main() int x=5,y=2; fun(x,y); coutx“,“; fun(x); coutxendl; (分数:2.00)A.5,2B.7,11C.11,23D.9
13、,2330.设计程序时应采纳的原则之一是( )。(分数:2.00)A.程序的结构应有助于读者的理解B.限制 GOTO语句的使用C.减少或取消注释行D.程序越短越好31.有下列程序: #includeiostream using namespace std; class TestClass int a; public: TestClass(int x)a=x; void show()couta; ; class TestClass1:publicTestClass int b; public: TestClass1(int i):TestClass(i+1),b(i) void show()co
14、utb; ; int main() TestClass b(5),*p; TestClass1 d(1); p= p-show(); return 0; 运行后的打印结果是( )。(分数:2.00)A.5B.1C.0D.232.有下列程序: #includeiostream Using namespace std; Class Amount int amount; public; Amount(int n=O):amount(n) Int getAmount()constreturn amount; Amount return ; int main() Amount x(3),y(7); x+
15、=y; coutx.getAmount()endl; return 0; 己知程序的运行结果是 10,则横线处缺失的表达式是( )。(分数:2.00)A.*thisB.thisC.while(i25)i+=3;couti; 输出结果是( )。(分数:2.00)A.24B.25C.27D.2835.下列程序的输出结果是( )。 #includeiostream using namespace std; class TestClass static int i; public: TestClass()i+; TestClass()i-; static int getVal()retum i; ;
16、int TestClassi=0; void fun()TestClass ob2;coutob2.getVal(); int main() TestClass obi; fun(); TestClass*ob3=new TestClass;coutob3-getVal(); delete ob3;coutTestClassgetVal(); retum 0; (分数:2.00)A.111B.121C.211D.221二、B填空题/B(总题数:15,分数:30.00)36.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成
17、程序。(分数:2.00)填空项 1:_37.注释一般分为序言性注释和 1 注释。(分数:2.00)填空项 1:_38.在面向对象方法中,类的实例称为 1。(分数:2.00)填空项 1:_39.某二叉树中度为 2的结点有 18个,则该二叉树中有 1 个叶子结点。(分数:2.00)填空项 1:_40.数据流图的类型有 1 和事务型。(分数:2.00)填空项 1:_41.在多继承的基类和派生类中同时出现 1 存在二义性。(分数:2.00)填空项 1:_42.有下列程序: #includeiostream using namespace std; class TestClass1 public: Te
18、stClass1()cout“A“; ; class TestClass2public:TestClass2()cout“B“; ; class TestClass3:public TestClass1 TestClass2 b; public:TestClass3()cout“C“; ; int main()(TestClass3 obj;return 0; 执行该程序后的输出结果是_。(分数:2.00)填空项 1:_43.编译时的多态性可以通过使用 1 获得。(分数:2.00)填空项 1:_44.如果使用数组名称为函数参数,形实结合时,传递的是 1。(分数:2.00)填空项 1:_45.在
19、类的对象被创建时, 1 函数会被自动调用。(分数:2.00)填空项 1:_46.下列程序的执行结果是_。 #includeioStream.h #includeiomanip.h using namespace std; void main() coutsetfill(x)setw(10); cout“Hello“end1; (分数:2.00)填空项 1:_47.请将下列类定义补充完整。 class Basepublic:void fun()cout“Basefun“end1; c1ass DehVed:public Base public: void fun() _ 显式调用基类的 fun函
20、数 cout“Derivedfun“endl; ;(分数:2.00)填空项 1:_48.有下列程序: #includeiostream using namespace std; class ONE public: virtual void f()COUt“1“; ; c1assTWO:public ONE public: TWO()cout“2“; ; class THREE:public TWO public: virtual void f()TWOf();cout“3“; ; int main() ONE aa,*p; TWO bb; THREE cc; p= p-f(); return
21、0; 执行上面程序的输出结果是_。(分数:2.00)填空项 1:_49.在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承 private。已知有如下类定义: class Base protected: void fun() ; class Derived:Base; 则 Base类中的成员函数fun(),在 Derived类中的访问权限是_(注意:要求填写 private、protected 或 public中的一项)。(分数:2.00)填空项 1:_50.已知下列程序的输出结果是 42,请将横线处缺失的部分补充完整。 #includeiostream using name
22、space std; class Foo int value; public: Foo():value(0) void setValue(int value) _=value; 给 Foo的数据成员 value赋值 void print()coutvalue;p ; int main() Foo f; gf.setValue(42); f.print(); return 0; (分数:2.00)填空项 1:_二级 C+笔试-345 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.设有下定义的语句: inta32=10,20,30,40,
23、50,60; intb32=10,20,30,40,50,60; 则 a11*b21)的结果为( )。(分数:2.00)A.2000B.1200C.2400 D.3000解析:解析 因为 a中由第 0个位置开始,所以 a11*b21为二维数组中的第二行二列乘以 b中第三行二列,即 40*60。2.下列是重载乘法运算符的函数原型声明,其中错误的是( )。(分数:2.00)A.MyClass operator*(double,doubl; B.MyClass operator*(double,MyClas;C.MyClass operator*(MyClass,doubl;D.MyClassope
24、rator*(MyClass,MyClas;解析:解析 此题考查的是乘法运算符的重载函数原型声明。因为操作的对象是类对象,所以重载函数的参数至少有一个是类对象。故选项 A)中两个参数都为 double型是错误的。3.有下列程序: #includeiostream using namespace std; class TestClass private: int x,y; public: TestClass (int i,int j) x=i; y=j; void print() cout“printl“endl; void print ()const cout“print2“endl; ; i
25、nt main() const TestClass a(1,2); a.print(); return 0; 运行该程序后的输出结果是( )。(分数:2.00)A.print1B.print2 C.pfint1 print2D.程序编译时出错解析:解析 由主函数 main入手,定义 TestClass型的常对象 a,然后调用对象 a中的成员函数 print()。因为在 C+中,如果一个对象被声明为常对象,则不能调用该对象中的非 const型的成员函数。所以,这里调用的是对象中的 const型成员函数“void print ()const”,输出为 print2。4.定义如下枚举类型:enum
26、Numberone=l,two=2,fomr=4,eight=8,则枚举类型 Number的取值范( )。(分数:2.00)A.18B.08C.115D.015 解析:解析 enum枚举类型名枚举元素表;。其中,关键词 enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。如果为默认设置,枚举类型从 0开始赋值,本题中最大值为 8,那么它与其他值和的最大计算结果为 15,所以它的取值范围为 015。5.( )既可重载为一元运算符,又可重载为二元运算符。(分数:2.00)A.“*” B.“=”C.“=”和“*”D.“*”和“*+”解析:解析 此题考查的是运算
27、符的有关概念。“*”是二元运算符,既可以用于间接访问也可用于两数乘;而“=”和“+”都是一元运算符。6.下列表达式的值为 false的是( )。(分数:2.00)A.13 则下列调用中正确的是( )。(分数:2.00)A.funint,4,3(5); B.fun4,3(5);C.funint,int,int(5);D.fun(5);解析:解析 类模板是类的抽象,类是类模板的实例。在调用时,尖括号内指定实际的类型名,在编译时,编译系统就用 int取代类模板中的类型参数,这样就具体化了类模板。其中的参数为 4,3。8.下列关于结构化程序设计原则和方法的描述中,错误的是( )。(分数:2.00)A.
28、选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO语句 D.语言中所没有的控制结构,应该采用前后一致的方法来模拟解析:解析 限制使用 GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用 GOTO语句。选项 A)、B)、D)为结构化程序设计的原则。9.对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.n D.n+1解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最
29、坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。10.有如下函数模板声明: templatetypename T T Max(T a,T b)return(a-b)?a:b; 下列对函数模板 Max()的调用中错误的是( )。(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4) C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)解析:解析 此题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数
30、调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题选项 B)中,编译系统从第一个参数“3.5”获得信息“double 型数据”和从第二个参数获得信息“int 型数据”两者矛盾,错误;A、选项 C)正确:选项 D)中,函数名后的double是模板实参表,编译系统会将 int 型的形参“4”自动转化成 double类型。11.一个函数为 void f(int,char ch=a),另一个函数为 void f(iht),则它们( )。(分数:2.00)A.不能在同一程序中定义B.可以在同一程序中定义并可重载 C.可以在同一程序中定义,但不可以重载D.以上三种说法均不正确解析:解析 题
31、目中的两个函数参数个数不同,因此可以在同一程序中定义为重载函数。所以,选项 B)叙述正确。12.下列叙述中错误的是( )。(分数:2.00)A.派生类可以使用 private派生B.对基类成员的访问必须是无二义性的C.基类成员的访问能力在派生类中维持不变 D.赋值兼容规则也适用于多继承的组合解析:解析 在建立派生类时,并不是简单地把基类的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对类成员所声明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类的访问属性。所以本题选
32、择选项 C)。13.最简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:解析 所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序快速排序。冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。14.下列程序的输出结果是( )。 #includeiostream.h void main() char*Str; str=“testI“; coutstr5; (分数:2.00)A.test!B.testC.空字符 D.异常解析:解析 字符指针 str值为“test!”,它们的下标由 0开始,并
33、且具有一个尾符,输出 str5的位置为尾符标识,指针字符指向的尾符为空。所以答案为空字符,即选项 C)正确。15.关于关键字 class和 typename,下列表述中正确的是( )。(分数:2.00)A.程序中的 typename都可以替换为 class B.程序中的 class都可以替换为 typenameC.在模板形参表中只能用 typename来声明参数的类型D.在模板形参表中只能用 class或 typename来声明参数的类型解析:解析 在模板中,定义模板类型 templateclass T和 templatetypename T都是一样的,有时用class容易引起混淆,所以在标准
34、化时引入了关键字 typename。16.派生类中的成员不能直接访问基类中的( )成员。(分数:2.00)A.publicB.private C.virtualD.protected解析:解析 即使是共有继承,其私有成员仍为私有,无法访问。17.有下列程序: #includeiostream using namespace std; class VAC public: int f() constreturn3; int f() return 5; ; int main() VAC v1; const VAC v2; coutv1.f()v2.f(); return 0; 运行该程序的输出结果是
35、( )。(分数:2.00)A.53 B.35C.55D.33解析:解析 此题考查的是常成员函数的应用。VAC 类中说明了两个函数,一个是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象 v1调用的是普通函数,输出 5;通过常对象 V2调用是常成员函数,输出 3。18.下列特征中不是面向对象方法的主要特征的是( )。(分数:2.00)A.多态性B.继承C.封装性D.模块化 解析:解析 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计
36、的特点。19.下列叙述中正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。20.下列叙述中正确的是( )。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个算法的空间
37、复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对 解析:解析 算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。21.有下列程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void fimction(double val) val=3; 编译运行这个程序将出现的情况是( )。(分数:2.00)A.编
38、译出错,无法运行B.输出 3C.输出:3.0D.输出一个不确定的数 解析:解析 此题考查的是函数参数的传递。在 C+语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作都不会改变实参的值。22.有下列程序: #includeiostream using namespace std; class TestClass protected: TestClass()coutx; TestClass(char c)coutc; ; class TestClassl:public TestClass public: TestClassl(char
39、c)coutc; ; int main() TestClass1 d1(y); retum 0; 执行这个程序屏幕上将显示输出( )。(分数:2.00)A.yB.yxC.xy D.yy解析:解析 程序中的类 TestClass为基类,TestClass1 为 TestClass的派生类。由 main主函数入手,定义TestClass1类型的对象 d1,参数值为 y。 TestClass1 类继承 TestClass,所以主函数中“TestClass1 d(y);”语句首先调用“TestClass1(char c)coutc;”,然后调用基类中的 “TestClass()coutx;输出 x,最
40、后执行“TestClass(char c)coutc;”,输出 y,即答案为“xy”。23.若有下列定义及初始化语句: int i=100; int*p= intk=*ip; 并假设整型数 i的地址为0x12345678,指针中的地址为 0x21000000,则 k的值为( )。(分数:2.00)A.0x12345678B.0x21000000C.100 D.异常解析:解析 “int *p= a=a+b+i; i=i+a; void main() int x=5,y=2; fun(x,y); coutx“,“; fun(x); coutxendl; (分数:2.00)A.5,2B.7,11C.
41、11,23D.9,23 解析:解析 由程序中的主函数 main入手,定义了变量 x=5,y=2。然后调用 fun函数,其中 a为引用地址,其改变会影响实参的改变。fun 函数中的 i=2定义为静态变量,有效到文件结束。所以主函数中第一输出x值为函数 fun中的 a值,即 9。而 i=11。第二次调用 fun函数时,x=9,i=11,所以 a=9+11+3=23。30.设计程序时应采纳的原则之一是( )。(分数:2.00)A.程序的结构应有助于读者的理解 B.限制 GOTO语句的使用C.减少或取消注释行D.程序越短越好解析:解析 程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程
42、序滥用 GOTO语句将使程序流程无规律,可读性差;添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依实际的需要而定,并不是越短越好。31.有下列程序: #includeiostream using namespace std; class TestClass int a; public: TestClass(int x)a=x; void show()couta; ; class TestClass1:publicTestClass int b; public: TestClass1(int i):TestClass(i+1),b(i) void show()coutb; ; int
43、 main() TestClass b(5),*p; TestClass1 d(1); p= p-show(); return 0; 运行后的打印结果是( )。(分数:2.00)A.5B.1C.0D.2 解析:解析 TestClass 为 TestClass1的基类,在主函数 main中定义 TestClass对象 b,*p。TestClass1 对象d,p指向 d,调用其 show函数。“TestClass1(int i):TestClass(i+1),b(i)”语句中的 TestClass类参数为 2,所以 show输出 2。32.有下列程序: #includeiostream Using
44、 namespace std; Class Amount int amount; public; Amount(int n=O):amount(n) Int getAmount()constreturn amount; Amount return ; int main() Amount x(3),y(7); x+=y; coutx.getAmount()endl; return 0; 己知程序的运行结果是 10,则横线处缺失的表达式是( )。(分数:2.00)A.*thisB.thisC.while(i25)i+=3;couti; 输出结果是( )。(分数:2.00)A.24B.25C.27
45、D.28解析:解析 此题考查的是循环语句 while的使用。i 为 3的倍数,当 i=24时,i25,执行 while的循环体i+=3,则 i=27,不满足 i25 的条件,结束循环。35.下列程序的输出结果是( )。 #includeiostream using namespace std; class TestClass static int i; public: TestClass()i+; TestClass()i-; static int getVal()retum i; ; int TestClassi=0; void fun()TestClass ob2;coutob2.getV
46、al(); int main() TestClass obi; fun(); TestClass*ob3=new TestClass;coutob3-getVal(); delete ob3;coutTestClassgetVal(); retum 0; (分数:2.00)A.111B.121C.211D.221 解析:解析 由主函数 mian入手,首先定义 TestClass对象 ob1,调用构造函数后,i 等于 1。在“int TestClassi=0”语句中,i 首先被赋值为 0,它是静态函数可以被所有对象引用,并且静态成员变量,当它值被改变后,则在各对象中这个数据成员的值都同时改变。主函数中首先调用 fun函数,其中又定义了对象 ob2,调用 gtVal;i 等于 2,输出。主函数“obj*ob3=newTestClass;coutob3-getVal();”动态分配,i 等于 2,输出。“delete ob3;”析构函数后,i 等于 1,然后出 1。即 221。二、B填空题/B(总题数:15,分数:30.00)36.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模