1、二级 C+笔试-337 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extern int x,y;coutadd(x,y)endl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;(分数:2.00)A.25B.30C.20D.152.只能作为成员函数重载的是( )。(分数:2.00)A.=B.+C.*D.new3.下列关于结构化程序设计原则和方法的描述
2、中,错误的是( )。(分数:2.00)A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO 语句D.语言中所没有的控制结构,应该采用前后一致的方法来模拟4.实现运行时的多态性要使用( )。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数5.下列是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+(Fraction,Fraction);B.Fraction operator-(Praction);C.FractionD.Fraction6.下列程序输出的
3、结果是( )。#includestdio.hfun1(char a,char b)char c;c=a;a=b;b=c;fun2(char*a,char b)char c;c=*a;*a=b;b=c;fun3(char*a,char*b)char c;c=*a;*a=*b;*b=c;void main()char a,b;a=A;b=B;fun1(a,b);putchar((分数:2.00)A.;putchar(B.;a=A;b7.下列工具中为需求分析常用工具的是( )。(分数:2.00)A.PADB.PFDC.N-SD.DFD8.有如下程序:int x=3;do x-=2;coutx;whi
4、le(!(-x);执行这个程序的输出结果是( )。(分数:2.00)A.1B.30C.1-2D.死循环9.类模板 templateclass Tclass x.,其中友元函数 f 对特定类型 T(如 int),使函数 f(xint)成为 xint模板类的友元,则其说明为( )。(分数:2.00)A.friend voidf();B.friend voidf(xT);C.friend voidA:f();D.friend void CT:f(xT);10.由于常对象不能被更新,因此( )。(分数:2.00)A.通过常对象只能调用它的常成员函数B.通过常对象只能调用静态成员函数C.常对象的成员都是
5、常成员D.通过常对象可以调用任何不改变对象值的成员函数11.下列程序的运行结果为( )。#includeiostream.hvoid main()int a=2;int b=a+1;couta/bendl;(分数:2.00)A.0.66667B.0C.0.7D.0.6666666612.下列运算符中,( )运算符在 C+中不能重载。(分数:2.00)A.if(m+5)coutm;else coutm-;(分数:2.00)A.7B.6C.5D.415.有如下类定义:class Foopublic:Foo(int v) : value(v) / Foo() / private:Foo() / in
6、t value = 0; / ;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D.16.在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序的执行速度,则应该选用( )。(分数:2.00)A.内联函数B.重载函数C.递归调用D.嵌套调用17.下列选项中,不是算法的基本特征的是( )。(分数:2.00)A.完整性B.可行性C.有穷性D.拥有足够的情报18.下列程序的输出的结果是( )。#includeiostream.hvoid main()int i,k,a10,p3;k=5;for(i=0;i9;i+)ai=i;for(i=0;i3;i+)pi=ai*(
7、i+1);for(i=0;i3;i+)k+=pi*2;coutk;(分数:2.00)A.20B.21C.22D.2319.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”和“”括起来的部分是模板的形参表C.类模板不能有数据成员D.在一定条件下函数模板的实参可以省略20.有如下类定义:class AAint a;public:int getRef()const return /int getValue()const return a; /void set(int n)const a=n; /friend void
8、 show(AA a(分数:2.00)A.const couta;21.有如下程序:#include iostreamusing namespace std;class Basepublic:void fun() cout“Base:fun“endl; ;class Derived : public Basepublic:void fun()_cout“Derived:fun“endl;int main()Derived d;d.fun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。(分数:2.00)A.Base.f
9、un();B.Base:fun();C.Base-fun();D.fun();22.有如下程序:#include iostreamusing namespace std;int main()int *p;*p = 9;cout “The value at p: “ *p;return 0;编译运行程序将出现的情况是( )。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错23.线性表进行二分法检索,其前提条件是( )。(分数:2.00)A.线性表以顺序方式存储
10、,并按关键码值排好序B.线性表以顺序方式存储,并按关键码的检索频率排好序C.线性表以链式方式存储,并按关键码值排好序D.线性表以链式方式存储,并按关键码的检索频率排好序24.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系25.下列选项中不属于结构化程序设计方法的是( )。(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用26.以下都是 C+语言标识符的是( )。(分数:2.00)A.dsfa,df4,fB.huhj,a,k2C.3k,hj_9D._ok,
11、jk,k827.下列关于软件测试的描述中正确的是( )。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则28.下列程序运行后的输出结果是( )。#includeiostream.hvoid fun(int,int,int*);void main()int x,y,z;fun(5,6,fun(7,x,fun(x,y,coutx“,“y“,“zendl;void fun(int a,int b,int *c)b+=a;*c=b-a;(分数:2.00)A.5,5,5B.6
12、,6,6C.5,6,7D.7,7,729.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同30.下列有关指针的用法中错误的是( )。(分数:2.00)A.int i;int *p=B.int i;int *p;i=*p;C.int *p;p=0;D.int i=5;int *p;p=31.在数据库设计中,将 E-R 图转换为关系模式的过程属于( )。(分数:2.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段32.软件需求分析阶段的工作,可以分为 4 个方面:需求获取
13、、需求分析、编写需求规格说明书以及( )。(分数:2.00)A.阶段性报告B.需求评审C.总结D.都不正确33.结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法。(分数:2.00)A.对象B.数据结构C.数据流D.目标34.下列程序的运行结果为( )。#includeiostream.hvoid main()int a=2;int b=a+1;couta/bendl;(分数:2.00)A.0.66667B.0C.0.7D.0.6666666635.下列程序的输出结果是( )。#ificludeiostreamusing namespace std;int main()cout.
14、fill(*);cout.width(5);coutoct100endl;return 0;(分数:2.00)A.*100B.*144C.100*D.144*二、填空题(总题数:15,分数:30.00)36.数据库系统的主要特点为数据集成性、数据的高 1 和低冗余性、数据独立性和数据统一管理和控制。(分数:2.00)填空项 1:_37.数据库的逻辑模型设计阶段的任务是将 1 转换成关系模式。(分数:2.00)填空项 1:_38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_39.最简单的交换排序方法是 1。(分数:2.00)填空项 1:_40.在
15、链表的运算过程中,能够使空表与非空表的运算统一的结构是 1。(分数:2.00)填空项 1:_41.插入排序算法的主要思想:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。Insert 类的成员函数 sort()实现了插入排序算法,请填空。class Insertpublic:Insert(int *b0,int n0):b(b0),n(n0);/参数 b0 是某数组首地址,n 是数组元素个数void sort()/此函数假设已排序序列初始化状态只包含 b0,未排序序列初始为 b1.bn-1for(int i=1;in;+i)int t=bi;int j;for(_;j0;-j)i
16、f(t=bj-1)break;bj=bj-1;bj=t;(分数:2.00)填空项 1:_42.若有函数 fun(x,y),并且已经使函数指针变量 p 指向函数 fun,则使用 p 调用函数 fun 的方法是_。(分数:2.00)填空项 1:_43.阅读下列程序:#includeiostream.hvoid fun(int n)int x(5);static int y(10);if(n0)+x;+y;coutx“,“yendl;void main()int m(1);fun(m);则该程序的输出结果是_。(分数:2.00)填空项 1:_44.下面是一个栈类的模板,其中 push 函数将元素 i
17、 压入栈顶,pop 函数弹出栈顶元素。栈初始为空,top 值为 0,栈项元素在 stacktop-1中,在下面横线处填上适当语句,完成栈类模板的定义。templateclass Tclass Tstack enumsize=1000;T stacksize;int top;public:Tstack():top(0)void push(const T Tpop()if(top=0)exit(1);/栈空时终止运行return _;(分数:2.00)填空项 1:_45.类中数据成员和成员函数的默认访问级别为 1。(分数:2.00)填空项 1:_46.在下列的程序的横线处填上适当的语句,使该程序的
18、输出为 12。#includeiostream.husing namespace std;class Basepublic:int a,b;Base(int i)a=i;class Derived:public Baseint a;public:Derived(int x):Base(x),b(x+1);void show()_;/输出基类数据成员 a 的值。coutbendl;void main()Derived d(1);d.show();return 0;(分数:2.00)填空项 1:_47.下列程序的输出结果为 2,请将程序补充完整。#include iostreamusing nam
19、espace std;class Basepublic:_void fun() cout1;class Derived:public Basepublic:void fun()cout2;int main()Base*p=new Derived;p-fun();delete p;return 0;(分数:2.00)填空项 1:_48.有如下程序:#include iostreamusing namespace std;class PARENTpublic:PARENT() cout “PARENT“; ;class SON : public PARENTpublic:SON() cout “S
20、ON“; ;int main()SON son;PARENT *p;p = return 0;执行上面程序的输出是_。(分数:2.00)填空项 1:_49.在 MyClass 类的定义中,对赋值运算符;进行重载。请将横线处缺失的部分补充完整。_MyClass:operator=(const MyClassvalue = rhs.value;return *this;(分数:2.00)填空项 1:_50.如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。class myClassprivate:int data;public:myClass(
21、int value); /构造函数myClass(const_anotherObject); /拷贝构造函数(分数:2.00)填空项 1:_二级 C+笔试-337 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列函数的运行结果是( )。#includeiostream.hint add(int a,int b);void main()extern int x,y;coutadd(x,y)endl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;(分数:2.00)A.25 B.30
22、C.20D.15解析:解析 由主函数 main 入手,定义外部变量 x 和 y,调用函数 add。因为 x,y 为外部变量,所以“int x(20),y(5);”的赋值在 add 也是有效的,即 add 函数的运算结果为 25。2.只能作为成员函数重载的是( )。(分数:2.00)A.= B.+C.*D.new解析:解析 运算符重载为成员函数的形式为:函数类型 operator 运算符(形参表)函数体;;运算符重载为友元函数的形式为:friend 函数类型 operator 运算符(形参表)函数体;。一般来讲,单目运算符最好重载为成员函数,双目运算符最好重载为友元函数。=、()、-以及所有的类
23、型转换运算符只能作为成员函数重载。3.下列关于结构化程序设计原则和方法的描述中,错误的是( )。(分数:2.00)A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO 语句 D.语言中所没有的控制结构,应该采用前后一致的方法来模拟解析:解析 限制使用 GOTO 语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用 GOTO 语句。选项 A)、B)、D)为结构化程序设计的原则。4.实现运行时的多态性要使用( )。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:解析 C+中函数重载和运算符重载实现的多态
24、性属于静态多态性,在程序编译时系统就能决定调用的是哪个函数。动态多态性是在程序运行过程中才动态确定操作所针对的对象。动态多态性是通过虚函数实现的。5.下列是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+(Fraction,Fraction);B.Fraction operator-(Praction);C.Fraction D.Fraction解析:解析 由于取负运算符“-”是一元运算符,当作为成员函数重载时参数表中没有参数,那个唯一的操作数以 this 指针的形式隐藏在参数表中。故选项 C)错误。6.下列程序输出的结果是( )
25、。#includestdio.hfun1(char a,char b)char c;c=a;a=b;b=c;fun2(char*a,char b)char c;c=*a;*a=b;b=c;fun3(char*a,char*b)char c;c=*a;*a=*b;*b=c;void main()char a,b;a=A;b=B;fun1(a,b);putchar((分数:2.00)A.;putchar(B.;a=A;b 解析:解析 由程序中的主函数 main 入手,分别调用 fun1,fun2,fun3 函数,得出输出结果。其中,3 个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的
26、是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以 d 调用 fun1 后,实参 a 和 b 并没有交换,仍然是 AB。第二个调用中,实参 a 采用的是地址,即传递的是地址,所以形参 a 的改变会影响实参 a 的值,即 BB。同理,调用 fun3 后为 BA。7.下列工具中为需求分析常用工具的是( )。(分数:2.00)A.PADB.PFDC.N-SD.DFD 解析:解析 需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。8.有如下程
27、序:int x=3;do x-=2;coutx;while(!(-x);执行这个程序的输出结果是( )。(分数:2.00)A.1B.30C.1-2 D.死循环解析:解析 此题考查的是 do-while 循环语句。do-while 循环首先执行 do 语句中的循环体,再判断是否需要继续执行循环。题目中 do 语句“x-=2”,while 语句中“-x”即 x 为 0,取反为非 0,循环继续执行;执行“x-=2”和“-x”取反后,循环结束程序退出。9.类模板 templateclass Tclass x.,其中友元函数 f 对特定类型 T(如 int),使函数 f(xint)成为 xint模板类的
28、友元,则其说明为( )。(分数:2.00)A.friend voidf();B.friend voidf(xT); C.friend voidA:f();D.friend void CT:f(xT);解析:解析 声明一个函数模板的格式:template棋板形参表声明函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。10.由于常对象不能被更新,因此( )。(分数:2.00)A.通过常对象只能调用它的常成员函数 B.通过常对象只能调用静态成员函数C.常对象的成员都是常成员D.通过常对象可以调用任何不改变对象值的成员函数解析:解
29、析 此题考查的是常对象与常成员函数的概念。使用 const 关键字修饰的对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其他成员函数;使用 const 关键字声明的成员函数是常成员函数,它也不能被更新,常成员函数只能调用常成员函数而不能调用其他函数。11.下列程序的运行结果为( )。#includeiostream.hvoid main()int a=2;int b=a+1;couta/bendl;(分数:2.00)A.0.66667B.0 C.0.7D.0.66666666解析:解析 因为题目中定义的变量 a 和 b 均为整型数据,所以 a/b 即 2/3 得到的仍然是整
30、型数据,得到 0。12.下列运算符中,( )运算符在 C+中不能重载。(分数:2.00)A.if(m+5)coutm;else coutm-;(分数:2.00)A.7B.6 C.5D.4解析:解析 此题中,因为 m+5 成立(此时 m 的值变为 6),所以执行语句 coutm;输出结果为6。15.有如下类定义:class Foopublic:Foo(int v) : value(v) / Foo() / private:Foo() / int value = 0; / ;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D. 解析:解析 此题考查的是类的定义。C+语言规定,在类体内不
31、允许对所定义的数据成员进行初始化。16.在 C+程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序的执行速度,则应该选用( )。(分数:2.00)A.内联函数 B.重载函数C.递归调用D.嵌套调用解析:解析 此题考查的是内联函数的相关知识点。C+引入内联函数是用它来代替 C 语言中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。17.下列选项中,不是算法的基本特征的是( )。(分数:2.00)A.完整性 B.可行性C.有穷性D.拥有足够的情报解析:解析 作为一个算法,一般应该具有下列 4 个特征:可行性,即考虑到实际的条件能够达到一个
32、满意的结果;确定性,算法中的第一个步骤都必须是有明确定义的;有穷性,一个算法必须在有限的时间内做完;拥有足够的情报。18.下列程序的输出的结果是( )。#includeiostream.hvoid main()int i,k,a10,p3;k=5;for(i=0;i9;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;coutk;(分数:2.00)A.20B.21 C.22D.23解析:解析 程序中首先在第一个 for 循环中将 a 每一个元素赋值为 0,1,2。然后在第二个循环中 p 的第 i 元素为 a 中的第 i*(i+1),
33、即 0,2,6,第三个循环中每个 p 中的元素值乘以 2,然后加上 5,累加。答案为 21。19.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用“”和“”括起来的部分是模板的形参表C.类模板不能有数据成员 D.在一定条件下函数模板的实参可以省略解析:解析 类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C+中可以为类模板的参数设置默认值,可以有数据成员,选项 C)错误。20.有如下类定义:class AAint a;public:int
34、 getRef()const return /int getValue()const return a; /void set(int n)const a=n; /friend void show(AA a(分数:2.00)A.const couta;解析:解析 此题考查了常成员函数和友元函数的概念。选项 A)中,getRef()函数的返回值和函数类型不符,故错误;选项 C)中 set()常成员函数改变了数据成员的值,这是不允许的;选项 D)中 show()函数被同时定义成友元函数和常成员函数是错误的。21.有如下程序:#include iostreamusing namespace std;c
35、lass Basepublic:void fun() cout“Base:fun“endl; ;class Derived : public Basepublic:void fun()_cout“Derived:fun“endl;int main()Derived d;d.fun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。(分数:2.00)A.Base.fun();B.Base:fun(); C.Base-fun();D.fun();解析:解析 此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数 f
36、un()的调用语句,此处只能使用作用域运算符“:”才能调用到基类的同名函数。22.有如下程序:#include iostreamusing namespace std;int main()int *p;*p = 9;cout “The value at p: “ *p;return 0;编译运行程序将出现的情况是( )。(分数:2.00)A.编译时出现语法错误,不能生成可执行文件B.运行时一定输出:The value at p:9C.运行时一定输出:The value at p:*9D.运行时有可能出错 解析:解析 此题考查的是指针的使用。本题中,在给*p 赋值前,指针 p 并没有指向一个具体
37、的对象。此时可以通过编译,但运行时由于 p 中为随机值,该赋值可能会破坏内存中某个重要的地址空间的内容,导致程序出错。23.线性表进行二分法检索,其前提条件是( )。(分数:2.00)A.线性表以顺序方式存储,并按关键码值排好序 B.线性表以顺序方式存储,并按关键码的检索频率排好序C.线性表以链式方式存储,并按关键码值排好序D.线性表以链式方式存储,并按关键码的检索频率排好序解析:解析 对线性表进行二分法检索,要求线性表是按顺序方式存储,并按关键码值的大小排好序,而不是按关键码的检索频率排序。24.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象 B.对象是
38、类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系解析:解析 此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。25.下列选项中不属于结构化程序设计方法的是( )。(分数:2.00)A.自顶向下B.逐步求精C.模块化D.可复用 解析:解析 结构化程序设计的主要原则概括为自顶向下,逐步求精,限制使用 GOTO 语句。26.以下都是 C+语言标识符的是( )。(分数:2.00)A.dsfa,df4,fB.hu
39、hj,a,k2C.3k,hj_9D._ok,jk,k8 解析:解析 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其中第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合这些要求的只有选项 D)。27.下列关于软件测试的描述中正确的是( )。(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则解析:解析 软件测试是为了尽可能多地发
40、现程序中的错误,尤其是至今尚未发现的错误。28.下列程序运行后的输出结果是( )。#includeiostream.hvoid fun(int,int,int*);void main()int x,y,z;fun(5,6,fun(7,x,fun(x,y,coutx“,“y“,“zendl;void fun(int a,int b,int *c)b+=a;*c=b-a;(分数:2.00)A.5,5,5B.6,6,6 C.5,6,7D.7,7,7解析:解析 由程序中的 main 函数入手,分别调用 fun 函数,第一个调用中 x 参数为引用地址,调用后x 的值为 6,因为参数为地址,所以第二个调用
41、中的 x 参数值为 6,调用后 y 的计算结果为 6。同理,z 在第三个函数调用后 z 的值为 6。29.用链表表示线性表的优点是( )。(分数:2.00)A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作 D.数据元素的物理顺序和逻辑顺序相同解析:解析 在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间比顺序表还要多。在插入和删除数据元素时,只需要移动相应的记录指针即可。在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定,所以不能进行随机存取。30.下列有关指针的用法中错误的是( )。(分数:2.00)A.int i;int *
42、p=B.int i;int *p;i=*p; C.int *p;p=0;D.int i=5;int *p;p=解析:解析 “int i;”语句定义了一个整型变量 i。“int *p”定义了一个整型指针 p。选项 A)中的“int *p=”是定义整型指针变量 p,并指向整型 i 的地址。选项 B)中“i=*p”语句是将 p 指向的变量赋值给 i,而指针 p 没有初始化,所以选项 B)错误。选项 C)中“p=0;”表示 p 指向 0 的地址。选项 D)中“int b=a+1;couta/bendl;(分数:2.00)A.0.66667B.0 C.0.7D.0.66666666解析:解析 因为题目中
43、定义的变量 a 和 b 均为整型数据,所以 a/b 即 2/3 得到的仍然是整型数据,得到 0。35.下列程序的输出结果是( )。#ificludeiostreamusing namespace std;int main()cout.fill(*);cout.width(5);coutoct100endl;return 0;(分数:2.00)A.*100B.*144 C.100*D.144*解析:解析 cout.fill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个 fiN()函数改变该值为止。cout.width()用于设置或返回(不带参数)输出数据
44、的字段宽度,此函数的设置只对下一个输出有效。注意:默认为输出数据在指定宽度内右对齐,oct 格式控制是整数按八进制输出。二、填空题(总题数:15,分数:30.00)36.数据库系统的主要特点为数据集成性、数据的高 1 和低冗余性、数据独立性和数据统一管理和控制。(分数:2.00)填空项 1:_ (正确答案:共享性)解析:解析 数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。37.数据库的逻辑模型设计阶段的任务是将 1 转换成关系模式。(分数:2.00)填空项 1:_ (正确答案:E-R 图)解析:解析 数据库逻辑设计的任务是将概念模
45、型进一步转化成相应的数据模型。而 E-R 图是主要的概念模型,因此数据库的逻辑设计的主要工作是将 E-R 图转换成关系模式。38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。39.最简单的交换排序方法是 1。(分数:2.00)填空项 1:_ (正确答案:冒泡排序)解析:解析 交换排序是指借助数据元素之间的互相交换进行排序的一种方法,冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。40.在链表的
46、运算过程中,能够使空表与非空表的运算统一的结构是 1。(分数:2.00)填空项 1:_ (正确答案:循环链表)解析:解析 在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。41.插入排序算法的主要思想:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。Insert 类的成员函数 sort()实现了插入排序算法,请填空。class Insertpublic:Insert(int *b0,int n0):b(b0),n(n0);/参数 b0 是某数组首地址,n 是数组元素个数void sort()/此函数假设已排序序列初始化状态只包含 b0,未排序序列初始为 b1.bn-1for(int i=1;in;+i)int t=bi;int j;for(_;j0;-j)if(t=bj-1)break;bj=bj-1;bj=t;(分数:2.00)填空项 1:_ (正确答案:j=i)解析:解析 在函数 sort()中,外层 for 循环中依次将数组 b 中的值赋值给变量 t,然后在内层循环中依次与已经排序的数组元素进行比较,并在符合条件的位置插入该元素。由“int t=bi;”语句可知,数组中有 i 个元素已经