1、二级 C+笔试 50及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.友元运算符。obj1obj2 被 C+编译器解释为( )。(分数:2.00)A.operator(obj1,obj2)B.(obj1,obj2)C.obj2operator(obj1)D.obj1.operator(obj2)2.最简单的交换排序方法是( )。(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序3.下列关于 switch 语句的描述中,( )是正确的。(分数:2.00)A.switch语句中 default 子句可以没有,也可有一个B.sw
2、itch语句中每个语句序列中必须有 break语句C.switch语句中 default 子句只能放在最后D.switch语句中 case 子句后面的表达式只能是整型表达式4.下列 dowhile循环的循环次数为( ) int i=5; do cout1-endl: 1-; while (i):(分数:2.00)A.0B.1C.5D.无限5.下面对静态数据成员的描述中,正确的是( )。 A静态数据成员是类的所有对象共享的数据 B类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D静态数据成员不能通过类的对象调用(分数:2.00)A.B.C.D.6.若有如下语句 #i
3、ncludeiostream.h void main() int x=3; do x=x-2 coutx; while (! (- -x); 则上面程序段( )(分数:2.00)A.输出的是 1B.输出的是 1和一 2C.输出的是 3和 0D.是死循环7.已知类 Sample 中的一个成员函数说明如下: void Set (Sample D.char A=A;coutA;10.在下列对字符数组进行初始化中,( )是正确的。(分数:2.00)A.char sl=“abcd“;B.char s23=“xy2“;C.char s3 =a,x,y;D.char s42 3=“xyz“,“mnp“;11
4、.下列叙述中正确的是( )(分数:2.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构12.在软件生产过程中,需求信息的给出是( )(分数:2.00)A.程序员B.项目管理者C.软件分析设计人员D.软件用户13.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。(分数:2.00)A.publicB.protectedC.privateD.static14.C+中把数据之间的传输操作称为( )(分数:2.00)A.源B.汇C.流D.文件15.下列程序的运行结果是( )。 #include iostreamh
5、void fun (int *a,int*b) int*k k=a;a=b;b=k void main() int a=2004, b=9,*x= ; class DERIVED; public BASE char c; public: DERIVED (char n): BASE (n+1),c(n) DERIVED() coutc;) ;int main() DERIVED(X); return 0; 执行上面的程序将输出( )。(分数:2.00)A.XYB.YXC.XD.Y25.以下程序的输出结果是( )。 #includeiostream.h int fun (char*s) char
6、 *p=s; while (*p!=/0,) p+: return (p-s): void main() coutfun (“ ABCDEF “)endl: (分数:2.00)A.3B.6C.8D.026.以下程序的执行结果是( )。 #includeiostreamh templateclass T class Sample T n; Public: Sample (T i)n=i;) void operator +(); void disp() cout“n=“nendl; ; templateclass T void SampleT: opetator +() n+=1;不能用 n+,因
7、为 double型不能用+ void main() Samplechars(a); S+; s.disp(); (分数:2.00)A.n=aB.a=OC.n=bD.a=b27.下表正确的是( )。 在父类中的访问属性访问修饰符在子类中的访问属性(分数:2.00)A.publiCprivate 不能直接访问B.protect publiC publicC.private publiC不能直接访问D.protectprivate protect28.下面关于 ios类的叙述中,正确的是( )。(分数:2.00)A.它是 istream类和 ostream类的虚基类B.它只是 istream类的虚基
8、类C.它只是 ostream类的虚基类D.它是 ostream类的虚基类29.下列运算符中全都可以被友元函数重载的是( )(分数:2.00)A.=,+,-,/B.,+,(),newC.-,+,*,D.,+,*30.派生类的构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类中子对象的初始化D.派生类中一般数据成员的初始化31.设置虚基类的目的是( )。(分数:2.00)A.简化程序B.消除二义性C.提高运行效率D.减少目标代码32.不属于 ios直接派生的类为( )。(分数:2.00)A.输入流类(istreaB.输出流类(ostr
9、eaC.文件流基类(fstreambasD.格式控制类(iomani33.( )是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。(分数:2.00)A.虚析构函数B.构造函数C.纯虚函数D.静态成员函数34.在 C+语言中,对函数参数默认值描述正确的是( )。(分数:2.00)A.函数参数的默认值只能设定一个B.一个函数的参数若有多个,则参数默认值的设定可以不连续C.函数参数必须设定默认值D.在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值35.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( )
10、。(分数:2.00)A.参数个数B.参数的类型C.函数名称D.函数的类型二、B填空题/B(总题数:15,分数:30.00)36.C+定义了类库实现数据的输入和输出, 1 为根基类。(分数:2.00)填空项 1:_37.内联函数是通过 1 来实现的,因此内联函数是真正的函数。(分数:2.00)填空项 1:_38.以下程序的执行结果是_ #includeiostrearn.h int f(int b,int n) int i,r=l; for(i=0;in;i+) r=r*bi; return r; void main() int x,a= 2,3,4,5,6,7,8,9; x=f(a,3): c
11、outxendl; (分数:2.00)填空项 1:_39.下面程序的运行结果是_。 #includeiostreamh void fun(int D.char A=A;coutA;解析:10.在下列对字符数组进行初始化中,( )是正确的。(分数:2.00)A.char sl=“abcd“; B.char s23=“xy2“;C.char s3 =a,x,y;D.char s42 3=“xyz“,“mnp“;解析:11.下列叙述中正确的是( )(分数:2.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:12.在软件生产过程中,需求信息的给出是
12、( )(分数:2.00)A.程序员B.项目管理者C.软件分析设计人员D.软件用户 解析:13.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。(分数:2.00)A.public B.protectedC.privateD.static解析:14.C+中把数据之间的传输操作称为( )(分数:2.00)A.源B.汇C.流 D.文件解析:15.下列程序的运行结果是( )。 #include iostreamh void fun (int *a,int*b) int*k k=a;a=b;b=k void main() int a=2004, b=9,*x=
13、; class DERIVED; public BASE char c; public: DERIVED (char n): BASE (n+1),c(n) DERIVED() coutc;) ;int main() DERIVED(X); return 0; 执行上面的程序将输出( )。(分数:2.00)A.XY B.YXC.XD.Y解析:25.以下程序的输出结果是( )。 #includeiostream.h int fun (char*s) char *p=s; while (*p!=/0,) p+: return (p-s): void main() coutfun (“ ABCDEF
14、 “)endl: (分数:2.00)A.3B.6 C.8D.0解析:26.以下程序的执行结果是( )。 #includeiostreamh templateclass T class Sample T n; Public: Sample (T i)n=i;) void operator +(); void disp() cout“n=“nendl; ; templateclass T void SampleT: opetator +() n+=1;不能用 n+,因为 double型不能用+ void main() Samplechars(a); S+; s.disp(); (分数:2.00)A
15、.n=aB.a=OC.n=b D.a=b解析:27.下表正确的是( )。 在父类中的访问属性访问修饰符在子类中的访问属性(分数:2.00)A.publiCprivate 不能直接访问B.protect publiC publicC.private publiC不能直接访问 D.protectprivate protect解析:28.下面关于 ios类的叙述中,正确的是( )。(分数:2.00)A.它是 istream类和 ostream类的虚基类 B.它只是 istream类的虚基类C.它只是 ostream类的虚基类D.它是 ostream类的虚基类解析:29.下列运算符中全都可以被友元函数
16、重载的是( )(分数:2.00)A.=,+,-,/B.,+,(),newC.-,+,*,D.,+,* 解析:30.派生类的构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生类中子对象的初始化C.基类中子对象的初始化 D.派生类中一般数据成员的初始化解析:31.设置虚基类的目的是( )。(分数:2.00)A.简化程序B.消除二义性 C.提高运行效率D.减少目标代码解析:32.不属于 ios直接派生的类为( )。(分数:2.00)A.输入流类(istreaB.输出流类(ostreaC.文件流基类(fstreambasD.格式控制类(iomani 解析:33.(
17、 )是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。(分数:2.00)A.虚析构函数B.构造函数C.纯虚函数 D.静态成员函数解析:34.在 C+语言中,对函数参数默认值描述正确的是( )。(分数:2.00)A.函数参数的默认值只能设定一个B.一个函数的参数若有多个,则参数默认值的设定可以不连续C.函数参数必须设定默认值D.在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值 解析:35.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( )。(分数:2.00)A.参数个数B.参数的类型C.函数名称D
18、.函数的类型 解析:二、B填空题/B(总题数:15,分数:30.00)36.C+定义了类库实现数据的输入和输出, 1 为根基类。(分数:2.00)填空项 1:_ (正确答案:ios)解析:37.内联函数是通过 1 来实现的,因此内联函数是真正的函数。(分数:2.00)填空项 1:_ (正确答案:编译器)解析:38.以下程序的执行结果是_ #includeiostrearn.h int f(int b,int n) int i,r=l; for(i=0;in;i+) r=r*bi; return r; void main() int x,a= 2,3,4,5,6,7,8,9; x=f(a,3):
19、 coutxendl; (分数:2.00)填空项 1:_ (正确答案:120)解析:39.下面程序的运行结果是_。 #includeiostreamh void fun(int &a,int b=3) static int i=2; a=a+b+i; i=i+a; void main() int x=5,y=2; fun(x,y); coutx“,“; fun(x); coutxendl; (分数:2.00)填空项 1:_ (正确答案:9,23)解析:40.以下程序的执行结果是_. #include填空项 1:_ (正确答案:B fun1)解析:A fun2 A fun3 A fun441.通
20、常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 1(分数:2.00)填空项 1:_ (正确答案:软件生命周期)解析:42.下面程序的输出结果为_ #includeiostream.h void main() cout“Hello/b“; (分数:2.00)填空项 1:_ (正确答案:Hello)解析:43.含有纯虚函数的类称为 1。(分数:2.00)填空项 1:_ (正确答案:抽象类)解析:44.类 istream的成员函数 1 从指定流中读取一个字符,成员函数 2 和 3 从指定流中读取多个字符。(分数:2.00)填空项 1:_ (正确答案:get)填空项 1:_ (正确答案:
21、getline)填空项 1:_ (正确答案:read)解析:45.以下程序的执行结果是_ #includeiostream.h void func(int); void main() int k=4 func(k) ; func(k) : coutend1; void func(int a) static int m=0; m+=a; coutm“ “; (分数:2.00)填空项 1:_ (正确答案:48)解析:46.C+语言提供的基本控制结构可以分为 3种类型:顺序结构、 1 和循环结构。(分数:2.00)填空项 1:_ (正确答案:选择结构)解析:47.符号常量可以用宏定义 define和
22、 1 来表示。(分数:2.00)填空项 1:_ (正确答案:const)解析:48.当执行 cin语句时,从键盘上输入每个数据后必须输入一个 1,然后才可以接着输入下一个数据。(分数:2.00)填空项 1:_ (正确答案:空白符)解析:49.以下程序的执行结果是_。 #includeiostream.h class CSample private: int n; static int k: public: CSample (int i) n=i;k+; voiddisp(); ; void CSample:disp() cout “n=“n“,k=“kendl int CSample:k=0 void main() CSample a(10),b(20),c(30); adisp(); b.disp(); cdisp(); (分数:2.00)填空项 1:_ (正确答案:n=10,k=3)解析:n-20,k=3 n=30,k=350.C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 1 方式。(分数:2.00)填空项 1:_ (正确答案:传地址)解析: