1、国家二级( C+)笔试模拟试卷 70及答案与解析 1 下面这个程序段的时间复杂度是 ( )。 for (i=1; i n; i+) y=y+1; for (j=0; j =(2*n); j+) X+; ( A) O(log2n) ( B) O(n) ( C) 0(nlog2n) ( D) O(n2) 2 在一个容量为 10的循环队列中,若头指针为 6,尾指针为 1,则此时该循环队列中共有的元素个数为 ( )。 ( A) 4 ( B) 5 ( C) 6 ( D) 7 3 在一个长度为 n的线性表中插入一个元素,最好情况下需要移动的数据元素数目 ( A) 0 ( B) 1 ( C) n ( D)
2、n/2 4 对建立良好的程序设计风格,下面有关语句结构的描述中,错误的是 ( )。 ( A)在一行内只写一条语句 ( B)程序编写应优先考虑清晰性 ( C)程序编写要做到效率第一,清晰第二 ( D)避免不必要的转移 5 下列叙述中,不正确的是 ( )。 ( A)在一个函数中,可以有多条 return语句 ( B)函数的定义不能嵌套,但函数的调用可以嵌套 ( C)函数必须有返回值 ( D)不同的函数中可以使用相同名字的变量 6 以下方法不属于结构化分析方法的是 ( )。 ( A)面向数据流的结构化分析方法 ( B)面向数据结构的 Jackson方法 ( C)面向数据结构的结构化数据系统开发方法
3、( D)面向对象的分析方法 7 需求分析阶段最后提供的文档是软件的 ( )。 ( A)功能说明书 ( B)加工说明书 ( C)可行性分析报告 ( D)需求规格说明书 8 以下过程设计工具不属于图形工具的是 ( )。 ( A)程序流程图 ( B) PAD ( C) HIPO ( D) PDL 9 VisualFoxPro是一种 ( )。 ( A)数据库管理系统软件 ( B)操作系统软件 ( C)文字处理软件 ( D) CAD软件 10 在关系数据库中,用来表示实体之间联系的是 ( )。 ( A)树结构 ( B)网结构 ( C)线形表 ( D)二维表 11 一个 C+程序的执行总是从 ( )。 (
4、 A)本程序的第 1个函数开始,到本程序文件的最后一个函数结束 ( B)本程序的第 1个函数开始,到本程序的 main()函数结束 ( C)本程序的 main()函数开始,到 main()函数结束 ( D)本程序的 main()函数开始,到本程序的最后一个函数结束 12 若 x、 a、 b和 c均是 int型变量,则执行表达式 “x=(a=1, b=2)”后的结果是( )。 ( A) 1 ( B) 2 ( C) 3 ( D) x无确定值 13 下列关于 swith语句的描述中,正确的是 ( )。 ( A) switch语句中 default字句可以没有,也可有一个 ( B) switch语句中
5、每个语句序列中必须有 break语句 ( C) switch语句中 default字句只能 放在最后 ( D) switch语句中 case子句后面的表达式可以是整型表达式 14 定义如下一维数组: inta5, *p=a; 则下面描述中,错误的是 ( )。 ( A)表达式 p=p+1是合法的 ( B)表达式 a=a+1是合法的 ( C)表达式 p-a是合法的 ( D)表达式 a+2是合法的 15 对于 switch(C) 中的变量 c不能定义为的类型是 ( )。 ( A) unsigned ( B) int ( C) char ( D) float 16 在下面的类定义中,错误的语句 是 (
6、 )。 class Sample public: Sample(int val); / Sample(): / private: int a=2.5; / Sample(); / ; ( A) ( B) ( C) ( D) 17 下列关于常数据成员的描述中,错误的是 ( )。 ( A)常数据成员必须进行初始化,并且不能更新 ( B)使用 const说明的数据成员称为常数据成员 ( C)可以在类体外面定义常数据成员 ( D)常数据成员的初始化只能通过构造函数的成员初始化列表进行 18 下列关于继承的描述中,错误的是 ( )。 ( A)析构函数不能被继承 ( B)派生类是基类的组合 ( C)派生类
7、的成员除了它自己的成员外,还包含了它的基类的成员 ( D)派生类中继承的基类成员的访问权限到派生保持不变 19 下列关于纯虚函数的描述中,正确的是 ( )。 ( A)纯虚函数是没有给出实现版本 (即无函数体定义 )的虚函数 ( B)纯虚函数的声明 总是以 “=0; ”结束 ( C)派生类必须实现基类的纯虚函数 ( D)含有纯虚函数的类不能是派生类 20 有如下函数模板的定义: template class T T func(T x, T y)return x*x+y*y; 在下列对 func()的调用中,不正确的是 ( )。 ( A) func(3, 5); ( B) func (3, 5);
8、 ( C) func(3, 5.5); ( D) func int (3, 5.5); 21 若有以下程序段; #include iostream using namespace std; int main() int a=1, 4, 5; int *p= int *p=a+5, *q=0; *q=* (p+5); cout *p “ “ *q end1; return 0; ( A)运行后报错 ( B) 66 ( C) 6 12 ( D) 5 5 23 有以下程序: #include iostream #include string using namespace std; int main
9、 ( ) char b18 = “abcdefg“; char b28,*pb=b1+3; while (-pb=b1) strcpy (b2, Pb) ; cout strlen (b2) end1; return 0; 程序运行后的输出结果是 ( )。 ( A) 8 ( B) 3 ( C) 1 ( D) 7 24 若有以下程序: #include iostream using namespace std; class point private: int x, y; public: point ( ) x=0; y=0; void setpoint(int x1,int y1) x=x1;
10、 y=y1; void dispoint () cout “x=“ x “ , “ “y=“ y end1; ; int main ( ) point *p=new point; p- setpoint (5, 12); p- dispoint (); return 0; 程序运行后的输出结果是 ( )。 ( A) x=12,y=12 ( B) x=5,y=5 ( C) x=12,y=5 ( D) x=5,y=12 25 有如下程序: class Base1 public: int a; void b() return; void c(float) a=float; ; class Base2
11、 public: void b() void c() private: int a; ; class Derived:public Basel,public Base2 public: void b() ; void main() Derived obj; obj.a=1; / obj.b(); / obj.c(10); / 下面各项对语句 的描述中,正确的是 ( )。 ( A)语句 都有二义性 ( B)语句 有二义性, 没有二义性 ( C)语句 有二义性, 没有二义性 ( D)语句 有二义性, 没有二义性 26 有以下程序: #include iostream using namespace
12、 std; class sample private: int n; public: sample() sample (int m) n=m; sample add(sample s1,sample s2) this- n=s1.n+s2.n; return (*this); void disp() cout “n=“ n end1; ; int main () sample s1(10) ,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是 ( )。 ( A) n=10 ( B) n=5 ( C) n=20 ( D) n=15
13、 27 若有以下程序: #include iostream using namespace std; class A private: int a; public: void seta(int x) a=x; void showa,( ) cout a “, “; ; class B private: int b; public: void setb(int x) b=x; void showb () cout b “, “; ; class C : public A, private B private: int c; public: void setc(int x,int y, int z
14、) c=z; sera (x); seth (y); void showc() showa(); showb(); cout c end1; ; int main () C c; c.setc(1,2,3); c.showc(); return 0; 程序执行后的输出结果是( )。 ( A) 1,2,3 ( B) 1,1,1 ( C) 2,2,2 ( D) 3,3,3 28 应在下列程序画线处填入的正确语句是 ( )。 #include iostream using namespace std; clas Base public: void fun() cout “Base:fun“ end1
15、; ; class Derived : public Base void fun() _/显示调用基类的函数 fun() cout “Derived:fun“ end1; ; ( A) fun(); ( B) Base.fun(); ( C) Base:fun(); ( D) Base- fun(); 29 有以下程序: #include iostream using namespace std; class Base public: Base() virtual void f1() cout “f1 of base“end1; Base() ; class Derive: public Ba
16、se public: void fl(int x) cout “f1 of derive“ end1; ; int main ( ) Base *p; Derive obj1; p= p- f1 ( ); return 0; ( A)编译时出错 ( B) f1 of derive ( C) f1 of base ( D)以上答案都不对 30 以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句组的选项是 ( )。 ( A) ofstream cfile; cfile.open( “d : ofile.txt“ ); ( B) ofstream * cfile = new ofstream;
17、 cfile - open( “d : ofile.txt ); ( C) ofstream cfile( “d: ofile.txt“ ); ( D) ofstream * cfile = new( “d : ofile.txt“ ) 31 在一个有 n个元素的顺序表的第 i个元素 (1in)之前插入一个新元素时,需要向后移动【 】个元素 32 在面向对象方法中,类之间共享属性和操作的机制称为【 】。 33 源程序文档化要求程序应加注释。注释一般分为序言性注释和【 】。 34 强行排错法涉及的调试技术主要是【 】和监视表达式。 35 数据库的设计通常可以分为这样 4个步骤:需求分析、概念设计
18、、【 】和物理设计。 36 设有定义语句: int a=12;,则表达式 a*=2+3的运算结果是【 】。 37 从实现的角度划分, c+所支持的两种多态性分别是【 】时的多态性和运行时的多态性。 38 将一个函数声明为一个类的友元函数必须使用关键字【 】。 39 请按下面注释的提示将类 B的构造函数定义补充完整。 class A int a; public: A (int aa=0)a=aa; ; class B: public A int b; A c; public: / 用 aa 初始化基类 A, 用 aa+1 初始他类对象成员 c B(int aa): 【 】 b=aa+2; ; 4
19、0 下列程序的输出结果是【 】。 #include iostream using namespace std; int main() int i=5; iht r=7; cout i end 1; return 0; 41 下列程序的输出结果是【 】。 #include iostream using namespace std; class Test public: Test() cnt+; Test() cnt-; static int Count() (return cnt; private: static int cnt; ; int Test:cnt=0; int main() cou
20、t Test:Count() ; Test t1, t2; Test *pT3=new Test; Test *pT4=new Test; cout Test:Count() ; delete pT4; delete pT3; cout Test:Count() end 1; return 0; 42 下面是用来计算 n的阶乘的递归函数,请将该函数的定义补充完整。 (注:阶乘的定义是 n!cn*(n-1)*.*2*1) unsigned fact(unsigned n) if (n =1) return 1; return 【 】 ; 43 下列程序输出结果是【 】。 include iost
21、ream using namespace std; template typename T T fun(T a, T b) return (a =b)?a:b; int main() cout fun(3,6) , fim(3.14F, 6.28F) end 1; return 0; 44 与成员访问表达式 pname 等价的表达式是【 】。 45 下列程序的输出结果是【 】。 #include iostream using namespace std; class base public: int n; base(iht x) n=x; virtual void set(int m) n=m
22、;cout n ; ; class deriveA: public base public: deriveA(int x):base(x) void set(int m)n+=m;cout n ; : class deriveB:public base public: deriveB(int x):base(x) void set(int m) n+=m;cout n ; ; int main() deriveA d1(1); deriveB d2(3); base *pbase; pbase= pbase- set(1); pbase= pbase- set(2); return 0; 国家
23、二级( C+)笔试模拟试卷 70答案与解析 1 【正确答案】 D 【试题解析】 语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,其中语句 “y=y+1; ”的频度是n-1,语句 “x+; ”的频度是 (n-1)(2n+1)=2n2-n-1, 则该程序段的时间复杂度是 T(n)=n-1+2n2-n-1=O(n2)。 2 【正确答案】 B 【试题解析】 题中队列为循环队列,由于尾指针为 1比头指针小,说明尾指针已移动到 (10+1),即 11处,所以此时队列中元素个数为 11-6=5。 3 【正确答案】 A 【试题解析】 在一般情况下,要在第
24、 i个元素之前插入一个新元素时,首先是从最后一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后移动一个位置,移动结束后,第 i个位置就被空出,然后将新元素插入到第 i项。最好情况指的是在线性表的最后的元素之后插入一个新元素。则不需要移动表中元素,答案为A。 4 【正确答案】 C 【试题解析】 语句结构的风格对建立良好的程序设计风格很重要,选项 A、 B、D都是良好的语句结构的风格,考生应在编程中注意。选项 C是错误的,好的语句结构风格要求程序编写要做到清晰第一,效率第二。 5 【正确答案】 C 【试题解析】 选项 A是正确的,例如在一个包含 GOTO语句的函数中,就可以有多条 re
25、turn语句。选项 B是正确的,函数的定义不能嵌套,否则进入死循环,但函数的调用可以嵌套,如在一个递归算法中。选项 C是错误的,函数不一定有返回值。选项 D是正确的,在函数 中定义的变量属于局部变量,生存期在函数内部,因此不同的函数中可以使用相同名字的变量。 6 【正确答案】 D 【试题解析】 常见的需求分析方法有:结构化分析方法和面向对象的分析方法。其中结构化分析方法包括面向数据流的结构化分析方法、面向数据结构的 Jackson方法和面向数据结构的结构化数据系统开发方法。 7 【正确答案】 D 【试题解析】 选项 A、 B、 C都是需求分析阶段前段时间的文档。需求分析阶段最后成果就是软件需求
26、规格说明书,它是软件开发的重要文档之一。 8 【正确答案】 D 【试题解析】 常用的过程设计工具有图形工具、表格工具和语言工具,其中图形工具包括:程序流程图、 N-S、 PAD、 HIPO:表格工具有判定表:语言工具有PDL(伪码 )。 9 【正确答案】 A 【试题解析】 Visual FoxPro属于小型数据库管理系统软件,它是微软的产品,只具备数据库管理系统的一些简单功能。 10 【正确答案】 D 【试题解析】 数据库中的关系模型是采用二维表来表示实体与实体之间的联系。 11 【正确答案】 C 【试题解析】 本题考核的知识点是主函数 main()的位置和作用。一个完整的C+程序有且仅有一个
27、主函数 main()。程序总是从主函数的第 1条语句开始执行,到主函数的最后一条语句结束。其他函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。 C+规定,主函数可以出现在程序的任何地方。 12 【正确答案】 B 【试题解析】 本题主要考查逗号运算符的运算规则。逗号运算符用于将多个表达式串在一起,逗号运算符的左边总是不返回的,这就是说,逗号右边表达式的值才是整个表达式的值。逗号运算符的结合性为从左到右。由此就可以把表达式理解为 x=b=2。 13 【正确答案】 A 【试题解析】 使用 switch语句应该注意的问题:它的实现留给该基类的派生类去做。但是,可以在将一个函数声明为纯虚函数
28、的同时,为该函数提供实现版本。换句话说,一个函数是否为纯虚函数,取决于其原形的尾部是否有 “=0; ”,与函数体的有无无关。拥有实现版本的纯虚函数仍然有赖于派生类提供的重定义版本。另外,纯虚函数不能声明为内联函数。 14 【正确答案】 B 【试题解析】 本题考核指针与数组的关系。 对于选项 A,由于在定义时指针 p指向数组 a0,那么表达式 “p=p+1”就是让指针 p指向数组中的元素 a1,所以是合法的。 对于选项 C,数组名 a代表该数组的首地址,指针 p中存的也是地址,所以它们之间可以进行加减运算。 对于选项 D,数组名 a代表该数组的首地址,那么表达式 “a+2”代表的是数组元素 a2
29、的地址。 对于选项 B,由于数组名代表该数组的首地址,并且只能引用该地址而不能进行修改,所以是不合法的。 15 【正确答案】 D 【试题解析】 选择语句 switch(c)中的 c必须属于整型、字符型或枚举型。所以答案为 D。 16 【正确答案】 C 【试题解析】 不能在类定义中给数据成员赋初值。 17 【正确答案】 C 【试题解析】 常数据成员的定义与一般常量的定义方式相同,只是它的定义必须出现在类体中。常数据成员同样也必须进行初始化,并且不能被更新,但常数据成员的初始化只能通过构造函数的成员初始化列表进行。 18 【正确答案】 D 【试题解析】 在 C+的继承中,基类的构造函数和析构函数不
30、能被继承。所以选项 A是正确的。 派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,也可以说派生类是基 类的组合。所以选项 B是正确的。 派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员。 所以选项 C是正确的。 派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员,但是,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。派生类不能访问基类的私有成员,而对基类的公有成员和保护成员的访问权限则随着派生类对基类的继承方式而改变。所以选项 D的说法是错误的。 19 【正确答案】 B 【试题解析】 基类的虚函数
31、有时候不可能被调用到,这时 可定义该虚函数为纯虚函数。 纯虚函数没有函数体,但一定要进行说明,它告诉编译器,派生类必须定义该成员 函数。 纯虚函数是一种特殊的虚函数,纯虚函数是在虚函数的后面加上 “=0”,表示该虚函数无函数体,并非赋值运算。纯虚函数的一般格式为: virtual类型函数名 (参数表 )=0;。 在很多情况下,在基类中不能对虚函数给出有意义的实现,而把它说明为纯虚函数 . 20 【正确答案】 C 【试题解析】 对于选项 C,编译系统从 3获得的信息是 “T对应于 int”,从 5.5处获得的信息是 “T对应于 double”,二者相互矛盾,在编译时会产生错误。对于选项 D中紧跟
32、在函数名后的 int就是模板实参表,通过它通知编译系统在调用过程中, double型的参数 5.5将被自动换成血型。 21 【正确答案】 C 【试题解析】 本题考核指针的运算。 程序首先定义了一整型数组 a,并赋初值 1, 4, 5。即 a0, a1和 a2的值分别为 1, 4和 5。程序还定义了一个整型指针 p,并初始化它指向数组元素 a0。 在 for循环语句中,赋值语句 “z=(*(p+y) x)?*(p+y):x); ”可等价为: “z=(aly x)?ay: x”。因为表达式中的 “*(p+y)=py=ay”。 for语句每循环一次,就给变量 z重新赋值一次, z的值其实就是数组和
33、x相比较,将数组 a中的最大值赋给 z。当 y=2后,退出循环,输出结果是 5。 22 【正确答案】 A 【试题解析】 本题考核指针的加减运算。程序首先定义并初始化数组 a,并让定义指针 p指向数组 a的第 6个元素,即 a5。程序还初始化指针 q为空,即没有指向对象。那么语句 “*q=*(p+5); ”,就是错误的,因为指针 q为空 。给指针 q正确的赋值语句应为: “q=p+5; ”。 23 【正确答案】 D 【试题解析】 本题考查常用字符串函数的熟悉程度。先来了解程序中的两个字符串函数: 函数 strcpy()的函数原型为: char*strcpy(char*strDest, const
34、 char*strSrC) ;,其功能是复制 strSrc所有字符到 strDest,并返回 strDest。 函数 strlen()的函数原型为: size t strlen(const char *string);,其函数功能为:返回 string的长度,不包括结束字符 0。 再看程序:程序首先定义了一个字符数组 b1和一个指针 pb,并让指针 pb指向数组中的 b13。由于在 while语句中,每次循环都是把指针 pb所指向的字符串复制到数组 b2中,所以可以不考虑循环的中间过程,直接分析最后一次循环。循环体中的最后一次循环条件是 pb=b1,即指针 pb指向了数组元素 b10,此时把指
35、针 pb所指向的字符串复制到数组 b2中,就相当于把数组 b1中的字符串复制到数组 b2中。所以最后数组 b2中保存的就是数组 b1中的字符串,其长度为 7(不包括字符串结束 符号 0)。 24 【正确答案】 D 【试题解析】 本题考核对象指针的定义与使用。分析程序: 程序首先定义一个类 point,类 point中有两个私有成员,整型变量 x和 y,还有两个公有成员函数 setpoint(int x1,int y1)和 dispoint()。函数 setpoint()用来设置私有成员 x和 y的值,而函数 dispoint()用来显示私有成员 x和 y的值。 主函数中,首先定义了类 poin
36、t的指针对象 p,并申请了内存空间,然后调用对象 p中公有成员 setpoint给对象 p中的 私有成员 x和 y赋值,然后调用成员函数dispoint显示 x和 y的值。 由此可知,最后输出的值应该是 5, 12。 25 【正确答案】 B 【试题解析】 C+中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句 有二义性。由于Derived中又重新定义了同名成员函数 b(),所以 b()函数的调用就不存在二义性问题。 26 【正确答案】 D 【试题解析】 本题考核 this指针的应用。本程序中, sample类的 add成员函数中使用了 t
37、his指针, this指针指向当前对象自身,该成员函数中的语句 “this-n=s1.n+s2.n; ”用于修改当前对象的数据成员 n的值,语句 “return(*this); ”用于返回当前对象自身,即对当前对象进行了修改。 对于主函数调用 add()成员函数语句 “s3.add(s1, s2); ”。此时, this指针指向的是对象 s3,执行该语句前, s3的数据成员 n未赋值,执行完该语句后,就修改了 s3的私有成员 n的值,使其为 15。 27 【正确答案】 A 【试题解析】 本题考核派生类的应用。本题中类 A和类 B都 是基类。而类 C从类 A公有派生,从类 B处私有派生。所以类
38、C中的函数成员可以访问类 A和类 B中的公有成员。 在类 C的函数成员 setc()中,调用基类 A的函数成员 seta()对 A的数据成员 a赋值,还调用了基类 B的函数成员 setb()对类 B的数据成员 b赋值,然后对类 C自己的数据成员 c赋值。 在类 C的函数成员 showc()中,调用基类 A的函数成员 showa()显示数据成员 a的值,还调用基类 B的函数成员 showb()显示数据成员 b的值,然后输出类 C自己的数据成员 c的值。 在主函数中,先定义派生类的对象 c,然后调用 setc()对 c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为: 1, 2, 3。
39、28 【正确答案】 C 【试题解析】 作用域分辨符号是 “:”,它可以用来限定要访问的成员所在的类的名称。在派生类 Derive的定义中显式调用基类的函数 fun(),则只能借助于作用域分辨符 “:”。 29 【正确答案】 B 【试题解析】 本程序中,将基类的成员函数 n()定义为虚函数,而函数 f1()在派生类中被重新定义,重定义的函数仍然是一个虚函数。在 C+中,一个基类指针(或引用 )可以指 向它的派生类对象,而且通过这样的指针或引用调用虚函数时,被调用的是该指针 (或引用 )实际所指向的对象类的那个重定义版本。 30 【正确答案】 D 【试题解析】 本题主要考察 C+中流的概念和文件的
40、 I/O操作。 C+把数据的流动抽象为流,而文件流不是标准设备,因此没有 cout那样预先定义的全局对象。文件流定义的操作应用于外部设备,最典型的设备是磁盘中的文件。要定义一个文件流类对象,必须先对文件进行打开操作。常用的文件打开操作方式有 3种: 默认构造函数 +open成员函数 (对象型 ); 默认 构造函数 +open成员函数 (指针型 ): 构造函数 +指定文件名和模式。 题目选项中,选项 A采用方式 创建文件对象,选项 B采用方式 创建文件对象,选项 C采用方式 创建文件对象,上述 3个选项语句都正确的建立起输出文件对象与磁盘文件的关联。选项 D语句中,直接利用 new操作符打开文件
41、,而跳过了流对象的 open操作,语句不合法。 31 【正确答案】 n-i+1 【试题解析】 在一般情况下,要在第 i个元素之前插入一个新元素时,首先是从最后一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后 移动一个位置。 32 【正确答案】 继承 【试题解析】 继承是面向对象方法的一个重要特征。在面向对象方法中,类之间通过继承关系使得子类共享父类的属性和操作,同时子类还可以有自己的特殊属性和操作。 33 【正确答案】 功能性注释 【试题解析】 注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释的位置一般嵌在源程序体中,主要描
42、述其后的语句或程序做什么。注意区别这两种注释。 34 【正确答案】 设置断点 【试题解析】 这种调试方法 是最常用也是最低效的,主要思想是通过 ”计算机找错 ”。例如:通过内存全部打印来调试,在大量数据中寻找出错的位置。 在程序特定部位设置打印语句, 把打印语句插在出错的源程序的各个关键变量改变部位、重要分支部位、子程序调用部位,跟踪程序的执行,监视重要变量的变化。 35 【正确答案】 逻辑设计 【试题解析】 本题考核数据库设计的 4个主要阶段。考生需要牢记数据库设计中的这 4个阶段,并会区分不同阶段的功能。其中需求分析就是分析用户的要求。概念设计就是将需求分析得到的用户需求抽象为信息结构及概
43、念模型的过程 。逻辑设计是在概念结构设计的基础上,将与数据库管理系统无关的 ER图转换成以数据库管理系统的逻辑数据模型表示的逻辑模式。物理设计就是为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程。 36 【正确答案】 60 【试题解析】 变换成 a=a*(2+3) 37 【正确答案】 编译 【试题解析】 多态性的定义。 38 【正确答案】 A或者 friend 【试题解析】 友元的定义。 39 【正确答案】 A或者 A(aa), c(aa+1)或者 A或者 c(aa+1, A(aa) 【试题解析】 类的初始化。 40 【正确答案】 7 【试题解析】 r和 i共享一个地址,为同一个数。 41 【正确答案】 4 【试题解析】 static 是局部静态变量,始终存在,实例化一个类就增加 1。 42 【正确答案】 n*fact(n-1)或者 fact(n-1)*n或者 n*fact(-1+n)或者 fact(-1+n)*n 【试题解析】 递归的使用。 43 【正确答案】 3,3.14 【试题解析】 模板的使用,返回较小值。 44 【正确答案】 (*p).name 【试题解析】 类的语法相关概念。 45 【正确答案】 5 【试题解析】 虚函数以及多态的概念,调用某一处理。