1、二级 C+-210 及答案解析(总分:83.50,做题时间:90 分钟)一、选择题(总题数:35,分数:59.00)1.下列语句中,错误的是_。(分数:2.00)A.const int buffer=256;B.const int temp;C.const double *point;D.const double *rt=new double(5.5);2.面向对象程序设计将数据与 _ 放在一起,作为一个互相依存、不可分割的整体来处理。(分数:2.00)A.信息B.数据抽象C.数据隐藏D.对数据的操作3.C+语言对 C 语言做了很多改进,C+语言相对于 C 语言的最根本的变化是_。(分数:1.
2、00)A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规定函数说明符必须用原型D.引进了类和对象的概念4.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率5.下列选项中,错误的 C+表达式是_。(分数:2.00)A.a+B.“b“=10C.double(3/5)D.x+!=3|y6.有如下程序: #includeiostream #includestr
3、ing using namespace std; class Instrument public: Instrument(string t=“乐器“,string n=“无名“):type(t),name(n) virtual string GetType() constreturn“乐器“; virtual string GetName() constreturn“无名“; protected: stnng type,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴“):lnstrument(t
4、,n) string CetType() constreturn“钢琴“; string GetName() constreturn name; ; int main() Instrument * pi=new Piano(“星空“); coutpi-GetType()“-“pi-GetName(); delete pi; return 0; 运行时的输出结果是_。(分数:1.00)A.钢琴-星空B.钢琴-无名C.乐器-星空D.乐器-无名7.有如下语句序列: char str10; cinstr; 当从键盘输入“I love this game”时,str 中的字符串是_。(分数:2.00)A
5、.“I love this game“B.“I love thi“C.“I love“D.“I“8.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA9.若 MyTemp 是一个具有虚拟类型参数的类模板,且 有如下语句序列: MyTempdoublep2; MyTemplongp32; 编译系统在处理上面的语句序列时,所生成的模板 MyTemp 的实例的个数是_。(分数:2.50)A.1B.2C.3D.410.有
6、如下程序: #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; Coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClas
7、s:getCount(); return 0; 程序的输出结果是_。(分数:1.00)A.121B.232C.221D.12211.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。 其中数据独立性最高的阶段是(分数:1.00)A.数据库系统B.文件系统C.人工管理D.数据项管理12.有如下程序段: int i=0,j=1; int / r=j;/ int*p=/ *p=r;/ 其中会产生编译错误的语句是_。(分数:1.00)A.B.C.D.13.有以下程序: #include iostream using namespace std; class B privat
8、e: int a,b; public: B() B(int i,int j); void printb(); ; class A B C; public: A() A(int i,int j); void printa(); ; A:A(int i,int j) :c(i,j) void A:printa() c.printb (); B:B(int i, int j) a=i; b=j; void B: :printb() couta“, “bend1; int main () A m(7,8); m.printa(); return 0; 该程序运行后的输出结果是 _ 。(分数:1.00)
9、A.5,6B.7,8C.8,9D.9,1014.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性B.分类性C.多态性D.标识唯一性15.下面不属于软件工程的 3 个要素的是 _ 。(分数:1.00)A.工具B.过程C.方法D.环境16.执行语句:coutsetfill(“*“)setw(10)setfill(“#“)left123“OK“endl;return 0;)后将输出 _ 。(分数:2.00)A.123*OKB.123#OKC.123*OK*D.123#OK#17.同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中称为_。(分数:2.50)A.命名
10、冲突B.概念冲突C.域冲突D.约束冲突18.为了提高函数调用的实际运行速度,可以将较简单的函数定义为_。(分数:1.00)A.内联函数B.重载函数C.递归函数D.函数模板19.下列关于函数参数的叙述中,正确的是_。(分数:2.00)A.在函数原型中不必声明形参类型B.函数的实参和形参共享内存空间C.函数形参的生存期与整个程序的运行期相同D.函数的形参在函数被调用时获得初始值20.若有以下程序: #include iostream using namespace std; class Base private: int a,b; public: Base(int x, int y) a=x; b
11、=y; void show() couta“, “bend1; ; class Derive : public Base private: int c, d; public: Derive(int x, int y, int z,int m):Base(x,y) c=z; d=m; void show() coutc“, “dend1; ; int main ( ) Base b(50,50) ,*pb; Derive d(10,20,30,40); pb= pb-show ); return 0; (分数:1.00)A.10,20B.30,40C.20,30D.50,5021.关于在调用模板
12、函数时模板实参的使用,下列表述中正确的是_。(分数:2.50)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略22.有如下程序: #indudeiostream using namespace std; class A public: A()cout“A“; A()cout“A“; ; class B A*p; public: B()cout“B“;p=n
13、ew A; B()cout“B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA23.有如下程序: #includeiostream using namespace std; class B public: virtual void f()cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“;) ; void h(B* p)p-f();
14、p-g(); int main() D obj; h( return 0; 运行这个程序的输出结果是_。(分数:2.00)A.DDB.BBC.BDD.DB24.程序中有如下语句 for(int i=0;i5;i+)cout*(p+i)“,“;能够依次输出 int 型一维数组 a的前 5 个元素。由此可知,变量 P 的定义及初始化语句是 _ 。(分数:2.00)A.int*p=a;B.int p=a;C.*p=a;D.p=a;25.有如下程序: #include iostream using namespaee std; int main() void function( double val)
15、 ; double val; function(val) ; cout val ; return 0 ; void function( double val) val =3; 编译运行这个程序将出现的情况是 _ 。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数26.已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是(分数:2.00)A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值27.假定
16、一个类的构造函数为 A(int aa,int bb)a=aa-;b=a*bb;,则执行 A x(4,5);语句后,x.a 和x.b 的值分别为_。(分数:2.50)A.3 和 15B.5 和 4C.4 和 20D.20 和 528.下列选项中合法的用户标识符是 _ 。(分数:2.00)A.10ngB.2TestC.3DmaxD.dat29.若字符指针 p 所指向的字符串为“abcdefg“,在执行语句_。 char*ap=new charstrlen(p)+1; 之后,ap 指向的字符数组的元素个数为(分数:2.00)A.9B.8C.7D.630.下列关于线性链表的描述中,正确的是_。 、只含
17、有一个指针域来存放下一个元素地址 、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件) 、结点由两部分组成:数据域和指针域。(分数:2.50)A.仅、B.仅、C.仅、D.全部31.关于关键字 class 和 typename,下列表述中正确的是_。(分数:1.00)A.程序中的 typename 都可以替换为 classB.程序中的 class 都可以替换为 typenameC.在模板形参表中只能用 typename 来声明参数的类型D.在模板形参表中只能用 class 或 typename 来声明参数的类型32.执行语句序列 ofstream outfile(“DATA. DA
18、T“); if(.)cout“OK“;else cout“FAIL“; 后,如果文件打开成功,显示“OK”,否则显示“FAIL”。由此可知,上面 if 语句的处的表达式是_。(分数:2.50)A.outfile.fail()或 outfileB.outfile.good()或!outfileC.out.file.good()或 outfileD.outfile.fail()或!outfile33.有如下类定义: class B public:void funl() private:void fun2() protected:void fun3() ; class D:public B prot
19、ected:void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:2.50)A.obj.fun1()B.obj.fun2()C.obj.fun3()D.obj.fun4()34.下列关于纯虚函数与抽象类的描述中,错误的是 _ 。(分数:1.00)A.纯虚函数是一种特殊的虚函数,它没有具体的实现B.抽象类是指具有纯虚函数的类C.一个基类中说明具有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出35.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是(分数:2.00)A.int ope
20、rator-(FunNumber);B.FunNumber operator-( );C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber);二、填空题(总题数:15,分数:24.50)36.C+语言中的友元函数为在类外访问类中的私有成员和保护成员提供了方便,但破坏了类的 1 和 2。 (分数:1.00)37.数据流图的类型有 _ 1_ 和事务型。 (分数:1.00)38.有如下的类模板定义: template typename TYPE class MyClass TYPE n; public: MyClass(TYPE
21、 k); . ; 其中构造函数 MyClass 用 k 的值初始化数据成员 n。因此在模板类体外,构造函数 MyClass 应定义为 1。 (分数:2.50)39.已知下列程序的输出结果是 42,请将画线处缺失的部分补充完整。 #include iostream using namespace std; class Foo int value; public: Foo 0=:value(0) void setValue(int value) _ 1_ = value; /给 Foo 的数据成员 value 赋值 void print() cout value; ; int main() Foo
22、 f; f.setValue(42); f.print(); return(); (分数:2.00)40.虚函数必须是类的 1。 (分数:2.00)41.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 _ 1_ 两个含义。 (分数:1.00)42.假定 A 为一个类,则语句 A(A c=a*b: return c; void main() int a=3,b=5,c=4,x=0; x=fun(fun(a,b),c); coutxendl; 其运行结果是 1。 (分数:2.00)44.由关系数据库系统支持的完整性约束是指 1 和参照完整性。 (分数:1.00)45.大多数 C+程
23、序都要包含 1 头文件。该文件中包含了所有输入/输出流操作所需要的基本信息。 (分数:1.00)46.在最坏情况下,堆排序需要比较的次数为 _ 1_ 。 (分数:1.00)47.一个纯虚函数声明中最后三个字符是 1。 (分数:2.00)48.下列程序中需要清理动态分配的数组,划线处应有的语句是 1。 #includeiostream, h class person int age, tall; public: person() age= 0; tall= 40; cout“A baby is born. “end1; person(int i) age=i, tall=40, cout“A o
24、ld person. “end1; person(int i, int i) age = i; tall = j; cout “ a old person with tall. “ end1; person( ) cout“ person dead. “end 1; void show() cout“age= “age“ ,tall= “tallend1; ; void main() person * ptr; ptr = new person3; ptr0=person ( ) ptr1=person(18); ptr2=person(20,120); for(int i=0;i3; i+)
25、 ptri. show( ); 2 (分数:2.00)49.对虚函数的调用有两种方式: 1 和 2。 (分数:2.00)50.一棵二叉树的中序遍历结果为 DBEAFC,前序遍历结果为 ABDECF,则后序遍历结果为 1。 (分数:2.00)二级 C+-210 答案解析(总分:83.50,做题时间:90 分钟)一、选择题(总题数:35,分数:59.00)1.下列语句中,错误的是_。(分数:2.00)A.const int buffer=256;B.const int temp; C.const double *point;D.const double *rt=new double(5.5);解析
26、:解析 此题考查的是符号常量的概念。符号常量必须在声明的同时赋初值,故选项 B 错误;选项C 定义的是一个指向常量的指针变量,即通过指针不能改变它所指向的内容,而它自己的内容是可以改变的,C 选项正确。2.面向对象程序设计将数据与 _ 放在一起,作为一个互相依存、不可分割的整体来处理。(分数:2.00)A.信息B.数据抽象C.数据隐藏D.对数据的操作 解析:3.C+语言对 C 语言做了很多改进,C+语言相对于 C 语言的最根本的变化是_。(分数:1.00)A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规定函数说明符必须用原型D.引进了类和对象的概念 解析:解析 C+语言最重要
27、的特点是其为一种面向对象的程序设计语言,但是 C+语言也包含了 C 语言的全部特征。4.下列叙述中正确的是_。(分数:2.50)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。根据以上分析可知,D 选项为正确答案。5.下列选项中,错误的 C
28、+表达式是_。(分数:2.00)A.a+B.“b“=10 C.double(3/5)D.x+!=3|y解析:6.有如下程序: #includeiostream #includestring using namespace std; class Instrument public: Instrument(string t=“乐器“,string n=“无名“):type(t),name(n) virtual string GetType() constreturn“乐器“; virtual string GetName() constreturn“无名“; protected: stnng ty
29、pe,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴“):lnstrument(t,n) string CetType() constreturn“钢琴“; string GetName() constreturn name; ; int main() Instrument * pi=new Piano(“星空“); coutpi-GetType()“-“pi-GetName(); delete pi; return 0; 运行时的输出结果是_。(分数:1.00)A.钢琴-星空 B.钢琴-无名C
30、.乐器-星空D.乐器-无名解析:解析 本题考查虚函数的运用,本题中基类 Instrument,派生类 Piano,其中虚函数为GetType,当定义 Instrument*pi=new Piano(“星空“)时,调用派生类的 GetType 函数,得到 type 为钢琴,name 为星空,所以输出钢琴-星空。选项 A 正确。7.有如下语句序列: char str10; cinstr; 当从键盘输入“I love this game”时,str 中的字符串是_。(分数:2.00)A.“I love this game“B.“I love thi“C.“I love“D.“I“ 解析:cin 是
31、C+预定义的标准输入流对象,cin 用来接收字符串时,遇“空格”、“TAB”、“回车”时都会结束。所以本题答案为 D。8.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:1.00)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.54321EDCBA解析:解析 栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B。9.若 MyTemp 是一个具有虚拟类型参数的类模板,且 有如下语句序列: MyTempdoublep2; MyTemplongp32; 编译系统在处理上面的语句序
32、列时,所生成的模板 MyTemp 的实例的个数是_。(分数:2.50)A.1B.2 C.3D.4解析:解析 类模板是一系列相关类的模板或样板,成员函数的源代码形式相同,不同的是所针对的类型不一样,如题中的一个 double 类型,一个 long 类型;类模板中数据类型本身是它的参数,它是类的生成器。10.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count; private: st
33、atic int count; ; int MyClass:count=0; int main() MyClass obj; Coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是_。(分数:1.00)A.121 B.232C.221D.122解析:解析 本题考查的知识点是静态成员。类中的静态成员是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员被所有属于这个类的对象共享。这种共享与全局变量或全
34、局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个 obj 对象,其构造函数使 MyClass 的静态数据成员 count 增 1,所以第一条输出语句输出的结果是 1。然后通过指针动态创建了一个 MyClass 类的对象,构造函数再次被调用,count 变为 2,所以第二次输出结果是 2。接下来是用 dilete 删除了刚才动态创建的 MyClass 对象。析构函数被调用,count 减 1 变为 1,第三次输出 1。故本题的输出为 121。11.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。 其中数据独立性最高的阶段是(分数:1.00
35、)A.数据库系统 B.文件系统C.人工管理D.数据项管理解析:解析:人工管理阶段是在 20 世纪 50 年代中期以前出现的,数据不独立,完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具有高度的物理独立性和一定的逻辑独立性。12.有如下程序段: int i=0,j=1; int / r=j;/ int*p=/ *p=r;/ 其中会产生编译错误的语句是_。(分数:1.00)A. B.C.D.解析:解析 本题考查指针和引用。为引用,使用正确;中 class B private: int a,b; public: B() B(int i,int j); void prin
36、tb(); ; class A B C; public: A() A(int i,int j); void printa(); ; A:A(int i,int j) :c(i,j) void A:printa() c.printb (); B:B(int i, int j) a=i; b=j; void B: :printb() couta“, “bend1; int main () A m(7,8); m.printa(); return 0; 该程序运行后的输出结果是 _ 。(分数:1.00)A.5,6B.7,8 C.8,9D.9,10解析:解析 本题考核类的定义和应用。程序首先定义了两个
37、类 A 和 B。在类 A 中,其私有数据成员 c为类 B 的对象。类 A 的成员函数 printa()中,调用私有成员对象 c 的成员函数 printb()输出类 B 私有数据成员 a 和 b 的值。14.在面向对象方法中,不属于“对象”基本特点的是_。(分数:1.00)A.一致性 B.分类性C.多态性D.标识唯一性解析:解析 对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择 A。15.下面不属于软件工程的 3 个要素的是 _ 。(分数:1.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目
38、的技术手段:工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。16.执行语句:coutsetfill(“*“)setw(10)setfill(“#“)left123“OK“endl;return 0;)后将输出 _ 。(分数:2.00)A.123*OKB.123#OK C.123*OK*D.123#OK#解析:17.同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中称为_。(分数:2.50)A.命名冲突B.概念冲突 C.域冲突D.约束冲突解析:解析 同一概念在一处为实体,而在另一处为属性或联系的冲突称为概念冲突。18.为了提高函数调用的实际运行速度,可以将较
39、简单的函数定义为_。(分数:1.00)A.内联函数 B.重载函数C.递归函数D.函数模板解析:解析 一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。19.下列关于函数参数的叙述中,正确的是_。(分数:2.00)A.在函数原型中不必声明形参类型B.函数的实参和形参共享内存空间C.函数形参的生存期与整个程序的运行期相同D.函数的形参在函数被调用时获得初始值 解析:20.若有以下程序: #include iostream u
40、sing namespace std; class Base private: int a,b; public: Base(int x, int y) a=x; b=y; void show() couta“, “bend1; ; class Derive : public Base private: int c, d; public: Derive(int x, int y, int z,int m):Base(x,y) c=z; d=m; void show() coutc“, “dend1; ; int main ( ) Base b(50,50) ,*pb; Derive d(10,2
41、0,30,40); pb= pb-show ); return 0; (分数:1.00)A.10,20 B.30,40C.20,30D.50,50解析:解析 本题考核基类指针的使用。本题首先定义了一个基类 Base 和一个由 Base 派生出来的派生类 Derive。在主函数中,定义了一个基类 Base 指针吵和基类对象 b,还定义了派生类 Derive 的对象 do然后将派生类对象 d 的地址赋值给指向基类 Base 的指针 pb。由于 Derive 是 Base 的子类型,因此允许上述赋值。但这时指针 pb 只能使用从基类 Base 继承的成员,即当 pb 指向 d 对象时,pb-show
42、 还是调用基类 Base 的成员函数 show()。所以程序最后输出的是对象 d 中对基类成员的初始化值,即 10,20。21.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:2.50)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:22.有如下程序: #indudeiostream using namespace std; cl
43、ass A public: A()cout“A“; A()cout“A“; ; class B A*p; public: B()cout“B“;p=new A; B()cout“B“;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是_。(分数:1.00)A.BAAABAB.ABABAA C.BAABAAD.ABAABA解析:解析 本题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此
44、本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B,p=new A 再调用类 A 的构造函数输出 A。析构函数的调用顺序和构造函数的调用顺序相反。23.有如下程序: #includeiostream using namespace std; class B public: virtual void f()cout“B“; void g()cout“B“; ; class D:public B public: void f()cout“D“; void g()cout“D“;) ; void h(B* p)p-f();p-g(); int main() D obj; h( r
45、eturn 0; 运行这个程序的输出结果是_。(分数:2.00)A.DDB.BBC.BDD.DB 解析:解析 在基类 B 中定义虚函数 f()和成员函数 g(),而在派生类 D 中定义了函数 f()和同名函数 g()。而函数 h 中的形参为指向基类的指针变量 p,所以在主函数中执行 h(i5;i+)cout*(p+i)“,“;能够依次输出 int 型一维数组 a的前 5 个元素。由此可知,变量 P 的定义及初始化语句是 _ 。(分数:2.00)A.int*p=a; B.int p=a;C.*p=a;D.p=a;解析:解析 从循环语句中可以看出,是在 04 的循环中输出数组 a 中的前,5 个元
46、素,输出的值为*(p+i),即为指针 p 向后移动指向的元素。所以初始化要将指针 p 指向数组 a,即 int*P=a;。25.有如下程序: #include iostream using namespaee std; int main() void function( double val) ; double val; function(val) ; cout val ; return 0 ; void function( double val) val =3; 编译运行这个程序将出现的情况是 _ 。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 本题考查函数调用及传值方式传递参数,执行函数 function 时,并没有将 3 的值传回来,而 val 又没有初始化,所以会输出一个不确定的值,D 选项正确。26.已知在一个类体中包含如下函数原型:VOLUME o