1、国家二级( C+)笔试模拟试卷 4及答案与解析 1 在单链表中,增加头结点的目的是 ( )。 ( A)方便运算的实现 ( B)使单链表至少有一个元素 ( C)标识表结点中首结点的位置 ( D)说明单链表是线性表链式存储的实现形式 2 在软件测试设计中,软件测试的目的是 ( )。 ( A)实验性运用软件 ( B)证明软件正确 ( C)为了发现软件中的错误 ( D)发现软件的并处理能力 3 数据的存储结构是指 ( )。 ( A)存储在外存中的数据 ( B)数据所占的存储空间量 ( C)数据 在计算机中的顺序存储方式 ( D)数据的逻辑结构在计算机中的表示 4 下面不属于软件工程 3个要素的是 (
2、)。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 5 为了使模块尽可能独立,要求 ( )。 ( A)模块的内聚程度要尽量高,且耦合程度要尽量强 ( B)模块的内聚程度要尽量高,且耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且耦合程度要尽量强 6 关系表中的每一横行称为一个 ( )。 ( A)元组 ( B)字段 ( C)属性 ( D)码 7 排序的重要目的是为了以后对已排序的数据元素进行 ( )。 ( A)打印输出 ( B)分类 ( C)查找 ( D)合并 8 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构
3、成。下列图符名标识的图符不属于数据流图合法图符的是 ( )。 ( A)控制流 ( B)加工 ( C)数据存储 ( D)源和潭 9 软件工程的出现是由于 ( )。 ( A)程序设计方法学的影响 ( B)软件产业化的需要 ( C)软件危机的出现 ( D)计算机的发展 10 数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 ( )。 ( A)数据与程序独立存放 ( B)不同的程序被存放在不同的文件中 ( C)不同的数据只能被所对应的应用程序所使用 ( D)上述三种说法都不对 11 下列标识符中合法的是 ( )。 ( A) abde+ ( B) #KSJF ( C) 67KDJ ( D) DK
4、3 12 下列关于变量的说法中,正确的是 ( )。 ( A)在复合语句中定义的变量也是局部变量,它的生存期在本复合语句执行完毕即告结束 ( B)在一定范围内,整型变量 和字符型变量可以相互赋值,如: int a;char s=a;a=s是可以的 ( C)全局变量的有效范围是从该变量的定义位置开始到本工程结束 ( D) char a;a=878*101;cout a;,本复合语句输出的值为: 88678 13 下列说法中正确的是 ( )。 ( A)运算符 *的优先级要低于 sizeof的优先级 ( B)若 a=5.4,b=4,则执行 (int)(a/b, a+)后 a的值为 6 ( C)已知 a
5、=4,b=5,max=(+a b+)? a+:+b,则 max的值为 5 ( D) a=1;b=5;-a,执行后 b的值为 5 14 下列写法中等价的是 ( )。 ( A)若 x=1,while(x!=x)与 while(x) ( B)若 x=0,while(x!=x)与 while(x) ( C)若 x=1,while(x!=0)与 while(!x) ( D)若 x=0,while(x=0)与 while(x) 15 下面程序的输出结果是 ( )。 #include iostream using namespace std; void main( ) int i,j,m=0,n=0; fo
6、r(i=0;i 2;i+) for(j=0;j 2;j+) if(j =i) m=1;n+; cout m endl; cout n; ( A) 1 1 ( B) 1 4 ( C) 1 6 ( D) 0 2 16 对于函数 的传址调用,下面说法中不正确的是 ( )。 ( A)是把实参的地址传递给形参,所以形参、实参共用相同的存储空间 ( B)形参值的改变会影响实参值 ( C)传址调用可传给主调函数多个值 ( D)既然形参与实参共用相同空间,则它们的生存期是相同的 17 下面程序的输出结果是 ( )。 #include iostream using namespace std; int fun
7、(int, int); /fun ( ) 函数的说明 void main( ) int a =48,b =36,c; c = fun(a,B) ; cout c; int fun(int u,int v) int w; while (v) w=u%v;u =v;v =w; return u; ( A) 24 ( B) 12 ( C) 48 ( D) 36 18 下面关于形参与实参的说法,正确的是 ( )。 ( A)形参与实参的个数、类型、顺序都应一一 对应 ( B)形参与实参的个数可以不必相同,少一个多一个程序一样执行 ( C)形参与实参的类型可以不同,不影响运算结果 ( D)形参与实参的类型
8、个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可 19 对于 int a35,说法正确的是 ( )。 ( A)这是一个二维数组,它的数据元素的数据类型为整型,它按列依次存储在连续内存单元中 ( B)它的最大下标值的元素为 a35 ( C)它的最大下标值的元素为 a34 ( D)它的最大 下标值的元素为 a24 20 若有 char ch10,则下列字符串数组的赋值中不正确的是 ( )。 ( A) ch=“welcome“; ( B) ch0=w; ( C) strcpy(ch,“welcome“); ( D) char ch1=“welc
9、ome“;strcpy(ch,ch1); 21 下面程序的输出结果是 ( )。 #include iostream using namespace std; void main( ) inta33 =1,2,3,4,5; int s =0; for(int i=1;i 3;i+) for(int j=0;j =i;j+) s+=aij; cout s endl; ( A) 12 ( B) 4 ( C) 15 ( D) 13 22 假设 person是一个类, p1是该类的一个对象, p2是一个指向 p1的指针,getname()是其中的一个函数,则下面对象的使用不正确的是 ( )。 ( A)
10、person.getname(); ( B) p1.getname(); ( C) p1.person:getname(); ( D) p2- getname(); 23 下面程序的输出结果是 ( )。 #include iostream using namespace std; class point public: point(int px=10,int py=10) x=px;y=py; getpx( ) return x; getpy( ) return y; private: int x,y; ; void main(voiD) point p,q(15,15); cout “p点的
11、坐标是 :“ p. getpx( ) “ ,“; cout p. getpy( ) endl; cout “q点的坐标是 :“ q. getpx( ) “ ,“; cout q. getpy( ); ( A) p点的坐标是 :10,10 q点的坐标是 :15,15 ( B) p点的坐标是 :0,0 q点的坐标是 :15,15 ( C) p点的坐标是 :0,0 q点的坐标是 :0,0 ( D) p点的坐标是 :10,10 q点的坐标是 :10,10 24 关于保护继承的有关对象的说法,正确的是 ( )。 ( A)基类成员对于子类的对象都是不可见的,子类成员的公有成员对子类的对象是可见的 ( B)
12、子类成员对子类的对象是可见的,基类成员对子类的对象也都是可见的 ( C)基类成员中的公有成员对子类的对象是 可见的 ( D)基类成员对子类是不可见的 25 关于下面程序的说法,正确的是 ( )。 #include iostream using namespace std; class x int a; public: x()a=3; int geta( ) cout a endl; return a; ; class y: x int b; public: x: geta; /A void result ( ) b=geta ( )+8; cont b endl; ; void main (
13、) y yy; /B yy. result( ); yy. geta( ); /C ( A) A行错误,应写成 “x:geat()” ( B) B行错误,应写成 “y yy();” ( C) C行错误,不能对私变量引用 ( D)没有错误,其输出结果为: 3 11 3 26 关于函数重载的说法,正确的是 ( )。 ( A)函数的返回值类型在区别重载函数时起着举足轻重的作用 ( B)参数的个数在区别重载函数时也起着重要的作用 ( C)功能不同的两个函数也可以重载,这使得程序更简洁 ( D)重载函数是靠参数的个数和类型来区分的,参数的名称和返回值类型是不起作用的 27 如果重载不能重载的运算符会出现
14、语 法错误,下列不可以被重载的运算符是( )。 ( A) ( B) * ( C) = ( D) sizeof 28 关于模板函数与函数模板的说法,正确的是 ( )。 ( A)其实质是一样的,只是说法不同 ( B)两者的形参类型是一样的 ( C)模板函数是函数模板的实例化 ( D)函数模板是模板函数的实例化 29 关于 getline函数,说法不正确的是 ( )。 ( A)该函数接收的字符串长度是受限的,可以人为设置所接收字符串的长度,它所接收的字符串长度是这一长度值减 1 ( B)该函数遇到换行 符或其他终止符后结束操作 ( C)该函数接收从键盘输入的字符串 ( D)该函数是接收字符的函数 3
15、0 将字符 c输出不正确的是 ( )。 ( A) char ch;ch=c;cout. put(ch); ( B) cout.put(c); ( C) cout c; ( D) coat c; 31 下面程序的输出结果是 ( )。 #include iostream using namespace std; void main( ) int i=8,*p=0; p = coat p; ( A) 0 ( B)变量 i的地址 ( C) *p=0; 是错误的,因为不可给指针型变量赋予常数值 ( D) 8 32 下列程序段没有错误的是 ( )。 ( A) int*p;cin *p; ( B) int*
16、s,k;*s=100 ( C) int *s ,k; char *p ,c; s= /实部 double imag; /虚部 public: complex( double r, double i):real(r),imag(i) complex operator + (complex a) return complex(【 】 ); ; 49 以下函数模板 max( )的功能是:返回数组 a中最大元素的值。请将横线处缺失部分补充完整。 template typename T T max (T a, int n) T m=a0; for (int i=1; i n; i+) if (ai m)
17、 【 】; return m; 50 下面是一个栈类的模板,其中 push函数将元素 i压入栈顶, pop函数弹出栈顶元素。栈初始为空, top值为 0,栈顶元素在 stacktop-1中,在下面横线处填上适当语句,完成栈类模板的定义。 template class T class Tstack enum size= 1000 ; T stacksize; int top; public: Tstack():top(0) void push(const T T pop() if(top=0)exit(1); /栈空时终止运行 return 【 】 ; ; 国家二级( C+)笔试模拟试卷 4答案
18、与解析 1 【正确答案】 A 【试题解析】 头结点不仅标识了表中首结点的位置,而且根据单链表的结构,只要掌握了表头, 就能访问整个链表,因此增加头结点的目的就是为了便于运算的实现。 2 【正确答案】 C 【试题解析】 使用人工或自动手段开始运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 3 【正确答案】 D 【试题解析】 数据的逻辑结果在计算机存储空间中的存放形式称为数据的存储结构 (也称数据的物理结构 )。 4 【正确答案】 D 【试题解析】 软
19、件工 程包括三个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工程要能支持软件的开发、管理、文档生成;过程是支持软件开发的各个环节的控制、管理。因此,环境不属于软件工程三要素之一。正确答案选 D。 5 【正确答案】 B 【试题解析】 系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量高。因此,正 确答案为 B。 6 【正确答案】 A 【试题解析】 关系表中,每一行称为一个元组,对应表
20、中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。 7 【正确答案】 C 【试题解析】 排序是指将一个无序序列整理成按值顺序排列的有序序列。排序的重要目的是为了以后对已排序的数据元素进行查找。 8 【正确答案】 A 【试题解析】 数据流图由 4种基本成分构成:数据流,数据处理 (即加工 ),数据存储和外部实体 (即源和潭 )。而控制流式 程序流程图中的图符,它不属于数据流图的合法图符。 9 【正确答案】 C 【试题解析】 软件工程的出现源自于软件危机。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件
21、走向工程科学的途径,逐步形成了软件工程的概念。 10 【正确答案】 D 【试题解析】 数据库系统使数据具有两方面的独立性:一是物理独立性,即由于数据的存储结构与逻辑结构之间由系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性,即由于数 据的局部逻辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的程序也可以不必修改。因此,选项 A、选项 B和选项 C中的说法都是错误的。 11 【正确答案】 D 【试题解析】 选项 D为 C+合法的标识符。 12 【正确答案】 B 【
22、试题解析】 选项 A对静态变量而言生存期是整个程序;选项 C全局变量的有效范围是本文件;选项 D输出结果不正确 13 【正确答案】 D 【试题解析】 选项 A运算符有不同的含义;选项 B中表达式执行后 a的值应为6.4;选项 C中表达式执行后 max的值为 7。 14 【正确答案】 B 【试题解析】 该题是把 x的值分别代入两个 while的表达式中,比较它们的表达式值是否相同。 15 【正确答案】 A 【试题解析】 注意整个二重循环作用的语句为: if(j =i)m=1;,而 n+语句并不为二重循环控制。其实不论循环多少次, m、 n的值总为 1。 16 【正确答案】 D 【试题解析】 形参
23、、实参的生存期一般说来是不同的。 17 【正确答案】 B 【试题解析】 注意运算符 %的特点。 18 【正确答案】 A 【试题解析】 形参、实参个数类型、数量、顺序应相同,因为类型转换都是有条件的,如果浮点型变量向指针型变量转换就是不可的。 19 【正确答案】 D 【试题解析】 二维数组的元素按行排列;数组元素下标从 0开始。 20 【正确答案】 A 【试题解析】 ch是数组名,代表该数组的地址,是常量,不是变量,不能给其赋值。 21 【正确答案】 A 【试题解析】 该程序将第 2行的前两个元素和第 3行的第 1个元素进行累加运算。 22 【正确答案】 A 【试题解析】 选项 B其实是选项 C
24、的一种缩写,效果相同,通过类 person不能调用方法 getname()。 23 【正确答案】 A 【试题解析】 此题是给构造函数的参数赋初值。在创建对象时,若对象不带参数,则类中变量的值为构造函数的初值;若创建对象时又给对象带了值,则用此值代替初值。 24 【正确答案】 A 【试题解析】 采用保护继承方式,基类成员对子类的对象都不可见的,子类成员的公有成员对子类的对象是可见的。 25 【正确答案】 D 【试题解析】 语句 x:geta;把基类中的 公有成员说明为子类中的公有成员,因而可以为子类对象引用。 26 【正确答案】 D 【试题解析】 重载函数是靠参数的个数和类型来区分的,参数的名称
25、和返回值类型是不起作用的。 27 【正确答案】 D 【试题解析】 sizeof也不可重载。 28 【正确答案】 C 【试题解析】 模板函数是函数模板的实例化。 29 【正确答案】 D 【试题解析】 getline()一次读入一块字节,或者由一个换行符作为结束,或者由某个用户定义的终止字符作为结束。 getline()格式: getline(char * sink,streamsize size,char delimiter=n)。 30 【正确答案】 D 【试题解析】 屏幕输出是将插入符作用在流类对象 cout上,格式: cout表达式。 31 【正确答案】 B 【试题解析】 可以把 0赋给指
26、针变量。 32 【正确答案】 C 【试题解析】 指针变量一定要让它指向某个内存单元才能给它赋值、参加运算等,选项 A和选项 B都是因为没有先让指针指向某个内存单元;选项 D把不同数据类型的指针变量相互赋值是错误的。 33 【正确答案】 D 【试题解析】 类的析构函数是在类的对象被释放的时候自动调用,它的作用是删除已经创建完成的对象。 34 【正确答案】 D 【试题解析】 参数之间是用逗号分隔的,不要因为参数是表达式而被迷惑。函数的第一个参数是表达式 m+n,第三个参数是表达式 f(m+n,z,(x,y)。 35 【正确答案】 C 【试题解析】 语句 1的含义是指针变量 x所指向的地址的值不能更
27、改。但是指针变量 x的值可以进行修改。 36 【正确答案】 链式存储 或 顺序存储 【试题 解析】 栈和队列通常采用的存储结构是链式存储或顺序存储,通过链表或数组来实现。 37 【正确答案】 自顶而下 【试题解析】 在程序设计阶段应该采取自顶而下和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。 38 【正确答案】 完善性 【试题解析】 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。 39 【正确答案】 消息 【试题解析】 在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 消息。 40 【正确答案】 白盒法 【试题解析】 单元测试又称模块测试,一般采用白盒法测试。 41 【正确答案】 int 或 整型 42 【正确答案】 void fun (double b 22) 43 【正确答案】 1 0 1 44 【正确答案】 getline 45 【正确答案】 2 46 【正确答案】 基类 47 【正确答案】 内联函数 48 【正确答案】 real+ a. real, imag+ a. imag 49 【正确答案】 m=ai 50 【正确答案】 stack-top 或 stacktop-=1 或 stacktop=top-1