1、二级 C+笔试 358 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.已知语句 int m10;则下列表示引用的表示中正确的是(分数:2.00)A.int B.int C.int D.float 2.下列程序执行后的输出结果是 void funcl(int i); void func2(int i); char st“hello,frlend!“; void funcl(int i) coutsti; if(i3)i+2;func2(i); void func2(int i) coutsti; if(i3)i+2;funcl(i);
2、 main() int i=0; furicl(i); coutendl;(分数:2.00)A.helloB.helC.hloD.hlm3.下列叙述中错误的是(分数:2.00)A.二又链表是二又树的存储结构B.循环链表是循环队列的一种存储结构C.循环队列属于线性表D.带链的队列是队列的一种存储结构4.有关构造函数的说法中错误的是(分数:2.00)A.构造函数名字和类的名字一样B.构造函数在说明类变量时自动执行C.构造函数无任何函数类型D.构造函数有且只有一个5.设有以下类和对象的定义: class A public: int m; ; A k1,k2,*p1,* p2; 则下面针对成员变量 m
3、 的引用,错误的是(分数:2.00)A.k1.m=1B.k2-m2C.p1-m=3D.(*p2).m=46.以下有关类与结构体的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽C.用 struct 不能声明一个类型名;而 class 可以声明一个类名D.结构体成员默认为 publicl 类成员默认为 private7.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对8.一个 C+程序由函
4、数 A(),B(),C()和函数 P()构成,在函数 A()中分别调用了函数 B()和函数 C(),在函数 B()中调用了函数 A(),且在函数 P()中也调用了函数 A(),则可以说(分数:2.00)A.函数 B()中调用的函数 A()是函数 A()的间接递归调用B.函数 A()被函数 B()调用是直接递归调用C.函数 P()直接递归调用了函数 A()D.函数 P()中调用的函数 A()是函数 P()的嵌套9.下列叙述中错误的是(分数:2.00)A.继承是面向对象方法的一个主要特征B.对象是面向对象软件的基本模块C.类是对象的一个实例D.消息是请求对象执行某一处理或卧答某一要求的信息10.有
5、以下程序 main(int argc, chara*argv) int n,i=0; while(argv1i! =/0) n=fun();i+; coutn*argcendl; int fun() static int s=0; s+1; return s; 假设程序经编译、连接后生成可执行文件 exam.exe,若键入以下命令行 exam 123回车 则运行结果为(分数:2.00)A.6B.8C.3D.411.下面不正确的描述为(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元C.调用函数时,将为形参分配内存单元D.调用函数时,实参与形参的类型必须
6、一致12.设有如下定义 struct ss char name10; int age; char sex; std3, * pstd; 下面各输入语句中错误的是(分数:2.00)A.cin(* .ag;B.cinstnam;C.cinstd0.se;D.cin(p-.se);13.存取指针所指的值时,采用的运算符是(分数:2.00)A.#B. while(i10) if(i1)coBtlnlle; if(i= =5)break; i+; (分数:2.00)A.1B.10C.6D.死循环,不能确定次数15.设有基类定义: class Cbase private: int a; protected
7、: int b; public: int c; ; 派生类采用何种继承方式可以使成员变量 b 成为自己的私有成员(分数:2.00)A.私有继承B.保护继承C.公有继承D.私有、保护、公有均可16.下列程序执行后的输出结果是 #includestring.h main() char arr24; strcpy(arr, “you“); strcpy(arr1, “me“); arr03 coutarrendl; (分数:2.00)A.you for(i1;i5;i+) switch(i) case 0: case 3:a+2; case 1: case 2:a+=3; default:a+5;
8、coutaendl; (分数:2.00)A.31B.13C.10D.2019.下列叙述中正确的是(分数:2.00)A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征C.白箱(盒)测试完全不考虑程序内部的逻辑结构D.上述三种说法都不对20.将 5 个数据进行快速排序,在最坏情况下需要比较的次数是(分数:2.00)A.4B.5C.10D.2021.若变量都已正确说明,则以下程序段的输出结果是 a=2;b=3; printf(ab?“* * *a%d“: “# # #b%d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为
9、:* * * a=2C.输出为:# # # b2D.输出为:* * * a2 # # # b=222.下列程序执行结果是 #include iostream.h class A public: int a; A():a(10)coutaendl; ; void main() A obj1; A obj2(obj1); cout“ “obj2.aendl; (分数:2.00)A.10 10B.编译错误缺少拷贝构造函数C.10 随机数D.随机数随机数23.若执行以下程序时从键盘上输入 9,则辅出结果是 main() int n; cinn; if(n+10)coutnendl; else cout
10、n-endl; (分数:2.00)A.11B.10C.9D.824.定义静态成员函数的主要目的是(分数:2.00)A.方便调用B.有利于数据隐蔽C.处理类的静态成员变量D.便于继承25.有以下程序 main() char a,b,c, *d; a=/;b=/xbc; c/0xab;d“/0127“; coutabc*dendl; 编译时出现错误,以下叙述中正确的是(分数:2.00)A.程序中只有 a=/=;语句不正确B.b/xbc;语句不正确C.d“/0127“;语句不正确D.a/;和 c/0xab;语句都不正确26.设有如图所示的二叉树 (分数:2.00)A.FCADBEGB.ACBDFGE
11、C.ABDCGEFD.ACBDFEG27.以下程序的输出结果是 main() int a4,b5,c0,d; d! a coutdcndl; (分数:2.00)A.1B.0C.非 0 的数D.-128.有以下程序 main() int i=10,j=1; couti-“,“+jendl; 执行后输出结果是(分数:2.00)A.9,2B.10,2C.9,1D.10,129.下列叙述中正确的是(分数:2.00)A.软件工程主要研究如何编程B.数据库设计的主要任务是设计数据库管理系统C.算法的效率与数据的存储结构无关D.上述三种说法都不对30.下列叙述中正确的是(分数:2.00)A.一个算法的时间复
12、杂度大,则其空间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度也必定大C.一个算法的空间复杂度大,则其时间复杂度必定小D.上述三种说法都不对31.下面程序段的正确输出是 int w=4,x=3,y=2,z=1; cout(wx? w:zy? z:x)endl;(分数:2.00)A.0B.1C.2D.332.阅读以下程序 #includciostream.h vold main() Char line10; cinline; coutlineendl; 如运行时输入 This is example.CR,则程序的输出结果是(分数:2.00)A.ThisB.This isC.This i
13、s aD.This is an exampl33.在下列关系运算中,能不改变关系中属性个数且减少元组个数的是(分数:2.00)A.并B.差C.投影D.交34.关系表中的每一横行称为一个(分数:2.00)A.关系B.元组C.属性D.字段35.以下有关成员函数特征的叙述不正确的是(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的二、B填空题/B(总题数:15,分数:30.00)36.衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中U 【1】 /U用于度量模块间互相连接的紧密程度。(分数:2.00)填空项 1:_37.在顺序查
14、找与二分查找两种方法中,可以用U 【2】 /U方法对有序线性链表进行查找。(分数:2.00)填空项 1:_38.具有记忆作用的线性表称为U 【3】 /U。(分数:2.00)填空项 1:_39.如果在一棵二叉树中有 17 个度为 2 的结点,则该二叉树中有U 【4】 /U个叶子结点。(分数:2.00)填空项 1:_40.数据流图有两种典型的结构形式,它们分别是U 【5】 /U和事务型。(分数:2.00)填空项 1:_41.函数定义的格式是U 【6】 /U函数名(形式参数表)函数体。(分数:2.00)填空项 1:_42.语句序列 long x; x0L;可用一个语句表示为U 【7】 /U。(分数:
15、2.00)填空项 1:_43.在 C+中的实型数据分为三种类型,即单精度 float、双精度 double 和U 【8】 /U。(分数:2.00)填空项 1:_44.若 a. b 和 c 均是 int 型变量,则表达式 a=(b=4)+(c2)执行后,a 的值为U 【9】 /U。(分数:2.00)填空项 1:_45.一个结构占用的空间理论上等于U 【10】 /U。(分数:2.00)填空项 1:_46.下列程序的输出结果是U 【11】 /U。 # includeiostream.h template class T T max(T x,int n) int i; T maxvx0; for(i=
16、1;in;i+) if(maxvxi) maxvxi; return maxv; void main() int a3,2,7,6,8,9; double b1.2,3.4,2.5,7.3,6.8; coutmax(a,4)“,“max(b,3)endl; (分数:2.00)填空项 1:_47.下列程序的运行结果是U 【12】 /U。 #includeiostream. h class Base public: virtual void func(int i)cout“class Base:“iendl; ; class Derived: public Base public: void fu
17、nc(double d)cout“class Derived:“dendl; ); void main() Base a, *p= Derived b; p= (* p).func(3.3); (分数:2.00)填空项 1:_48.下列程序的输出结果是U 【13】 /U。 #includeiostream. h int CalcDigital(char *str) if(str=NULL) return 0; int num_of_digital=0; for(int i=0;stri! =0x0;i+) if(stri=9 return num_of_digital; void main()
18、 char a=“Beijing2008olympic“; coutCalcDigital(a)endl; (分数:2.00)填空项 1:_49.下列程序时类 D 代码段出现编译错误,原因是U 【14】 /U。 #includeiostream. h class A public: A(char c)cout“As constructor.“cendl; A()cout“As destructor.“endl; ; class B: virtual public A public: B(char cb,char cd):A(cb) cout“Bs constructor.“cdendl; B(
19、)cout“Bs destructor.“endl; private: char b; ; class C:virtual public A public: C(char cc, char cd):A(cc) cout“Cs constructor. “cdendl; C()cout“Cs destructor.“endl; ; class D:public B,public C public: D(char cd,char ce,char cf, char cg, char ch,char ci) :C(cf,cg),B(cd,ce),A(cd),aa(ch) cout“Ds constru
20、ctor.“ciendl; D() cout“Ds destructor.“endl; private: A aa; ; void main() D ohj(a,b,c,d,e,f) (分数:2.00)填空项 1:_50.下列程序编译错误,是由于划线处缺少某个语句,该语句是U 【15】 /U。 #include iostream. h class A _ private: int numl; public: A():numl(0) A(int i):numl(i) ;class B private: int num2 public: B():num2(0) B(int i):num2(i) i
21、nt my_math(A obj1,B obj2); ; int B:my_math(A obj1,B obj2) return (obj1.num1+obj2.num2); void main(void) A obj1 (4) B obj,obi2(5); cout “obj1+obj2:“obj.my_math(obj1,obj2); (分数:2.00)填空项 1:_二级 C+笔试 358 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.已知语句 int m10;则下列表示引用的表示中正确的是(分数:2.00)A.int B.int
22、 C.int D.float 解析:解析 引用比较特殊,即必须指向一个已有的同类型变量。引用是已有变量的别名,故选项 C 是错误的,选项 D 中变量类型不同,而选项 B 中是常数。2.下列程序执行后的输出结果是 void funcl(int i); void func2(int i); char st“hello,frlend!“; void funcl(int i) coutsti; if(i3)i+2;func2(i); void func2(int i) coutsti; if(i3)i+2;funcl(i); main() int i=0; furicl(i); coutendl;(分
23、数:2.00)A.helloB.helC.hlo D.hlm解析:解析 本题考察递归调用。分析 func1 可知,当 i=0 时,首先输出 h,然后 i 变为 2调用 fune (2),则输出 str2,应为 1。分析到此就可以排除选项 A 和 B。然后调用 funcl(4),此时辅出 str 4,为 o,故可以选择正确答案为 C。3.下列叙述中错误的是(分数:2.00)A.二又链表是二又树的存储结构B.循环链表是循环队列的一种存储结构 C.循环队列属于线性表D.带链的队列是队列的一种存储结构解析:解析 二叉链表是二叉树的一种存储结构;循环队列是队列的一种存储结构,而队列属于线性表,因此,循环
24、队列也是线性表;带链的队列是队列的一种存储结构因此,选项 A),C)、D)都是正确的。 循环链表是一般线性表的一种链式存储结构,它不是循环队列的存储结构。因此,选项 B)中的说法是错误的。4.有关构造函数的说法中错误的是(分数:2.00)A.构造函数名字和类的名字一样B.构造函数在说明类变量时自动执行C.构造函数无任何函数类型D.构造函数有且只有一个 解析:解析 本题考察构造函数的有关概念。构造函数在面向对象设计和开发中占据重要地位,考生需要扎实掌握。构造函数不能返回类型,但是可以有参数,可以重载。据此可以选择正确答案为 D。5.设有以下类和对象的定义: class A public: int
25、 m; ; A k1,k2,*p1,* p2; 则下面针对成员变量 m 的引用,错误的是(分数:2.00)A.k1.m=1B.k2-m2 C.p1-m=3D.(*p2).m=4解析:解析 本题也是考察有名对象和无名对象的使用规则。对有名对象,要使用点操作符,无名对象要使用箭头运算符。据此可以判断正确答案为 B。6.以下有关类与结构体的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽C.用 struct 不能声明一个类型名;而 class 可以声明一个类名 D.结构体成员默认为 publicl 类成员默认为 pri
26、vate解析:解析 本题同样考察的是结构体和类之间的区别和联系。7.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对 解析:解析 实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且,实体集“座位”中中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。但该教室中的学生与座位之间不一定是一
27、一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项 A)中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。因此,选项 B)中的说法也是错误的。 关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项C)中的说法也是错误的。8.一个 C+程序由函数 A(),B(),C()和函数 P()构成,在函数 A()中分别调用了函数 B()和函数 C(),在函数 B()中调用了函数 A(),且在函数 P()中也调用了函
28、数 A(),则可以说(分数:2.00)A.函数 B()中调用的函数 A()是函数 A()的间接递归调用 B.函数 A()被函数 B()调用是直接递归调用C.函数 P()直接递归调用了函数 A()D.函数 P()中调用的函数 A()是函数 P()的嵌套解析:解析 本题考察递归调用。递归调用分为直接递归和间接递归。AO 属于间接递归。9.下列叙述中错误的是(分数:2.00)A.继承是面向对象方法的一个主要特征B.对象是面向对象软件的基本模块C.类是对象的一个实例 D.消息是请求对象执行某一处理或卧答某一要求的信息解析:解析 继承是面向对象方法的一个主要特征;对象是面向对象软件的基本模块,消息是请求
29、对象执行某一处理或回答某一要求的信息。因此,选项 A)、B),D)都是正确的, 在面向对象方法中,对象是类的一个实例。因此,选项 C)中的说法是错误的。10.有以下程序 main(int argc, chara*argv) int n,i=0; while(argv1i! =/0) n=fun();i+; coutn*argcendl; int fun() static int s=0; s+1; return s; 假设程序经编译、连接后生成可执行文件 exam.exe,若键入以下命令行 exam 123回车 则运行结果为(分数:2.00)A.6 B.8C.3D.4解析:解析 本题考察静态变
30、量的使用规则。考生需要注意的是 s 为静态变量,每次进入 fun 函数时 s还保留使用原来的值,因此 while 循环将最终返回的是各位数之和,而 argc 表示参数的个数,此处为1,因此正确答案为 A。11.下面不正确的描述为(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元 C.调用函数时,将为形参分配内存单元D.调用函数时,实参与形参的类型必须一致解析:解析 函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝,当然这种拷贝需要为形参分配内存。需要注意的是:形参在编译时不分配内
31、存,在运行时才分配内存。12.设有如下定义 struct ss char name10; int age; char sex; std3, * pstd; 下面各输入语句中错误的是(分数:2.00)A.cin(* .ag;B.cinstnam; C.cinstd0.se;D.cin(p-.se);解析:解析 std 是一个数组,其内可以存放三个结构体类型的数据。当 std 单独使用的时候表示一个指针,指向该数组首地址。因此不能直接用 std 和点操作符进行配对使用。指针操作符-只能和指针配对使用,点操作符只能和有名对象或变量配对使用。13.存取指针所指的值时,采用的运算符是(分数:2.00)A
32、.#B. while(i10) if(i1)coBtlnlle; if(i= =5)break; i+; (分数:2.00)A.1B.10C.6D.死循环,不能确定次数 解析:解析 本题需要考生仔细分析,掌握扎实的基本功,并且熟悉 continue 和 break 在循环语句中的作用。当 i0 时,执行第一个 if 语句,为真,跳过后面的第二个 if 和 i+,重新判断 while 的条件,此时 i 并没有任何改变,依然是 0,因此将陷入一个无限循环中。15.设有基类定义: class Cbase private: int a; protected: int b; public: int c;
33、 ; 派生类采用何种继承方式可以使成员变量 b 成为自己的私有成员(分数:2.00)A.私有继承 B.保护继承C.公有继承D.私有、保护、公有均可解析:解析 类的继承中有三种继承方式,他们和类的访问级别相结合在派生类中可以产生多种访问级别。基类中成员为保护的,在派生类中要为私有的,可以采用私有继承。基类中的保护成员在振生类中不是私有就是保护,即级别只能降低而不能升高。基类中的公有成员则可能为私有、保护和私有。16.下列程序执行后的输出结果是 #includestring.h main() char arr24; strcpy(arr, “you“); strcpy(arr1, “me“); a
34、rr03 coutarrendl; (分数:2.00)A.you for(i1;i5;i+) switch(i) case 0: case 3:a+2; case 1: case 2:a+=3; default:a+5; coutaendl; (分数:2.00)A.31 B.13C.10D.20解析:解析 本题也是考察 switch 语句中的 break 的作用,由于题中所有的 case 分支都没有 break,故将顺序执行这些分支。只要考生耐心按照流程将数据累加到 a 上,就可以得到正确答案为 A。19.下列叙述中正确的是(分数:2.00)A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部
35、特征 B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征C.白箱(盒)测试完全不考虑程序内部的逻辑结构D.上述三种说法都不对解析:解析 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例。因此,选项 A)中的说法是正确的,其他三项说法都是错误的。20.将 5 个数据进行快速排序,在最坏情况下需要比较的次数是(分数:2.00)A.4B.5C.10 D.20解析:解析 对长度为 n 的线性表进行快速排序,在最坏情况下需要 n(n-1)/2 次比较,现线性表的长度为 5,在最坏情况下需要比较的次数为 5(5-1)/
36、2=10。21.若变量都已正确说明,则以下程序段的输出结果是 a=2;b=3; printf(ab?“* * *a%d“: “# # #b%d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为:* * * a=2C.输出为:# # # b2 D.输出为:* * * a2 # # # b=2解析:解析 本题实际,亡是考场 C 语言中的格式化输入输出知识。一般来说,学习 C+的考生先前都学习过 C 语言,如果能够深刻理解这两种具有血缘关系的语言中对于输入输出的控制方式,则能够更好的理解面向对象的本质。同时本题也考察了三日表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行
37、冒号之后的表达式。22.下列程序执行结果是 #include iostream.h class A public: int a; A():a(10)coutaendl; ; void main() A obj1; A obj2(obj1); cout“ “obj2.aendl; (分数:2.00)A.10 10 B.编译错误缺少拷贝构造函数C.10 随机数D.随机数随机数解析:解析 本题考察拷贝构造函数的知识。如果类中没有实现拷贝构造函数,则编译器会为其自动生成一个。对于本题这种简单对象,默认生成的拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象则可能需要显式定义拷贝构造函数。23.若执行
38、以下程序时从键盘上输入 9,则辅出结果是 main() int n; cinn; if(n+10)coutnendl; else coutn-endl; (分数:2.00)A.11B.10 C.9D.8解析:解析 本题考察的是后置自增运算符的知识,这类题考生往往做错,以原因不能正确拆解。题中if 语句可以拆解为:if(910),n+110,cout10endl;自增所代表的加一操作要紧跟在原表达式后面,而不是原语句后面。24.定义静态成员函数的主要目的是(分数:2.00)A.方便调用B.有利于数据隐蔽C.处理类的静态成员变量 D.便于继承解析:解析 声明为 static 的类成员或者成员函数便
39、能在类的范围内共同享,这样的成员称做静态成员和静态成员函数。静态成员函数由于与对象无关系,所以在其中是不能对类的普通成员进行直接操作的。静态成员函数不接受隐含的 this 自变量。所以,它就无法访问自己类的非静态成员。那么一旦某个成员函数被声明为静态的,就不能访问非静态成员了么?解决方法是将引用传递给需要使用的对象能够让静态的成员函数访问到对象的非静态数据。25.有以下程序 main() char a,b,c, *d; a=/;b=/xbc; c/0xab;d“/0127“; coutabc*dendl; 编译时出现错误,以下叙述中正确的是(分数:2.00)A.程序中只有 a=/=;语句不正确
40、B.b/xbc;语句不正确C.d“/0127“;语句不正确D.a/;和 c/0xab;语句都不正确 解析:解析 本题考察 C+中各种类型在输出时的转化关系。斜杠为转义控制字符,其后必须紧跟一个字符,故首先可以确定的是 a 的赋值语句是错误的,根据选项我们直接看 c 的赋值语句是否正确。斜杠后跟。表示其后为八进制,其值从 0 到 7,因此 c 的赋值语句也是错误的据此可以判断本题的正确答案应该为 D。26.设有如图所示的二叉树 (分数:2.00)A.FCADBEGB.ACBDFGEC.ABDCGEF D.ACBDFEG解析:解析 按照二叉树后序遍历的方法;在访问根结点、遍历左子树与遍历右子树这三
41、者中,首先遍历左于树,然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先先遍历左子树,然后遍历右子树,最后访问根结点。对本题中的二叉树进行后序遍历的结果应是 ABDCGEF。设有如图所示的二叉树27.以下程序的输出结果是 main() int a4,b5,c0,d; d! a coutdcndl; (分数:2.00)A.1 B.0C.非 0 的数D.-1解析:解析 本题考察逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为 A。或优先级最高, couti-“,“+jendl; 执行后输出结果是(分数:2.00)A.9,2B.10,2 C.9,1D.10,1解析:解析 本
42、题还是考察前置和后置自增与自减运算符的使用方法。在 i 输出时,还是 10,输出之后才变成 9,而+j 则是先加一在将新值输出。29.下列叙述中正确的是(分数:2.00)A.软件工程主要研究如何编程B.数据库设计的主要任务是设计数据库管理系统C.算法的效率与数据的存储结构无关D.上述三种说法都不对 解析:解析 所谓软件工程是指,采用工程的概念,原理、技术和方法指导软件的开发与维护。软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。 数据库设计是指在已有数据库管理系统的基础上建立数据库的过程。 数据结构与算法之间有着密切的关系,特别是对于数据处理问题,算法的效率通常与数据
43、结构在计算机中的表示有着直接的关系。 综上所述,选项 A),B)、C)中的说法都是错误的。30.下列叙述中正确的是(分数:2.00)A.一个算法的时间复杂度大,则其空间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度也必定大C.一个算法的空间复杂度大,则其时间复杂度必定小D.上述三种说法都不对 解析:解析 算法的复杂度主要包括时间复杂度和空间复杂度。但不存在算法的时间复杂度大,则其空间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度必定小等问题。31.下面程序段的正确输出是 int w=4,x=3,y=2,z=1; cout(wx?
44、 w:zy? z:x)endl;(分数:2.00)A.0B.1 C.2D.3解析:解析 本题为表达式作为变量进行输出,而且表达式为两个三日表达式的嵌套,只要掌握了该三目表达式的含义,可以正确得出答案为 B。32.阅读以下程序 #includciostream.h vold main() Char line10; cinline; coutlineendl; 如运行时输入 This is example.CR,则程序的输出结果是(分数:2.00)A.This B.This isC.This is aD.This is an exampl解析:解析 本题考察 C+中 cin 输入流对象的使用规则,
45、其特点是以空格、回车和 tab 为分隔符。因此 this 和 is 之间的空格告诉 cin 对象停止接收后面的数据、故正确答案为 A。33.在下列关系运算中,能不改变关系中属性个数且减少元组个数的是(分数:2.00)A.并B.差C.投影D.交 解析:解析 交运算是不改变关系中属性个数的,且减少元组的个数。34.关系表中的每一横行称为一个(分数:2.00)A.关系B.元组 C.属性D.字段解析:解析 关系表中的每一横行称为一个元组。35.以下有关成员函数特征的叙述不正确的是(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的解析:解析 本题是一个综合题,考察几种常用的修饰词与成员函数之间的关系。Inline 和 static 均可以修饰成员函数的。二、B填空题/B(总题数:15,分数:30.00)36.衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中U 【1】 /U用于度量模块间互相连接的紧密程度。(分数:2.00)填空项 1:_ (正确答案:耦合性)解析:解析 衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中耦合性用于度量模块间互相连接的紧密程度。37