1、二级 C+笔试-278 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.若有以下程序:#include iostreamusing namespace std;class sampleprivate:int x;public:sample() void setx(int i)x=i;friend int fun(sample B,int n)int m=O;for (int i=O; in; i+)if(Bi.xm)m=B i.x;return m;int main ( )sample A10;int arr=90,87,42,78,97,
2、84,60,55,78,65;for (int i=O;i10;i+)Ai. setx (arri);coutfun(A, 10)end1;return 0;该程序运行后的输出结果是( )。(分数:2.00)A.97B.84C.90D.782.下列打开文件的表达式中,错误的是( )。(分数:2.00)A.ofstream ofile; ofile.open(“C:/vc/abc.txt“,ios: :binary);B.fstream iofile; iofile.open(“abc.txt“,ios:ate);C.ifstream ifile(“C:/vc/abc.txt“);D.cout.
3、open(“C:/vc/abc.txt“,ios: :binary);3.下面各选项中,属于非法的 C+整型常量的是( )。(分数:2.00)A.01B.0x11C.081D.-327684.下列数据结构不属于线性表的是( )。(分数:2.00)A.一个 n维向量B.矩阵C.二叉树D.队列5.派生类的构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类的子对象初始化D.派生类中一般数据成员的初始化6.有如下程序:#include iostreamusing namespace std;int b=3;int fun(int *k)i
4、nt b=2;b=*(k+)*b;return(B) ;int main() int a ;11,12,13,14,15,16);b=fun(return (10*(分数:2.00)A.;其程序运行后的输出结果是( )。A) 100B.10C.1000D.1000012.下列各程序段中,不是死循环的是( )。(分数:2.00)A.int j=100;B.for(;)while(1)j=j%100+1;if(j1000) break;C.int n=0;D.int m=36;do while(m)-m;+n;while(n=0);13.下列关于软件工程概念的描述中,错误的是( )。(分数:2.0
5、0)A.软件工程概念的出现源自软件危机B.软件工程就是试图用工程、科学和数学的原理与方法研制,维护计算机软件的有关技术及管理方法C.软件工程包括 3个要素,即方法、工具和过程D.软件工程不重视在软件开发过程中应用工程化原则14.软件测试的目的是( )。(分数:2.00)A.证明软件系统中存在错误B.找出软件系统中存在的所有错误C.尽可能多地发现软件系统中的错误和缺陷D.证明软件的正确性15.以下说法中,不正确的是( )。(分数:2.00)A.C+程序中必须有一个主函数 main(),而且是从 main()的第 1条语句开始执行的B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的
6、C.主函数可以在任何地方出现D.主函数必须出现在固定位置。16.数据是指所有能输入到计算机之中并被计算机程序处理的( )。(分数:2.00)A.文字B.字母C.符号D.数字17.若有如下程序:#include iostreamusing namespaces std;int s=0;class sample,static int n;public:sample(int i)n=i;static void add()s+=n;int sample:s=0;int main()sample a(2),b(5);sample:add();coutsend1;return 0;程序运行后的输出结果是(
7、 )。(分数:2.00)A.2B.5C.7D.318.设有以下程序段:int a5=0,*p,*q;p=a;q=a;则下列选项中,合法的运算是( )。(分数:2.00)A.p+qB.p-qC.p*qD.p%q19.在一棵度为 3的树中,度为 3的节点有 2个,度为 2的节点有 1个,度为 1的节点有 2个,那么,该树的叶节点数目为( )。(分数:2.00)A.4B.5C.6D.720.结构化程序设计所规定的三种基本控制结构是( )。(分数:2.00)A.输入、处理、输出B.树形、网形、环形C.顺序、选择、循环D.主程序、子程序、函数21.请指出在顺序表 2、5、7、10、14、15、18、23
8、、35、41、52 中,用二分法查找关键码 12需做( )次关键码比较。(分数:3.00)A.2B.3C.4D.522.若有以下定义:int a =1,2,3,4,5,6,7;char c1=b,C2=2;则数值不为 2的表达式是( )。(分数:3.00)A.a1B.d-c1C.a3-c2D.c2-023.若有以下程序:#include iostreamusing namespace std;class Basepublic:Base ( )x=0;int x;class Derivedl : virtual public Basepublic:Derivedl ()x=10;class De
9、rived2 : virtual public Basepublic:Derived2 ()x=20;class Derived : public Derivedl,protected Derived2 ;int main ( )Derived obj;coutobj .xend1;return 0;该程序运行后的输出结果是 ( )。(分数:3.00)A.20B.30C.10D.024.不能作为函数重载的判断依据的是( )。(分数:3.00)A.constB.返回类型C.参数个数D.参数类型25.若有以下程序:#include iostreamusing namespace std;class
10、 datapublic:int x;data (int x)data: :x=x;class Aprivate:data d1;public:A(int x) : d1 (x) void dispa()coutd1, x“, “;class B: public Aprivate:data d2;public:B(int x) : A(x-1),d2(x) void dispb()coutd2.xend1;class C : public Bpublic:C(int x) : B(x-1)void disp ()dispa ( );dispb ();int main ( )C obj (5);o
11、bj.disp();return 0;程序执行后的输出结果是( )。(分数:3.00)A.5,5B.4,5C.3,4D.4,326.若有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void show()couta“, “bend1;class Derive : public Baseprivate:int c, d;public:Derive(int x,int y, int z,int m):Base(x,y)c=z;d=m;void
12、show()coutc“, “dend1;int main ()Base b(50,50),*pb;Derive d(10,20,30, 40);pb=pb-show ();return 0;招待程序后的输出结果是( )。(分数:3.00)A.10,20B.30,40C.20,30D.50,5027.若有以下程序:#include iostreamusing namespace Std;class sampleint i;publiC:sample()void setvalue(int m)i=m;void fun(int m)i+=m;void disp()coutiend1;int mai
13、n()sample *ps;ps=new sample;ps-setvalue(20);ps-fun(5);ps-disp();return 0;程序运行后,输出的结果是( )。(分数:3.00)A.15B.20C.25D.3028.下列各函数的说明中,( )是表示纯虚函数。(分数:3.00)A.virtual int vf(int);B.void vf(int)=0;C.virtual void vf()=0;D.virtual void vf(int)29.下列叙述中,不正确的是( )。(分数:3.00)A.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系可能不同B.一个数据结构
14、中的元素在计算机存储空间中的位置关系与逻辑关系一定不同C.数据的存储结构,也称数据的物理结构。D.数据的存储结构与数据的逻辑结构是不同的30.若有以下程序:#include iostreamusing namespace Std;int main()int i ;int a3 3 = 1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)coutai 1“ “;coutend1;return 0;执行后的输出结果是( )。(分数:3.00)A.50 53 56B.49 52 55C.2 5 8D.1 4 7二、填空题(总题数:14,分数:30.00)31.在一个有 n个元素的顺序表的
15、第 i个元素(1in)之前插入一个新元素时,需要向后移动 【1】 个元素(分数:2.00)填空项 1:_32.在面向对象方法中,类之间共享属性和操作的机制称为 【2】 。(分数:2.00)填空项 1:_33.源程序文档化要求程序应加注释。注释一般分为序言性注释和 【3】 。(分数:2.00)填空项 1:_34.强行排错法涉及的调试技术主要是 【4】 和监视表达式。(分数:2.00)填空项 1:_35.数据库的设计通常可以分为这样 4个步骤:需求分析、概念设计、 【5】 和物理设计。(分数:2.00)填空项 1:_36.若有以下程序:#include iostreamusing namespac
16、e std;int main()char a;a=H-A+0;coutaend1;return 0;执行后输出的结果是 【6】 。(分数:2.00)填空项 1:_37.若二维数组 b有 m列,则在 bij前的元素的个数为 【7】 。(分数:2.00)填空项 1:_38.若有如下程序段:#include iostreamusing namespace std;int main()char *p=“abcdefgh“,*r;long *q;q=(long *)p;q+;r=(char *)q;coutrend1;return 0;该程序的输出结果是 【8】 。(分数:2.00)填空项 1:_39.
17、以下程序的输出结果是 【9】 。#include iostreamusing namespace std;void fun()static int a=0;a+=2;couta;int main()int CC;for(CC=1;cc4;CC+)fun();coutend1;return 0;(分数:2.00)填空项 1:_40.假定用户没有给一个名为 MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为 【10】 。(分数:2.00)填空项 1:_41.对虚函数的调用有两种方式: 【11】 和 【12】 。(分数:4.00)填空项 1:_42. 【13】 使一个函数可以定义
18、成对许多不同数据类型完成同一个任务。(分数:2.00)填空项 1:_43.若有以下程序:#include iostreamusing namespace std;class Sampleprivate:const int n;public:Sample(int i) :n(i) )void print()cout“n=“nend1;int main()sample a(10);a.print();return 0;上述程序运行后的输出结果是 【14】 。(分数:2.00)填空项 1:_44.有以下程序:#include iostream#include fstreamusing namespa
19、ce std;int main()ofstream ofile(“D:/test.txt“);if(!ofile)cout“test.txt cant open“end1;return 0;ofile“This book is C+“ “12345end1;ofile.close();ifstream ifile(“D:/test.txt“);if ( ! ifile)cout“test.txt cant open“end1;return 0;char str80;ifilestr;ifile.close();coutstrend1;return 1;程序执行后的输出结果是 【15】 。(分数
20、:2.00)填空项 1:_二级 C+笔试-278 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.若有以下程序:#include iostreamusing namespace std;class sampleprivate:int x;public:sample() void setx(int i)x=i;friend int fun(sample B,int n)int m=O;for (int i=O; in; i+)if(Bi.xm)m=B i.x;return m;int main ( )sample A10;int arr=90,
21、87,42,78,97,84,60,55,78,65;for (int i=O;i10;i+)Ai. setx (arri);coutfun(A, 10)end1;return 0;该程序运行后的输出结果是( )。(分数:2.00)A.97 B.84C.90D.78解析:解析 程序中定义了一个类 sample,以及类 sample的友元函数 fun()。在主函数中,通过 for循环调用各数组对象中的 setx成员函数给各个对象的私有数据成员赋值。而函数 fun()的功能是返回各个数组对象中的最大私有成员数据的值。2.下列打开文件的表达式中,错误的是( )。(分数:2.00)A.ofstream
22、 ofile; ofile.open(“C:/vc/abc.txt“,ios: :binary);B.fstream iofile; iofile.open(“abc.txt“,ios:ate);C.ifstream ifile(“C:/vc/abc.txt“);D.cout.open(“C:/vc/abc.txt“,ios: :binary); 解析:解析 本题考核文件的打开与关闭。流可以分为 3类:输入流、输出流以及输入/输出流,相应地必须将流说明为 ifstream、ofstream 以及 fstream类的对象。如,说明一个输入流对象“ifstream ifile;”。说明了流对象后,
23、可使用函数 open()打开文件。文件的打开即是在流与文件之间建立一个连接。open()的函数原型为:void open(const char *filename,int mode,int port=filebuf:openprot);其中,filename 是文件名字,它可包含路径说明。mode 说明文件的打开模式。除了 open()成员函数外,ifstream、ofstream 以及 fstream 3类流的构造函数也可以打开文件,其参数同 open()函数。例如:“ifstream ifile(“c:/vc/abctxt“);”。打开的文件使用完毕后,必须使用 close()函数将其关闭
24、。close()函数也是流类的成员函数,它没有参数与返回值,其作用是将缓冲区的内容刷新并撤销流与文件之间的连接。当流对象的生存周期后,相应的析构函数也会将文件关闭。由此可知,选项 A、B 和 C的表达式都是正确的。对于选项 D,由于 open函数并不是 cout对象中的成员函数,所以对 open()的调用是非法的。3.下面各选项中,属于非法的 C+整型常量的是( )。(分数:2.00)A.01B.0x11C.081 D.-32768解析:解析 C+语言的整型常量可以有三种表示形式:十进制形式:与日常所用的十进制数形式相同,不能以 0开始。八进制形式:以数字 0开头,由 07 组成。十六进制形式
25、:以数字 0x(或 OX)开头,由 09 及 AF(或 af)组成。根据以上知识考查所给出的 4个选项:选项 A是一个八进制数;选项 B是一个十六进制数;选项 D是一个十进制数;选项 C以 0开始没有跟字母 x(X),但后面的数字 8并不是八进制中使用的数字,故它不是 C+语言的整型常量。4.下列数据结构不属于线性表的是( )。(分数:2.00)A.一个 n维向量B.矩阵C.二叉树 D.队列解析:解析 n 维向量、矩阵、队列都满足线性表的要求:一是只有一个根节点,它无前件:二是只有一个终端节点,它无后件;三是除根节点和终端节点,其他节点都有且只有一个前件,也有且只有一个后件。所以它们都是线性表
26、。二叉树不满足线性表所要求的除根节点和终端节点,其他节点都有且只有一个前件,也有且只有一个后件,所以答案是 C。5.派生类的构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类的子对象初始化 D.派生类中一般数据成员的初始化解析:解析 在 C+中,构造函数不能被继承,因此;派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。但是它不负责基类中子对象
27、的初始化。6.有如下程序:#include iostreamusing namespace std;int b=3;int fun(int *k)int b=2;b=*(k+)*b;return(B) ;int main() int a ;11,12,13,14,15,16);b=fun(return (10*(分数:2.00)A.;其程序运行后的输出结果是( )。A) 100B.10C.1000 D.10000解析:解析 本题考核外部变量的使用。先来了解外部变量:外部变量用关键词 extern表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而
28、言,“定义变量”和“说明变量”是两个不同的概念。定义 a为外部变量是告诉编译程序,a是一个外部变量,并要求系统为 a分配一个固定的永久存储空间。a 的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量 a,主函数给外部变量赋的初始值为 100,当调用函数 fun()时,外部变量 a的值传到函数 fun()中,因此函数所返回的值为 100*10=1000。12.下列各程序段中,不是死循环的是( )。(分数:2.00)A.int j=100;B.for(;)wh
29、ile(1)j=j%100+1;if(j1000) break;C.int n=0;D.int m=36;do while(m)-m;+n;while(n=0); 解析:解析 本题考查三种循环语句的结束条件。对于选项 A,它的条件表达式 1永远为真,故循环永远不会停止,是死循环;对于选项 B,它的条件表达式为空,也是死循环;对于选项 C,它的条件表达式(n=0)总是成立,故也是死循环;对于选项 D,当 m减到小于 0时,它的条件表达式结果为假(false),循环结束。13.下列关于软件工程概念的描述中,错误的是( )。(分数:2.00)A.软件工程概念的出现源自软件危机B.软件工程就是试图用工
30、程、科学和数学的原理与方法研制,维护计算机软件的有关技术及管理方法C.软件工程包括 3个要素,即方法、工具和过程D.软件工程不重视在软件开发过程中应用工程化原则 解析:解析软件工程是个重要概念,考生应在理解的基础上掌握。选项 A、B、C 都是正确的。软件工程强调在软件开发过程中应用工程化原则,选项 D是错误的。14.软件测试的目的是( )。(分数:2.00)A.证明软件系统中存在错误B.找出软件系统中存在的所有错误C.尽可能多地发现软件系统中的错误和缺陷 D.证明软件的正确性解析:解析 软件测试的目的不是证明系统的正确或是系统中的错误,而是要发现错误以便编程人员能够改正。系统中的错误和缺陷往往
31、受到很多偶然因素的影响,不可能完全发现,只能是尽可能地去发现并加以改正。15.以下说法中,不正确的是( )。(分数:2.00)A.C+程序中必须有一个主函数 main(),而且是从 main()的第 1条语句开始执行的B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的C.主函数可以在任何地方出现D.主函数必须出现在固定位置。 解析:解析 本题考核的知识点是主函数的位置和作用。一个完整的 C+程序有且仅有一个主函数。程序总是从主函数的第 1条语句开始执行,到主函数的最后一条语句结束。其他函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。 C+规定,主函数可以出现在程序的
32、任何地方。16.数据是指所有能输入到计算机之中并被计算机程序处理的( )。(分数:2.00)A.文字B.字母C.符号 D.数字解析:解析 数据不是指某一种文字、字母或数字,实际上就是描述事物的符号记录,是抽象的概念。17.若有如下程序:#include iostreamusing namespaces std;int s=0;class sample,static int n;public:sample(int i)n=i;static void add()s+=n;int sample:s=0;int main()sample a(2),b(5);sample:add();coutsend1
33、;return 0;程序运行后的输出结果是( )。(分数:2.00)A.2B.5 C.7D.3解析:解析 本题考核静态数据成员和静态成员函数的应用。程序中定义一个类 sample,它包括一个静态数据成员 n和一个静态成员函数 add(),并在类的构造函数中给类私有静态数据成员 n赋值。在主函数中,定义对象 a(2)时,通过构造函数使静态数据成员 n的值变为 2,在定义对象 b(5)时,通过构造函数使静态数据成员 n=5(覆盖了前面的 n=2),再执行“sample:add();”使全局变量 s=5。18.设有以下程序段:int a5=0,*p,*q;p=a;q=a;则下列选项中,合法的运算是(
34、 )。(分数:2.00)A.p+qB.p-q C.p*qD.p%q解析:解析本题考核指针的运算。C+语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。19.在一棵度为 3的树中,度为 3的节点有 2个,度为 2的节点有 1个,度为 1的节点有 2个,那么,该树的叶节点数目为( )。(分数:2.00)A.4B.5 C.6D.7解析:解析 假设根节点度为零时,叶节点数为 1;若树中每出现一个度为 1的节点,则叶子数增加 0个;每出现 1个度为 2的节点,叶子数增加 1个;每出现 1个度为 3 的节点,则叶子数增加 2个依此类推,每个度为 m的节
35、点,可增加 m-1个叶子数。20.结构化程序设计所规定的三种基本控制结构是( )。(分数:2.00)A.输入、处理、输出B.树形、网形、环形C.顺序、选择、循环 D.主程序、子程序、函数解析:解析 本题涉及结构化程序设计的三种基本控制结构,考生应该掌握这些基本的东西。结构化定理还进一步表明,任何一个复杂问题的程序设计都可以用顺序、选择和循环这三种基本结构组成,且它们都具有以下特点:只有一个入口;只有一个出口;结构中无死循环,程序中三种基本结构之间形成顺序执行关系。21.请指出在顺序表 2、5、7、10、14、15、18、23、35、41、52 中,用二分法查找关键码 12需做( )次关键码比较
36、。(分数:3.00)A.2B.3C.4 D.5解析:解析 二分法查找首先用想要查找的关键词 k与中间位置的节点关键词相比较,这个中间节点把线性表分成了两个子表,若比较结果相等,则查找完成;若不等,再根据 k与中间节点关键词的比较大小确定下一步查找哪个子表,这样递归下去,直到找到满足条件的节点,或者该线性表中没有这样的节点。本题中第 1次和 15比较:第 2次和 7比较:第 3次和 10比较;第 4次和 14比较;比较后结束,没找到。22.若有以下定义:int a =1,2,3,4,5,6,7;char c1=b,C2=2;则数值不为 2的表达式是( )。(分数:3.00)A.a1B.d-c1C
37、.a3-c2D.c2-0 解析:解析 本题考查数组的定义、初始化及其引用,以及对字符 ASCII码值的熟悉程度。解本题的关键在于熟悉字符的 ASCII码值。字符在进行数学运算时取其 ASCII码值,其中b的 ASCII码值为98,d的 ASCII码值为 100,字符2的 ASCII码值为 50。根据以上知识,可知选项 D中表达式“c2-0”的值为 50。23.若有以下程序:#include iostreamusing namespace std;class Basepublic:Base ( )x=0;int x;class Derivedl : virtual public Basepubl
38、ic:Derivedl ()x=10;class Derived2 : virtual public Basepublic:Derived2 ()x=20;class Derived : public Derivedl,protected Derived2 ;int main ( )Derived obj;coutobj .xend1;return 0;该程序运行后的输出结果是 ( )。(分数:3.00)A.20 B.30C.10D.0解析:解析 本题中,虽然 Derivedl和 Derived2都是由共同的基类 x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员
39、x只存在一份拷贝,不论在类 Derived1修改,还是在类 Derived2中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obj”时,就会先调用虚基类 Base的构造函数,使得 x=0,然后执行类 Derived1的构造函数,使得 x=10,再执行类Derived2的构造函数,使得 x=20。最后输出 x的值为 20。24.不能作为函数重载的判断依据的是( )。(分数:3.00)A.constB.返回类型 C.参数个数D.参数类型解析:解析 函数重载是指同一个函数名可以对应着多个函数的实现。调用重载函数时,C+编译器通过检查调用中的参数个数、类型来选择相应的函数。选项
40、 A中的关键词 const,可以把函数说明为常函数,它参与区分函数重载。选项 B中的返回值类型不能作为函数重载的判断条件。25.若有以下程序:#include iostreamusing namespace std;class datapublic:int x;data (int x)data: :x=x;class Aprivate:data d1;public:A(int x) : d1 (x) void dispa()coutd1, x“, “;class B: public Aprivate:data d2;public:B(int x) : A(x-1),d2(x) void dis
41、pb()coutd2.xend1;class C : public Bpublic:C(int x) : B(x-1)void disp ()dispa ( );dispb ();int main ( )C obj (5);obj.disp();return 0;程序执行后的输出结果是( )。(分数:3.00)A.5,5B.4,5C.3,4 D.4,3解析:解析 本题考核派生类的定义和访问权限。本题涉及多层次的继承关系。类 B是类 A的派生类,类 C又是类 B的派生类。类 C中的构造函数调用了类 B的构造函数来初始化类 B的私有数据成员,而类 B的构造函数又调用了类 A的构造函数来初始化类 A
42、的私有数据成员。由此可知,程序最后的输出为 3,4。26.若有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void show()couta“, “bend1;class Derive : public Baseprivate: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
43、b(50,50),*pb;Derive d(10,20,30, 40);pb=pb-show ();return 0;招待程序后的输出结果是( )。(分数:3.00)A.10,20 B.30,40C.20,30D.50,50解析:解析 本题考核基类指针的使用。本题首先定义了一个基类 Base和一个由 Base派生出来的派生类 Derive。在主函数中,定义了一个基类 Base指针 pb和基类对象 b,还定义了派生类 Derive的对象d。然后将派生类对象 d的地址赋值给指向基类 Base的指针 pb。由于 Derive是 Base的子类型,因此允许上述赋值。但这时指针 pb只能使用从基类 Ba
44、se继承的成员,即当 pb指向 d对象时,pb-shaw 还是调用基类 Base的成员函数 show()。所以程序最后输出的对象 d中对基类成员的初始化值,即 10,20。27.若有以下程序:#include iostreamusing namespace Std;class sampleint i;publiC:sample()void setvalue(int m)i=m;void fun(int m)i+=m;void disp()coutiend1;int main()sample *ps;ps=new sample;ps-setvalue(20);ps-fun(5);ps-disp(
45、);return 0;程序运行后,输出的结果是( )。(分数:3.00)A.15B.20C.25 D.30解析:解析 本题考核对象指针的应用。程序首先定义了一个类 sample,其中包含一个私有成员 i和 3个公有成员函数。函数 setvalue()的功能是给私有成员 i赋值,函数 fun()的功能是将私有成员 i的值增加 5,函数 disp()的功能是输出变量 i的值。在主函数中,先定义了类 sample的一个对象指针 ps,并申请了一块内存空间。执行语句 ps-setvalue(20);后,类中 i的值为 20,执行语句 ps-fun(5);后,类中 i的值为 25。所以程序最后输出 25
46、。28.下列各函数的说明中,( )是表示纯虚函数。(分数:3.00)A.virtual int vf(int);B.void vf(int)=0;C.virtual void vf()=0; D.virtual void vf(int)解析:解析 本题考核纯虚函数的说明。纯虚函数说明的一般格式如下:virtual类型函数名(参数表)=0;29.下列叙述中,不正确的是( )。(分数:3.00)A.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系可能不同 B.一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系一定不同C.数据的存储结构,也称数据的物理结构。D.数据的存储结构与数据
47、的逻辑结构是不同的解析:解析 一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系不一定相同,例如在家庭成员的数据结构中,“儿子”和“女儿”都是“父亲”的后件,但在计算机存储空间中,根本不能将“儿子”和“女儿”这两个数据元素的信息都紧邻存放在“父亲”这个数据元素后边。但在一年四季的数据结构中,“春”是“夏”的前件,在计算机存储空间中,就可以把“春”存储在“夏”的前面。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据的物理结构。30.若有以下程序:#include iostreamusing namespace Std;int main()int i ;int a3 3 = 1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)coutai 1“ “;coutend1;return 0;执行后的输出结果是( )。(分数:3.00)A.50 53 56 B.49 52 55C.2 5 8D.1 4 7解析:解析 本题考核对二维数组的定义和引用的熟悉程