1、二级 C+-204 及答案解析(总分:87.00,做题时间:90 分钟)一、选择题(总题数:35,分数:62.00)1.有如下程序: #include iostream using namespace std; int main() cout.fill(“*“); cout.width(6); cout.fill(“#“); cout123end1; return 0; 执行后的输出结果是(分数:2.00)A.#123B.123#C.*123D.123*2.控制格式输入/输出的操作子中,设置域宽的函数是(分数:2.00)A.wsB.octC.setfill(int)D.setw(int)3.下
2、面关于类概念的描述中 _ 是错误的。(分数:1.00)A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的样板D.类就是 C 语言中的结构体类型4.对于模板定义关键字 class 和 typename 说法不正确的是_。(分数:1.00)A.程序中的 class 并不能都替换为 typenameB.class 和 typename 都可互相替换C.程序中的 typename 都能替换为 classD.程序中的部分 class 可以替换为 typename5.有如下程序: #includeiostream using namespace std; class T
3、lestClass int n; public: TestClass(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() TestClass p(5); colast TestClass q(6); coutp.get()q.get(); return 0; 执行后的输出结果是 _ 。(分数:2.00)A.55B.57C.75D.776.下列叙述中正确的是(分数:1.00)A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高D.上述三种说法都不对7
4、.下列关于类模板的描述中,错误的是_。(分数:1.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数8.负责数据库中查询操作的数据库语言是_。(分数:2.50)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言9.有函数模板声明和一些变量定义如下: templateclass T1,class T2,class T3T1 sum(T2,T3); double d1,d2; 则下列调用中,错误的是_。(分数:3.00)A.sumdouble,double,double(d1,d2);B.sumdouble,do
5、uble(d1,d2);C.sumdouble(d1,d2);D.sum(d1,d2);10.C+流中重载了运算符,它是一个_。(分数:2.50)A.用于输出操作的成员函数B.用于输入操作的成员函数C.用于输入操作的非成员函数D.用于输出操作的非成员函数11.下列叙述中错误的是_。(分数:2.50)A.gets 函数用于从终端读人字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件12.要定义一个引用变量 p,使之引用类 MyClass 的一个对象,正确的定义语句是 _ 。(分数:2.00)A.MyC
6、lass p=MyClass;B.MyClass p=new MyClass;C.MyClass p=new MyClassD.MyClass a,p=a;13.有如下程序; #includeiostream using namespace std; clas Basel public: Basel(int d)coutd; Basel() ; class Base2 public: Base2(int d)outd; Base2() ; class Derived:public Base1,Base2 public: Derived(int a,int b,int c,intd): Base
7、1(b),Base2(a),b1(d),b2(c) private: int b1; int b2; ; int main() Derived d(1,2,3,4); return 0; 运行时的输出结果是_。(分数:1.00)A.1234B.2134C.12D.2114.在设计程序时,应采纳的原则之一是 _ 。(分数:2.00)A.不限制 goto 语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解15.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链
8、表是非线性结构16.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段17.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.50)A.赋值运算符只能作为类的成员函数重载B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符18.没有如下三个关系表: (分数:1.00)A.T=RSB.T=RSC.T=RSD.T=R/S19.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.bre
9、ak 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内20.面向对象程序设计思想的主要特征中不包括_。(分数:2.50)A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性21.设有以下程序段: int a5=0,*p,*q; p=a; q=a; 则下列选项中,合法的运算是 _ 。(分数:1.00)A.p+qB.p-qC.p*qD.p%q22.下面程序的结果为 _ 。 #include“iostream.h“ void change (int a,int b)
10、 int temp; temp=a; a=b; b=temp: void main() int m,n; m=8; n=9; change(m,n): cout m“ “ n endl; (分数:1.00)A.89B.98C.程序有错误D.9923.已知主函数中通过如下语句序列实现对函数模板 swap 的调用: int a10,b10; swap(a,b,10); 下列对函数模板 swap 的声明中,会导致上述语句序列发生编译错误的是_。(分数:2.50)A.templatetypename Tvoid swap(T a,T b,int size);B.templatetypename Tvo
11、id swap(int size,T a,T b);C.templatetypename T1,typename T2void swap(T1 a,T2 b,int size);D.templateclass T1,class T2void swap(T1 a,T2 b,int size);24.已知 Value 是一个类,value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是_。(分数:1.00)A.Value operator+(Value v, int i);B.Value operator+(Value v=value, int i);C.Valu
12、e operator+(Value v, int i=0);D.Value operator+(Value v=value, int i=0);25.有下列程序: # include stdio.h void fun(int*s,int n1,int n2) int i,j,t; i=n1;j=n2 while(ij)t=si;si=sj;sj=t;i+;j-; void main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“, ak);printf (
13、“/n“); 程序的运行结果是_ 。(分数:2.50)A.0987654321B.4321098765C.5678901234D.098765123426.有如下程序: #includeiostream #includeiomanip using namespace std; int main() cOUtsetw(10)serfill(“x“)setprecision(8)left; cout12.3456793_98765; return 0; 若程序的输出是 12.345679x98765xxxxx,则划线处缺失的部分是_。(分数:2.50)A.setw(10)B.setfill(“x“
14、)C.setprecision(8)D.right27.下列关于 C+函数的说明中,正确的是_。(分数:2.50)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式28.关于抽象类,下列表述中正确的是_。(分数:2.50)A.抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)B.派生类必须实现作为基类的抽象类中的纯虚函数C.派生类不可能成为抽象类D.抽象类不能用来定义对象29.下列选项中,_不属于软件设计的基本原理。
15、(分数:2.50)A.抽象B.模块化C.信息公开D.模块独立性30.下列关于信息和数据的叙述不正确的是 _ 。(分数:2.00)A.信息是数据的符号表示B.信息是数据的内涵C.信息是现实世界事物的存在方式或运动状态的反映D.数据是描述现实世界事物的符号记录31.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模
16、板实参,任何情况下都不能省略32.有下列程序: #include stdio.h void fun(int*a,int*b) int*c; c=a;a=b;b=c; void main() int x=3,y=5,*p=,*q=y; fun(p,q);printf(“%d,%d,“,*p,*q); fun(x,y);printf(“%d,%d/n“,*p,*q) 程序运行后的输出结果是_。(分数:2.50)A.3,5,5.3B.3,5,3,5C.5,3,3,5D.5,3,5,333.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据
17、结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构34.有如下程序: classBase public: int data: ; class Derived1:public Base; class Derived2:protected Base; int main() Derived1 d1; Derived2 d2; d1.data=0; / d2.data=0; / return 0; 下列关于程序编译结果的描述中,正确的是_。(分数:2.00)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误D.皆有编译错误35.决定 C+语言中函数的返回值类型的是(
18、分数:1.00)A.return 语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型二、填空题(总题数:15,分数:25.00)36.以下程序运行后的输出结果是 1。 #include iostream.h void main() char a=“abcdabcabfgacd“; int i1=0,i2=0,1=0; while(ai) if(ai=“a“) i1+; if(ai=“b“) i2+; i+; couti1“i2endl; (分数:2.00)37.使用如 setw()的操纵符对数据进行格式输出时,应包含 1 文件
19、。 (分数:2.00)38.数据库系统中实现各种数据管理功能的核心软件称为 _ 1_ 。 (分数:1.00)39.关系数据库的关系演算语言是以 1 为基础的 DML 语言。 (分数:2.00)40.下面程序的输出结果是 _ 1_ 。 #include iostream using namespace std; class base protected: int a; public: base()cout“0“: ; class basel: virtual public base public: base1() cout“1“; ; class base2 : virtual public b
20、ase public: base2()cout“2“; ; class derived : public base1,public base2 public: derived () cout“3“; int main () derived obj; coutend1; return 0; (分数:2.00)41.在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。 (分数:2.00)42.如果不能使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基数继承的成员,下列程序没有使用多态机制,其输出结果是 1。 #includeiostream using
21、namespaee std; class Base public: void print( )tout“B“; class Derived:publie Base public: void print( )tout“D“; int main( ) Derived*pd=new Derived( ); Base*pb=pd: pb-print( ); pd-print( ); delete pd; return 0; (分数:2.00)43.阅读下列程序: #includeiostream.h void fun(int n) int x(5); static int y(10); if(n0)
22、+x; +y; coutx“,“yendl; void main() int m(1); fun(m); 则该程序的输出结果是 1。 (分数:2.00)44.根据程序中的注释将下列缺失部分补充完整。 class Point int x,y; /点的 x 和 y 坐标 public: Point(int xx=0,int yy=0):x(xx),y(yy) ; class Circle Point center;/圆心位置 int radius;/半径 public: /利用 cx 和 cy 分别初始化圆心的 x 和 y 坐标 Circle(int cx;int cy,int r): 1,rad
23、ius(r) void area()cout3.14159*radius*radiusendl; ; (分数:2.00)45.根据下面的主程序,完成类的一种构造函数的最简单形式。 #includeiostream. h class base private: int num; public: 1; ; void main() base try(6); (分数:2.00)46.C+是一种面向对象的程序设计语言,它充分支持面向对象思想中的三个主要特征是 1 性; 2 性和 3性。 (分数:1.00)47.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 _ 1_ 。 (分数:2.
24、00)48.有以下程序: #include iostream using namespace std; class Base int a; public: Base(int x) a-x; void show() couta; ; class Derived : public Base int b; public: Derived(int i) :Base(i+1) void show() coutb; ; int main ( ) Base b(5) ,*pb; Derived d(1); pb= pb-show (); return 0; 运行后的打印结果是 _ 1_ 。 (分数:1.00
25、)49.以下程序的执行结果是 1。 #includeiostream.h #includeiomanip.h voidmain() coutfill(“*“); coutwidth(10); coutsetiosflags(ios:left)“123.45“endl; coutwidth(8); cout“123.45“endl: coutwidth(4); cout“123.45“endl; (分数:1.00)50.设置虚基类的目的是 1,通过 2 表示虚基类。 (分数:1.00)二级 C+-204 答案解析(总分:87.00,做题时间:90 分钟)一、选择题(总题数:35,分数:62.00
26、)1.有如下程序: #include iostream using namespace std; int main() cout.fill(“*“); cout.width(6); cout.fill(“#“); cout123end1; return 0; 执行后的输出结果是(分数:2.00)A.#123 B.123#C.*123D.123*解析:解析 本题考核 I/O 的格式化输出。语句“cout.fill(“*“);”表示填充字符为*,并且一直有效,直到再次设置填充字符为止。语句“cout.width(6);”用来设置输入输出宽度,当实际数据宽度小于指定的宽度时,多余的位置用填充字符填满
27、;当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出。语句“cout.fill(“#“);”表示将填充字符改为#(即把之前设置的#改为#),由于数据“123”的实际宽度小于 6,由于输出的初始状态为在输出宽度内右对齐,所以前面将会有 3 个填充字符#。2.控制格式输入/输出的操作子中,设置域宽的函数是(分数:2.00)A.wsB.octC.setfill(int)D.setw(int) 解析:解析 本题需要考生记忆一些输入输出控制操作子,oct 为八进制,setfill 为设置填充符,setw为设置域宽。3.下面关于类概念的描述中 _ 是错误的。(分数:1.00)A.类是抽象数据类型的实现B
28、.类是具有共同行为的若干对象的统一描述体C.类是创建对象的样板D.类就是 C 语言中的结构体类型 解析:4.对于模板定义关键字 class 和 typename 说法不正确的是_。(分数:1.00)A.程序中的 class 并不能都替换为 typenameB.class 和 typename 都可互相替换 C.程序中的 typename 都能替换为 classD.程序中的部分 class 可以替换为 typename解析:解析 在 C+程序中,typename 是可以替换为 class 的,但 class 不能都替换为 typename。5.有如下程序: #includeiostream us
29、ing namespace std; class TlestClass int n; public: TestClass(int k):n(k) int get()return n; int get()constreturn n+1; ; int main() TestClass p(5); colast TestClass q(6); coutp.get()q.get(); return 0; 执行后的输出结果是 _ 。(分数:2.00)A.55B.57 C.75D.77解析:解析 C+中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为“intget()const;“的函数,
30、对于非常对象将调用原型为“int get();“的函数。因为首先用 5 对对象 p 进行了初始化,所以执行 p.get()时直接返回 5,而对于常对象则以 6 对 q 进行初始化,在调用 q.get()时,将调用原型为“int get()const;“的函数该函数将返回 n+1,第二个输出应为 7,所以本题答案为 57。6.下列叙述中正确的是(分数:1.00)A.接口复杂的模块,其耦合程度一定低B.耦合程度弱的模块,其内聚程度一定低C.耦合程度弱的模块,其内聚程度一定高 D.上述三种说法都不对解析:解析 影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂
31、的模块,其耦合程度要比接口简单的的模块强,所以 选项 A 的说法错误; 耦合程度弱的模块,其内聚程度一定高,选项 B 错误;选项 C 正确。7.下列关于类模板的描述中,错误的是_。(分数:1.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数 解析:解析 类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。但可以为类模板的参数设置默认值。由此可知应选 D
32、。8.负责数据库中查询操作的数据库语言是_。(分数:2.50)A.数据定义语言B.数据管理语言C.数据操纵语言 D.数据控制语言解析:解析 数据操纵语言专门负责查询、增加、删除等数据操作。9.有函数模板声明和一些变量定义如下: templateclass T1,class T2,class T3T1 sum(T2,T3); double d1,d2; 则下列调用中,错误的是_。(分数:3.00)A.sumdouble,double,double(d1,d2);B.sumdouble,double(d1,d2);C.sumdouble(d1,d2);D.sum(d1,d2); 解析:解析 虚拟类
33、型参数 T1 没有出现在模板函数的形参表中,因此在调用时不可能从模板函数的实参表中获得相应的信息,因此 T1 无法省略。而在选项 D 中省略了。10.C+流中重载了运算符,它是一个_。(分数:2.50)A.用于输出操作的成员函数B.用于输入操作的成员函数C.用于输入操作的非成员函数D.用于输出操作的非成员函数 解析:11.下列叙述中错误的是_。(分数:2.50)A.gets 函数用于从终端读人字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:解析 本题考查的是 C 语言中输入、输出函数的使用
34、,gets 和 getchar 函数用于从标准输入设备键盘读入字符串和字符;fputs 用于把字符串输出到文件;fwrite 用于以二进制形式输出数据到文件12.要定义一个引用变量 p,使之引用类 MyClass 的一个对象,正确的定义语句是 _ 。(分数:2.00)A.MyClass p=MyClass;B.MyClass p=new MyClass;C.MyClass p=new MyClassD.MyClass a,p=a; 解析:解析 选项 A 错误不存在这样的定义方式;选项 B 定义了一个 MyClass 类的对象 p;选项 C 是Java 里的定义方式。13.有如下程序; #inc
35、ludeiostream using namespace std; clas Basel public: Basel(int d)coutd; Basel() ; class Base2 public: Base2(int d)outd; Base2() ; class Derived:public Base1,Base2 public: Derived(int a,int b,int c,intd): Base1(b),Base2(a),b1(d),b2(c) private: int b1; int b2; ; int main() Derived d(1,2,3,4); return 0
36、; 运行时的输出结果是_。(分数:1.00)A.1234B.2134C.12D.21 解析:解析 多继承构造函数执行的顺序为继承时的顺序。所以答案为 D。Dcrived(int a,int b,int c,int d):Base1(b),Base2(a),bl(d),b2(c)的含义是:构造函数 Basel 的参数值为 b,构造函数Base2 的参数值为 a。成员变量 b1,b2 的值分别为 d、C。14.在设计程序时,应采纳的原则之一是 _ 。(分数:2.00)A.不限制 goto 语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解 解析:解析 在设计程序时,应采纳的
37、原则之一是程序结构应有助于读者理解。15.下列叙述中正确的是_。(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构 解析:解析 线性表的特点是:在数据元素的非空有限集合中,存在唯一的一个被称为“第一个”的数据元素;存在唯一一个被称为“最后一个”的数据元素;除第一个以外,集合中的每个数据元素均只有一个后继;除最后一个以外,集合中的每个数据元素均只有一个后继。因此,双向表是非线性结构。16.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于_。(分数:1.00)A.需求分析阶段B.概
38、念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析 E-R 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。17.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.50)A.赋值运算符只能作为类的成员函数重载 B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符解析:18.没有如下三个关系表: (分数:1.00)A.T=RSB.T=RSC.T=RS D.T=R/S解析:解析 关系代数中的集合运算有并、差、交和笛卡儿积四种。根据本题关系 T
39、 中的元组可知,它是由关系 R 和关系 S 进行笛卡儿积运算得到的。19.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内 解析:解析:本题考查的是 break 语句的使用,break 可以结束 switch 语句和 for20.面向对象程序设计思想的主要特征中不包括_。(分数:2.50)A.继承性B.功能分解,逐步求精 C.封装性和信息隐藏D.多态性解析:21.设有以下程序段: int a
40、5=0,*p,*q; p=a; q=a; 则下列选项中,合法的运算是 _ 。(分数:1.00)A.p+qB.p-q C.p*qD.p%q解析:解析 本题考核指针的运算。C+语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。22.下面程序的结果为 _ 。 #include“iostream.h“ void change (int a,int b) int temp; temp=a; a=b; b=temp: void main() int m,n; m=8; n=9; change(m,n): cout m“ “ n endl; (分数:1.
41、00)A.89 B.98C.程序有错误D.99解析:23.已知主函数中通过如下语句序列实现对函数模板 swap 的调用: int a10,b10; swap(a,b,10); 下列对函数模板 swap 的声明中,会导致上述语句序列发生编译错误的是_。(分数:2.50)A.templatetypename Tvoid swap(T a,T b,int size);B.templatetypename Tvoid swap(int size,T a,T b); C.templatetypename T1,typename T2void swap(T1 a,T2 b,int size);D.temp
42、lateclass T1,class T2void swap(T1 a,T2 b,int size);解析:24.已知 Value 是一个类,value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是_。(分数:1.00)A.Value operator+(Value v, int i); B.Value operator+(Value v=value, int i);C.Value operator+(Value v, int i=0);D.Value operator+(Value v=value, int i=0);解析:解析 本题考查运算符重载,其中重
43、载运算符的函数不能有默认的参数,所以本题答案为 A。25.有下列程序: # include stdio.h void fun(int*s,int n1,int n2) int i,j,t; i=n1;j=n2 while(ij)t=si;si=sj;sj=t;i+;j-; void main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“, ak);printf (“/n“); 程序的运行结果是_ 。(分数:2.50)A.0987654321B.43210
44、98765C.5678901234 D.0987651234解析:解析 本题定义一个一维数组并赋初值,接着调用 fun(),功能是使数组中的元素逆序,当调用fUn(a,0,3),将实参传递给形参实现数组 a 中 a0至 a3这 4 个元素逆序;同理调用 fun(a,4,9)是将上步排列好的 a 数组中 a4至 a9这 6 个元素逆序;调用 fun(a,0,9)是将数组中 a0至 a9这 10 个元素再逆序,再用 prtntf()函数输出结果为 5678901234,故选项 C 正确。26.有如下程序: #includeiostream #includeiomanip using namespa
45、ce std; int main() cOUtsetw(10)serfill(“x“)setprecision(8)left; cout12.3456793_98765; return 0; 若程序的输出是 12.345679x98765xxxxx,则划线处缺失的部分是_。(分数:2.50)A.setw(10) B.setfill(“x“)C.setprecision(8)D.right解析:27.下列关于 C+函数的说明中,正确的是_。(分数:2.50)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是 return 语句C.标准 C+要求在调用一个函数之前,必须先声
46、明其原型 D.编译器会根据函数的返回值数型和参数表来区分函数的不同重载形式解析:解析 内联函数不是定义在另一个函数体内部的函数,而是将 inline 放在函数定义中函数类型之前;函数体的最后一条语句可以是任意的语句;编译器不会根据函数返回值的类型来区分重载形式,选项D 错误。标准 C+要求在调用一个函数之前,必须先声明其原型。28.关于抽象类,下列表述中正确的是_。(分数:2.50)A.抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)B.派生类必须实现作为基类的抽象类中的纯虚函数C.派生类不可能成为抽象类D.抽象类不能用来定义对象 解析:29.下列选项中,_不属于软件设计的基本原理。(分数:2.50)A.抽象B.模块化C.信息公开 D.模块独立性解析:解析 软件设计的基本原理包括:抽象;模块化;信息隐蔽;模块独立性。30.下列关于信息和数据的叙述不正确的是 _ 。(分数:2.00)A.信息是数据的符号表示 B.信息是数据的内涵C.信息是现实世界事物的存在方式或运动状态的反映D.数据是描述现实世界事物的符号记录解析:31.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。(分数:1.00)A.对于虚拟类型参数所对应的模