1、二级 C+笔试-314 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列的各类函数中,( )不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.发元函数D.拷贝初始化构造函数2.关于语句#includeiostreamusing namespace std;void main()cout100.8989663;comfixed100.8989663;coutscientific100.8989663;的输出结果为( )(分数:2.00)A.100.899 100.898966 1.008990e+002B.100.89896
2、63 100.898966 1.008990e+002C.100.899 100.898966 1.008989e+002D.100.899 100.8989663 1.008989e+0023.如果有语句 int a=3,*p=static int val;int CStatic:val=0;void main()CStatic cs1;coutcs1.val “;CStatic cs2;CStatic cs3, cs4;coutcs2. valend1;(分数:2.00)A.14B.24C.34D.545.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为( )。(分数:2.
3、00)A.MyClassclass Basepublic:void fun1() cout “Base/n“; virtual void fun2() cout “Base/n“; ;class Derived: public Basepublic:void fun1() cout “Derived/n“; void fun2() cout “Derived/n“; void f(Base B. fun2(); int main()Derived obj;f(obj);return 0;(分数:2.00)A.BaseBaseB.BaseDerivedC.Derived BaseD.Derive
4、dDerived7.下面关于成员函数重载运算符和友元函数重载运算符相同的是( )。(分数:2.00)A.成员函数和友元函数可重载的运算符是不相同的B.成员函数和友元函数重载运算符时都需要用到 this 指针C.成员函数和友元函数重载运算符时都需要声明为公有的D.成员函数和友元函数重载运算符时的参数可能是相同的8.磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。(分数:2.00)A.inB.outC.appD.ate9.软件开发模型包括( )。 瀑布模型 扇形模型 快速原型法模型 螺旋模型(分数:2.00)A.、B.、C.、D.、10.如果进栈序列为 e1,e2,e3
5、,e4,则可能的出栈序列是( )。(分数:2.00)A.e3, e1, e4, e2B.e2, e4, e3, e1C.e3,e4,e1,e2D.任意顺序11.有如下程序段:int x=3,dox-=2;coutx;while(!(-x);执行这个程序段的输出结果是( )。(分数:2.00)A.1B.30C.1-2D.死循环12.若已知 char str 20;,且有语句 cinstr;,此时输入为“This is a program“,则所得的结果是 str=( )。(分数:2.00)A.This is a programB.ThisC.This isD.This is a13.算法是一种(
6、 )。(分数:2.00)A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法14.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMSD.没有任何关系15.进行初始化即可自动获得初值 0 的变量包括( )。(分数:2.00)A.任何用 static 修饰的变量B.任何在函数外定义的变量C.局部变量和用 static 修饰的全局变量D.全局变量和用 static 修饰的局部变量16.有以下程序:#include iostreamu
7、sing namespace std;class sampleprivate: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=“nend1;int main()sample s1(10),s2(5),s3;s3.add(s1,s2);s3.disp();return 0,(分数:2.00)A.n=10B.n=5C.n=20D.n=1517.关系数据模型通常由三部分组成,它们是( )。(分数:2.00)A
8、.数据结构、数据通信、关系操作B.数据结构、关系操作、完整性约束C.数据通信、关系操作、完整性约束D.数据结构、数据通信、完整性约束18.语句 ofstream f(“DATA. DAT“, ios _base: applios_ lios_ base: binary);的功能是建立流对象 f,并试图打开文件 DATA. DAT 并与之连接,而且( )。(分数:2.00)A.若文件存在,将文件指针定位于文件首,若文件不存在,建立一个新文件B.若文件存在,将其截为空文件;若文件不存在,打开失败C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件在,
9、建立一个新文件19.下列叙述中正确的是( )。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对20.下面是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+ (Fraction,Fraction);B.Fraction opemtor-(Fraction);C.Fractionstr=“test!“;coutstr5;(分数:2.00)A.程序错误B.!C./0D.为空字符26.下面关于 C+ 语言变量的叙述错误的是( )。(分数:2.00)
10、A.C+语言中变量分为 auto,static,extern 和 register 四种存储类型B.自动变量和外部变量的作用域为整个程序C.内部静态变量的作用域是定义它的函数D.外部静态变量的作用域是定义它的文件27.关于静态数据成员的描述中正确的是( )。(分数:2.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化28.下列关于运算符重载不正确的是( )。(分数:2.00)A.运算符重载不能改变运算符的操作数个数B.运算符重载不能改变运算符的优先级C.运算符重载不能改变运
11、算符的结合性D.运算符重载能改变对预定义类型数据的操作方式29.下列关于虚函数的说明中,正确的是( )。(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数30.把实体一联系模型转换为关系模型时,实体之间多对多关系在关系模型中是通过( )。(分数:2.00)A.建立新的属性来实现B.建立新的关键字来实现C.建立新的关系来实现D.建立新的实体来实现31.以下程序中函数 scmp 功能是返回形参指针 s1 和 s2 所指字符串中较小字符串的首地址。#includstring. hchar *scmp(char
12、 *s1,char *s2)if(strcmp(s1,s2)0)return(s1);else return(s2);main()int i;char string20,str320;for(i=0;i3;i+) gets(stri);strcpy(string,scmp(str0,str1); /库函数 strcpy 对字符串进行复制strcpy(string,scmp(stfing,str2);puts(string); 若运行时依次输入: abed、abba 和 abc 三个字符串,则输出结果为( )。(分数:2.00)A.abedB.abbaC.abcD.abca32.下列数据结构中,
13、按“先进后出”原则组织数据的是( )。(分数:2.00)A.线性链表B.栈C.循环链表D.顺序表33.设有以下程序段:int a5=0),*p,*q;p=a;q=a;则下列选项中,合法的运算是( )。(分数:2.00)A.p+qB.p-qC.p*qD.p%q34.有如下类定义:class Foopublic:Foo(int v): value(v) / Foo() / private:Foo() ) / int value =0; / ;其中存在语法错误的行是( )(分数:2.00)A.B.C.D.35.模板函数的真正代码是在( )时候产生。(分数:2.00)A.源程序中声明函数时B.源程序中
14、定义函数时C.源程序中调用函数时D.运行执行函数时二、填空题(总题数:15,分数:30.00)36.问题处理方案的正确而完整的描述称为 【1】 。(分数:2.00)填空项 1:_37.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是 【2】 。(分数:2.00)填空项 1:_38.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 【3】 。(分数:2.00)填空项 1:_39.利用继承能够实现 【4】 。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。(分数:2.00)填空项 1:_40. 【5】 是精确定
15、义的一系列规则,它指出怎样从给定的输入信息经过有限步骤产生所求的输出信息。(分数:2.00)填空项 1:_41.若 a=12,b=14,c=0,则表达式(y=(ab)?a:b)c)?y:c 的值为 【6】 。(分数:2.00)填空项 1:_42.如果表达式-x 中的“-”是重载的类运算符,采用运算符函数调用格式,及表达式还可以表示为 【7】 。(分数:2.00)填空项 1:_43.若从键盘输入 70,则以下程序输出的结果是 【8】 。#includeiostream.hvoid main()int a; cina;if(a50) couta;if(a40) couta;if(a30) cout
16、a;(分数:2.00)填空项 1:_44.有如下的程序:#includeiostream#includefstreamusing namespace std;int main() char s25=“Programming language“;ofstream f1(DATA.TXT“);f1“C+ Programming“;f1.close();ifstream f2 (“DATA.TXT“);if(f2.good()f2s;f2. close();couts;return 0;执行上面的程序交输出 【9】 。(分数:2.00)填空项 1:_45.如果表达式 x=y*z 中的“”是作为成员函
17、数重的运算符,采用运算符函数调用格式,该表达式还可以表示为 【10】 。(分数:2.00)填空项 1:_46.在 C+语言中每个类都有一个 【11】 指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_47.若以非成员函数形式,为类 Bounce 重载“!”运算符,其操作结果为一 bool 型数据,则该运算符重载函数的原型是 【12】 。(分数:2.00)填空项 1:_48.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是 【13】 。#include iostreamusing namesp
18、ace std;class Base public:void print () ctout B; ;class Derived; public Base public:void print () cout D; ;int main()Derived* pd= new Derived();Base* pb = pd;pb-print();pd-print();delete pd;return ();(分数:2.00)填空项 1:_49.下面程序的输出结果是 【14】 。#define MIN(a,b) (a)(b)?a:b)#include iostream.hvoid main()int x=
19、 3, y=5;cout MIN(x,y)end1;(分数:2.00)填空项 1:_50.下列程序的输出结果是 【15】 。#include iostreamusing namespace std;template typename TT total(T* data)Ts=0;while(*data)s+=*data+;return s;int main()int x=2,4,6,8,0,12,14,16,18;couttotal(x)end1;return 0;(分数:2.00)填空项 1:_二级 C+笔试-314 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35
20、,分数:70.00)1.下列的各类函数中,( )不是类的成员函数。(分数:2.00)A.构造函数B.析构函数C.发元函数 D.拷贝初始化构造函数解析:2.关于语句#includeiostreamusing namespace std;void main()cout100.8989663;comfixed100.8989663;coutscientific100.8989663;的输出结果为( )(分数:2.00)A.100.899 100.898966 1.008990e+002 B.100.8989663 100.898966 1.008990e+002C.100.899 100.89896
21、6 1.008989e+002D.100.899 100.8989663 1.008989e+002解析:3.如果有语句 int a=3,*p=static int val;int CStatic:val=0;void main()CStatic cs1;coutcs1.val “;CStatic cs2;CStatic cs3, cs4;coutcs2. valend1;(分数:2.00)A.14 B.24C.34D.54解析:5.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为( )。(分数:2.00)A.MyClassclass Basepublic:void fun1(
22、) cout “Base/n“; virtual void fun2() cout “Base/n“; ;class Derived: public Basepublic:void fun1() cout “Derived/n“; void fun2() cout “Derived/n“; void f(Base B. fun2(); int main()Derived obj;f(obj);return 0;(分数:2.00)A.BaseBaseB.BaseDerived C.Derived BaseD.DerivedDerived解析:7.下面关于成员函数重载运算符和友元函数重载运算符相同
23、的是( )。(分数:2.00)A.成员函数和友元函数可重载的运算符是不相同的 B.成员函数和友元函数重载运算符时都需要用到 this 指针C.成员函数和友元函数重载运算符时都需要声明为公有的D.成员函数和友元函数重载运算符时的参数可能是相同的解析:8.磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。(分数:2.00)A.inB.outC.app D.ate解析:9.软件开发模型包括( )。 瀑布模型 扇形模型 快速原型法模型 螺旋模型(分数:2.00)A.、B.、C.、 D.、解析:10.如果进栈序列为 e1,e2,e3,e4,则可能的出栈序列是( )。(分数:2.
24、00)A.e3, e1, e4, e2B.e2, e4, e3, e1 C.e3,e4,e1,e2D.任意顺序解析:11.有如下程序段:int x=3,dox-=2;coutx;while(!(-x);执行这个程序段的输出结果是( )。(分数:2.00)A.1B.30C.1-2 D.死循环解析:12.若已知 char str 20;,且有语句 cinstr;,此时输入为“This is a program“,则所得的结果是 str=( )。(分数:2.00)A.This is a programB.This C.This isD.This is a解析:13.算法是一种( )。(分数:2.00
25、)A.加工方法B.解题方案的准确而完整的描述 C.排序方法D.查询方法解析:14.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB 包含 DBS 和 DBMSB.DBMS 包含 DB 和 DBSC.DBS 包含 DB 和 DBMS D.没有任何关系解析:15.进行初始化即可自动获得初值 0 的变量包括( )。(分数:2.00)A.任何用 static 修饰的变量B.任何在函数外定义的变量C.局部变量和用 static 修饰的全局变量D.全局变量和用 static 修饰的局部变量 解析:16.有以下程序:#include iostream
26、using namespace std;class sampleprivate: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=“nend1;int main()sample s1(10),s2(5),s3;s3.add(s1,s2);s3.disp();return 0,(分数:2.00)A.n=10B.n=5C.n=20D.n=15 解析:17.关系数据模型通常由三部分组成,它们是( )。(分数:2
27、.00)A.数据结构、数据通信、关系操作B.数据结构、关系操作、完整性约束 C.数据通信、关系操作、完整性约束D.数据结构、数据通信、完整性约束解析:18.语句 ofstream f(“DATA. DAT“, ios _base: applios_ lios_ base: binary);的功能是建立流对象 f,并试图打开文件 DATA. DAT 并与之连接,而且( )。(分数:2.00)A.若文件存在,将文件指针定位于文件首,若文件不存在,建立一个新文件B.若文件存在,将其截为空文件;若文件不存在,打开失败C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 D.若文件存在,
28、打开失败;若文件在,建立一个新文件解析:19.下列叙述中正确的是( )。(分数:2.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对 解析:20.下面是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+ (Fraction,Fraction);B.Fraction opemtor-(Fraction);C.Fractionstr=“test!“;coutstr5;(分数:2.00)A.程序错误B.!C./0D.为空字符 解析:26.下面关于 C+ 语言变
29、量的叙述错误的是( )。(分数:2.00)A.C+语言中变量分为 auto,static,extern 和 register 四种存储类型B.自动变量和外部变量的作用域为整个程序 C.内部静态变量的作用域是定义它的函数D.外部静态变量的作用域是定义它的文件解析:27.关于静态数据成员的描述中正确的是( )。(分数:2.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化 解析:28.下列关于运算符重载不正确的是( )。(分数:2.00)A.运算符重载不能改变运算符的操作数个数B
30、.运算符重载不能改变运算符的优先级C.运算符重载不能改变运算符的结合性D.运算符重载能改变对预定义类型数据的操作方式 解析:29.下列关于虚函数的说明中,正确的是( )。(分数:2.00)A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:30.把实体一联系模型转换为关系模型时,实体之间多对多关系在关系模型中是通过( )。(分数:2.00)A.建立新的属性来实现B.建立新的关键字来实现C.建立新的关系来实现 D.建立新的实体来实现解析:31.以下程序中函数 scmp 功能是返回形参指针 s1 和 s2 所指字符串中
31、较小字符串的首地址。#includstring. hchar *scmp(char *s1,char *s2)if(strcmp(s1,s2)0)return(s1);else return(s2);main()int i;char string20,str320;for(i=0;i3;i+) gets(stri);strcpy(string,scmp(str0,str1); /库函数 strcpy 对字符串进行复制strcpy(string,scmp(stfing,str2);puts(string); 若运行时依次输入: abed、abba 和 abc 三个字符串,则输出结果为( )。(分
32、数:2.00)A.abedB.abba C.abcD.abca解析:32.下列数据结构中,按“先进后出”原则组织数据的是( )。(分数:2.00)A.线性链表B.栈 C.循环链表D.顺序表解析:33.设有以下程序段:int a5=0),*p,*q;p=a;q=a;则下列选项中,合法的运算是( )。(分数:2.00)A.p+qB.p-q C.p*qD.p%q解析:34.有如下类定义:class Foopublic:Foo(int v): value(v) / Foo() / private:Foo() ) / int value =0; / ;其中存在语法错误的行是( )(分数:2.00)A.B
33、.C.D. 解析:35.模板函数的真正代码是在( )时候产生。(分数:2.00)A.源程序中声明函数时B.源程序中定义函数时C.源程序中调用函数时 D.运行执行函数时解析:二、填空题(总题数:15,分数:30.00)36.问题处理方案的正确而完整的描述称为 【1】 。(分数:2.00)填空项 1:_ (正确答案:算法(或程序、或流程图))解析:37.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是 【2】 。(分数:2.00)填空项 1:_ (正确答案:无歧义性)解析:38.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为 【3】 。
34、(分数:2.00)填空项 1:_ (正确答案:数据字典)解析:39.利用继承能够实现 【4】 。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。(分数:2.00)填空项 1:_ (正确答案:软件复用)解析:40. 【5】 是精确定义的一系列规则,它指出怎样从给定的输入信息经过有限步骤产生所求的输出信息。(分数:2.00)填空项 1:_ (正确答案:算法)解析:41.若 a=12,b=14,c=0,则表达式(y=(ab)?a:b)c)?y:c 的值为 【6】 。(分数:2.00)填空项 1:_ (正确答案:14)解析:42.如果表达式-x 中的“-”是重载的类运算符,
35、采用运算符函数调用格式,及表达式还可以表示为 【7】 。(分数:2.00)填空项 1:_ (正确答案:x. opelator-())解析:43.若从键盘输入 70,则以下程序输出的结果是 【8】 。#includeiostream.hvoid main()int a; cina;if(a50) couta;if(a40) couta;if(a30) couta;(分数:2.00)填空项 1:_ (正确答案:707070)解析:44.有如下的程序:#includeiostream#includefstreamusing namespace std;int main() char s25=“Pro
36、gramming language“;ofstream f1(DATA.TXT“);f1“C+ Programming“;f1.close();ifstream f2 (“DATA.TXT“);if(f2.good()f2s;f2. close();couts;return 0;执行上面的程序交输出 【9】 。(分数:2.00)填空项 1:_ (正确答案:C+)解析:45.如果表达式 x=y*z 中的“”是作为成员函数重的运算符,采用运算符函数调用格式,该表达式还可以表示为 【10】 。(分数:2.00)填空项 1:_ (正确答案:x=y. operator*(z))解析:46.在 C+语言中
37、每个类都有一个 【11】 指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_ (正确答案:this)解析:47.若以非成员函数形式,为类 Bounce 重载“!”运算符,其操作结果为一 bool 型数据,则该运算符重载函数的原型是 【12】 。(分数:2.00)填空项 1:_ (正确答案:bool operator!(Bounce);)解析:48.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是 【13】 。#include iostreamusing namespace std;class
38、 Base public:void print () ctout B; ;class Derived; public Base public:void print () cout D; ;int main()Derived* pd= new Derived();Base* pb = pd;pb-print();pd-print();delete pd;return ();(分数:2.00)填空项 1:_ (正确答案:BD)解析:49.下面程序的输出结果是 【14】 。#define MIN(a,b) (a)(b)?a:b)#include iostream.hvoid main()int x= 3, y=5;cout MIN(x,y)end1;(分数:2.00)填空项 1:_ (正确答案:3)解析:50.下列程序的输出结果是 【15】 。#include iostreamusing namespace std;template typename TT total(T* data)Ts=0;while(*data)s+=*data+;return s;int main()int x=2,4,6,8,0,12,14,16,18;couttotal(x)end1;return 0;(分数:2.00)填空项 1:_ (正确答案:20)解析: