1、国家二级( C+)笔试模拟试卷 257及答案与解析 1 需求分析阶段的任务是确定 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 2 数据库系统的核心是 ( A)数据库 ( B)数据库管理系统 ( C)模拟模型 ( D)软件工程 3 下列程序执行后,输出的结果是 ( )。 int x=-5,y=0; while(+x) y+; cout y end1; ( A) 1 ( B) 2 ( C) 4 ( D) 5 4 下面程序输出的结果为 ( )。 #include iostream.h void fun(int a,int b) int temp; temp
2、=a; a=b; b=temp; void main() int m,n; m=1; n=2; fun(m,n); cout m “ n end1; ( A) 12 ( B) 21 ( C) 22 ( D)程序有错误 5 模板对类型的参数化提供了很好的支持,因此 ( A)类模板的主要作用是生成抽象类 ( B)类模板实例化时,编译器将根据给出的模板实参生成一个类 ( C)在类模板中的数据成员都具有同样类型 ( D)类模板中的成员函数都没有返回值 6 下列有关指针的用法中,错误的是 ( )。 ( A) int i;int *p= ( B) int i;int *p;i=*p; ( C) int *
3、p;p=0; ( D) int i=5;int *p;p= 7 下列关于线性链表的叙述中,正 确的是 ( )。 A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B) 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C) 进行插入与删除时,不需要移动表中的元素 D) 以上三种说法都不对 8 下列模式中,能够给出数据库物理存储结构与物理存取方法的是 _ . ( A)内模式 ( B)外模式 ( C)概念模式 ( D)逻辑模式 9 下列叙述中,不正确的是 ( )。 ( A)一个数据结构中的元素在计算机存储空间中的位置关系与逻辑关系可能不同 ( B)一个数据
4、结构中的元素在计算机存储空间中的位置关系与逻辑关系一定不同 ( C)数据的存储结构,也称数据的物理结构。 ( D)数据的存储结构与数据的逻辑结构是不同的 10 两个或两个以上模块之间关联的紧密程度称为 ( A)耦合度 ( B)内聚度 ( C)复杂度 ( D)数据传输特性 11 静态数据成员是为 ( )的数据。 ( A)私有 ( B)保护 ( C)所有对象共享 ( D)类成员 12 下面程序的输出结果是 ( )。 #include iostream.h #include string.h void main() char p110, p210; strcpy(p1, ”abc”); strcpy
5、(p2, ”ABC”); charsty50=“xyz”; strcpy(str+2, strcat(p1, p2); cout str; ( A) xyzabcABC ( B) zabcABC ( C) xyabcABC ( D) yzabcABC 13 下列表达式的值为 false的是 ( )。 ( A) 1 3 if(fin) cout “ok“; else cout “wrong“; if语句中的内容可以换为 ( A) fin. fail( ) ; ( B) fin. bad( ) ; ( C) fin. good( ) ; ( D) fin. eof( ) ; 15 重载输入流运算符
6、必须使用的原型为 ( )。 ( A) istream ( B) istream ( C) istream operator (istream,类名 ( D)类名 operator (istream 16 有如下定义: int b10=1, 2,3,4, 5,6, 7,8,9, 10, *q=b; 则 数值为 8的表达式是 ( )。 ( A) *q+8 ( B) *(q+7) ( C) *q+=8 ( D) q+7 17 以下程序中调用 cin函数给变量 a输入数值的方法是错误的,其错误原因是 #include void main() int *p,*q,a,b; p= cout “input
7、a:“; cin p; ( A) *p表示的是指针变量 p的地址 ( B) p表示的是变量 a的地址,而不是变量 a的值 ( C) *p表示的是指针变量 p的值 ( D) *p只能用来说明 p是一个指针变量 18 友元运算符 obj1 obj2被 C+编译器解释为 ( )。 ( A) operator (obj1, obj2) ( B) (obj1, obj2) ( C) obj2.operator (obj1) ( D) obj1.operator (obj2) 19 下面程序的运行结果是 ( )。 #include iostream.h int x=5; int fun(int a) in
8、t c; C=X*a; retum c; void main() int x=3,a=4; x=x+fun(a); cout “x“” X endl; ( A) x=15 ( B) x=17 ( C) x=23 ( D) x=25 20 请指出程序片段的语法错误 _。 ( A) int *age_ptr; ( B) int m=3; ( C) *age_ptr= else cout *ptr; ptr+; return 0; ( A) HELLO,WORLD ( B) Hello,World ( C) hELLO, wORLD ( D) hello,world 22 若有如下语句 #inclu
9、de iostream h void main() int x=3: do X=X-2; cout X; while(!(-x); 则上面 程序段 ( A)输出的是 1 ( B)输出的是 1和 -2 ( C)输出的是 3和 0 ( D)是死循环 23 下列语句的输出结果 cout strlen(“t“065xffn“); ( A) 5 ( B) 14 ( C) 8 ( D)输出项不合法,无正常输出 24 有如下说明 int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=a; 则数值为9的表达式是 ( A) *p+9 ( B) *(p+8) ( C) *p+=9 (
10、 D) p+8 25 若有定义: int*p; 则下列各选项中,不同于表达式 “*p=*p+1; ”的是 ( )。 ( A) *p+; ( B) +*p; ( C) *p+=1; ( D) +(*p); 26 若有以下定义和语句: int s45, (*ps)5; ps=s; 则对 s数组元素的正确引用形式是 ( )。 ( A) ps+1 ( B) *(ps+3) ( C) ps02 ( D) *(ps+1)+3 27 不合法的 main函数命令行参数表示形式是 ( )。 ( A) main(int a, char*c1 ( B) main(int arc, char*arv) ( C) ma
11、in(int argc, char*argv) ( D) main(int argy, char*argc) 28 派生类对象对其基类中的什么成员是可访问的 ? ( A)公有继承的私有成员 ( B)私有继承的公有成员 ( C)私有继承的保护成员 ( D)保护继承的保护成员 29 下面程序应能对两个整型变量的值进行交换。以下正确的说法是 #include iostream h void swap(int p, int q) int t; t=p; p=q; q=t; void main( ) int a=10, b=20; cout a “ “ b; swap( cin n; if(n+ 10)
12、cout n endl; else cout n- endl; ( A) 11 ( B) 10 ( C) 9 ( D) 8 31 下列各类函数中,不是类的成员函数的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)拷贝构造函数 32 如下程序的输出结果是 main()inta=2, b=-1, c=2;if(a B) if(b 0)c=0; else c+;cout c end1; ( A) 0 ( B) 1 ( C) 2 ( D) 3 33 下面叙述不正确的是 ( )。 ( A)在函数中,通过 return语句传回函数值 ( B)在函数中,可以有多条 return语句 ( C
13、)主函数名 main()后的一对圆括号中也可以带有参数 ( D)调用函数必须在一条独立的语句中完成 34 关于关键字 class和 typename,下列表述正确的是 ( A)程序中所有的 typename都可以替换为 class ( B)程序中所有的 class都可以替换为 typename ( C) A)和 B)都正确 ( D) A)和 B)都不正确 35 已知 Value是一个类, value是 Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是 ( A) Value operator+(Value v, int i); ( B) Value operator+(
14、Value v value, int i); ( C) Value operator+(Value v, int i 0); ( D) Value operator+(Value v=value, int i=0); 36 37 在两种基本测试方法中, _测试的原则之一是保证所测模块中每一个独立路径至少执行一次。 38 39 有如下程序: #include iostream using namespace std; class CA public: CA( )cout A; ; class CB:private CA public: CB( )cout B; ; int main( ) CA
15、a; CB b; return 0; 运行时的输出结果是 _。 40 在数据库技术中,实体集之问的联系可以是一对一或一对多或多对多的,那么“学生 ”和 “可选课程 ”的联系为 _。 41 有如下类声明: class 1 estClass1 int k: public: void set(int n)k=n; int get()constreturn k; ; class TestClass2: protected TestClass1 protected: int j; public: void set(int m, int n)TestClass1: set(m);j=n; int geto
16、constreturn TestClass1: get()+j; ; 则类 TestClass2中保护的数据成员和成员函数的个数是 _。 42 写出执行完下列代码段之后指定变量的值: boo1 x=true,y=false,z=false; x=x y=xy z=!(x!=y)(y=z), 则 x=false, y=false, z=【 】。 43 指针变量所保存的不是一般的数据值,而是程序中另一个对象的【 】。 44 函数 swap(arr,n)可完成对 arr数组从第 1个元素到第 n个 元素两两交换。在运行调用函数中的语句后, a0和 a1的值分别为【 】。 a0=1; a1=2; sw
17、ap(a,2); 45 若要在 C盘根目录下作为二进制文件打开文件 test dat,则应该用的语句是【 】。 46 operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 _的。 47 多态性分为两类:编译时的多态性和【 】的多态性。 48 耦会和内聚是评价模块独立性的两个主要标准,其中 _反映 了模块内各成分之间的联系。 49 在 C+流类库中,根基类为 _。 50 下面程序的运行结果为 【 】 。 #include iostream h void fun(int x=0, int y=0) cout x y; void
18、main( ) fun(5); 国家二级( C+)笔试模拟试卷 257答案与解析 1 【正确答案】 D 2 【正确答案】 B 【试题解析】 数据库管理系统 (DataBase Management System,简称 DBMS) 是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。 3 【正确答案】 C 4 【正确答案】 A 【试题解析】 函数 fun 中定义的参数 a和 b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数 fun 没有返
19、回值,它做的交换操作,并不能影响实际参数m和 n。所 以输出值保持不变,仍然是 1和 2,即输出: 12。 5 【正确答案】 B 【试题解析】 类模板是一个通用类,不知道其数据成员和成员函数的返回类型和形参类型,系统会根据实参的类型来取代类模板中的虚拟类型从而实现不同类的功能。类模板中的数据成员的类型并非一定要一致。 6 【正确答案】 B 【试题解析】 “int i;”语句为定义了一个整型变量 i。 “int *p”为定义一个整型指针p。选项 A) 中的 “int *p=”是定义整型指针变量 p,并指向整型 i的地址。选项B) 中 “i=*p”语句是将 p指向的变量赋值给 i,而指针 p 没有
20、初始化,所以选项 B) 错误。选项 C) 中 “p=0;”表示 p指向 0的地址。选项 D) 中 “ t= * p; * p=*q; *q=t; 执行程序时,先将 a的地址传递给指针变量 p, b 的地址传递给指针变量 q,然后将 *p(a的值 )的值传递给 t,将 *q(b的值 )传递给 * p,将 t的值传递给 * q,从而将 a值和 b值互换。 30 【正确答案】 B 【试题解析】 本题考察的是后置自增运算符的知识,这类题考生往往做错,以原因不能正确拆解。题中 if语句可以拆解为: if(9 10),n+1 10,cout 10endl;自增所代表的加一操作要紧跟在原表达式后面,而不是原
21、语句后面。 31 【正确答案】 C 【试题解析】 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数而友元函数则是为了增加类的访问灵活行而允许其他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。 32 【正确答案】 C 【试题解析】 本题考察的是 ifelse 语句中的配对原则:与最近的配对,故当 a b 为假时直接执行输出语句,即 c的值是 2,正确答案为 C。 33 【正确答案】 D 【试题解析】 调用函数不必在一条独立的语句中完成。 34 【正确答案】 A 35 【正确答案】 B 【试题解析】 类名 operato
22、r+(类名 String & s1,类名 String & s2)。 36 【正确答案】 5 37 【正确答案】 白盒 【试题解析】 按功能划分测试可分为白盒测试和黑盒测试。白盒测试的原则是保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次;保证所测试模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。 38 【正确答案】 软件开发 【试 题解析】 软件生命周期分为三个时期共八个阶段:软件定义期 (问题定义、可行性研究和需求分析阶段 )、软件开发期 (系统设计、详细设计、编码和测试阶段 )、软件维护期 (即运行维护阶段 )。 3
23、9 【正确答案】 AAB 【试题解析】 CA a生成一个 cA类对象 a,调用 CA的构造函数一次,打印 A。CB b 中的 b是派生类,在构造时先调用基类的构造函数,然后调用派生类的构造函数,故先打印 A后打印 B。 40 【正确答案】 多对多 【试题解析】 一名学生可选择多门课程,一门课程也可由多名学生选择,因 此是多对多联系。 41 【正确答案】 3 【试题解析】 首先在 TestClass2中声明为 protected 的变量 j为保护的数据成员。然后 TestClass2 保护继承于 TestClass1,所以基类 TestClass1 中的公有成员和保护成员在派生类 TestCla
24、ss2中都成了保护成员。即 get和 set函数都成了保护成员。 42 【正确答案】 真 43 【正确答案】 内存地址 44 【正确答案】 2,1 45 【正确答案】 if stream且 fin(“C: test dat”, ios_binary);或 if stream fin,;fin open(c: test dat“, ios_binary); 【试题解析】 C+中打开文件有两种方式 if stream fin (“test dat”); if stream fin; fin open(“test dat”);, ios_binary的意义是以二进制文件打开。 46 【正确答案】 public 47 【正确答案】 运行时 【试题解析】 本题考核多态性的概念。在 C+语言中,多态性可分为两类:编译时的多态性和运 行时的多态性。 48 【正确答案】 内聚 49 【正确答案】 ios 类 50 【正确答案】 50 【试题解析】 本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应从右至左逐个定义,所以题目中 x使用参数 5, y使用默认参数 0。