二级C++-236
(总分66, 考试时间90分钟)
选择题
1. 
下列关于纯虚函数与抽象类的描述中,错误的是______。
A 纯虚函数是一种特殊的虚函数,它没有具体的实现
B 抽象类是指具有纯虚函数的类
C 一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
D 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
2. 
如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。
#include<iostream>
using namespace std;
class Base{
int a,b;
public:
Base(int x,int y){a=x;b=y;}
void show(){cout<<a<<","<<b<<endl;}
};
class Derived:public Base{
int c,d;
public:
Derived(int x,int y,int z,int m):Base(x,y){c=z;d=w;}
void show(){cout<<c<<","<<d<<endl;}
};
int main()
{
Base B1(50,50),*pb;
Derived D1(10,20,30,40);
pb=&D1;
pb->show();
return 0;
}
运行时输出的结果是
A 10,20
B 30,40
C 20,30
D 50,50
3. 
有如下程序:
# include<iostream>
using namespace std;
class Point{
int x,y;
public:
Point (int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle {
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),radius(r)
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout<<c.get()<<endl;
return 0;
}
运行时的输出结果是______。
A 5
B 7
C 9
D 12
4. 
若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是______。
A ifstream fin; fin.open("d:\\test.txt",los_base::in);
B fstream fio; fio.open("d:\\test.txt",los_base::out);
C ofstream four; fout.open("d:\\test.txt",ios_base::out);
D ofstream fout; four.open("d:\\test.txt",los_base::app);
5. 
若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是______。
A Data+(Data);
B Data operator+(Data);
C Data+operator(Data);
D opcrator+(Data, Data);
6. 
语句序列“char*p="teacher"; p+=2; cout<<p+2<<"\t"<<*(p+2);”的输出结果是______。
A acher a
B cher c
C her h
D h her
7. 
有如下程序:
#include<iostream>
using namespace std;
class Base{
public:
Base(){cout<<"B";}
~Base(){cout<<"b";}
};
class Derived:public Base{
public:
Derived(){cout<<"D";}
~Derived(){cout<<"d";}
};
int main(){
Derived obj;
return 0;
}
运行这个程序的输出是______。
A BDbd
B BDdb
C DBbd
D DBdb
8. 
有如下程序:
#include<iostream>
using namespace std;
class Base {
int x;
public:
Base(int n=0): x(n) {cout<<n;}
int getX()const {return x;}
};
class Derived: public Base {
int y;
public:
Derived(int m, int n): y(m), Base(n) {cout<<m;}
Derived(int m): y(m) {cout<<m;}
};
int main()
{
Derived d1(3), d2(5, 7);
return 0;
}
执行这个程序的输出结果是______。
A 375
B 357
C 0375
D 0357
9. 
计算斐波那契数列第n项的函数定义如下:
int fib(int n){
if (n==0)return 1;
else if(n==1) return 2;
else return fib(n=1)+fib(n=2);
}
若执行函数调用表达式fib(2),函数fib被调用的次数是 ____
A 1
B 2
C 3
D 4
10. 
有如下程序:
#include <iostream>
using namespace std;
class BASE{
public:
~BASE(){cout<<"BASE";}
};
class DERIVED: public BASE{
public:
~DERIVED(){ cout<<"DERIVED"; }
int main() { DERIVED x; return 0; }
执行后的输出结果是 ____
A BASE
B DERIVED
C BASEDERIVED
D DERIVEDBASE
11. 
有如下程序:
#include<iostream>
#include<string>
using namespace std;
class MyString{
public:
char str[80];
MyString(const char*s){strepy(str s);}
MyString&operator+=(MyString a){
streat(str, a.str);
return*this;
}
};
ostream& operator<<(ostream& s, const MyString& z){return<<z.str;}
int main(){
MyString x("abc"), y("cde");
cout<<(x+=y)<<endl;
return 0;
}
运行这个程序的输出结果是______。
A abc
B cde
C abcde
D abccde
12. 
下列关于模板的说法正确的是______。
A 模板的实参在任何时候都可以省略
B 类模板与模板类所指的是同一概念
C 类模板的参数必须是虚拟类型的
D 类模板中的成员函数全部都是模板函数
13. 
下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“<<left”,输出效果将发生变化的是______。
A cout<<left<<setfill("*")<<357;
B cout<<left<<setw(5)<<357;
C cout<<left<<setw(5)<<"ABCDE";
D cout<<left<<"ABCDE";
14. 
以下程序的输出结果是 ____
min()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0)break;
else i--;
}
i+=11;a+=i;
}
cout<<a<<endl;
}
A 21
B 32
C 33
D 11
15. 
下列函数模板的定义中,合法的是______。
A template <typename T> T abs(T x) {return x<0? -x:x;}
B template class <T> T abs(T x) {return x<0? -x:x;}
C template T <class T> abs(T x){return x<0? -x:x;}
D template T abs(T x){return x<0? -x:x;}
16. 
下列关于C++函数的说明中,正确的是______。
A 内联函数就是定义在另一个函数体内部的函数
B 函数体的最后一条语句必须是return语句
C 标准C++要求在调用一个函数之前,必须先声明其原型
D 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
17. 
下列数据结构中,能够按照“先进后出”原则存取数据的是______。
A 循环队列
B .栈
C 队列
D 二叉树
18. 
下列有关构造函数的描述错误的是 ____
A 构造函数在说明类变量时自动执行
B 构造函数可以重载
C 构造函数可以设置默认参数
D 构造函数可以对静态数据成员进行初始化
19. 
下列关于运算符重载的叙述中,错误的是______。
A 有的运算符可以作为非成员函数重载
B 所有的运算符都可以通过重载而被赋予新的含义
C 不得为重载的运算符函数的参数设置默认值
D 有的运算符只能作为成员函数重载
20. 
将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 ____
A 不合法的运算符
B 一元运算符
C 无操作数的运算符
D 二元运算符
21. 
下列关于运算符重载的叙述中,正确的是______。
A 通过运算符重载机制可以为C++语言扩充新的运算符
B 运算符重载的作用是使已有的运算符作用于类的对象
C 重载运算符的操作数类型可以全部为基本类型
D 所有运算符都可以重载
22. 
要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是______。
A fstream
B istream
C cstdlib
D iomanip
23. 
下面程序的输出结果是 ____
#include<iostream>
#include<string>
using namespace std;
void main(){
charp1[10],p2[10];
strcpy(p1,"abc");
strcpy(p2,"ABC");
charstr[50]="xyz";
strcpy(str+2,strcat(p1,p2));
cout<<str;
}
A xyabcABC
B yzabcABC
C xyzabcABC
D zabcABC
24. 
有如下程序:
#include<iostream>
using namespace std;
class Point {
public:
static int number;
public:
Point() {number++;}
~Point() {number --;}
};
int Point::number=0;
int main() {
Point *ptr;
Point A, B;
{
Point *ptr_point=new Point[3];
ptr=ptr_point;
}
Point C;
cout<<Point::number<<endl;
delete[]ptr;
return 0;
}
执行这个程序的输出结果是______。
A 3
B 4
C 6
D 7
25. 
若要向一个文件的末尾添加数据,则需使用的打开方式是
A ios_base::in
B ios_base::out
C ios_base::app
D ios_base::trunc
26. 
在下列程序的横线处填上适当的内容,使程序执行后的输出结果为ABCD______。
#include<iostream>
using namespace std;
class A
{
public:A(){cout<<"A";}
};
class B:______
{
public:B(){cout<<"B";}
};
classC: virtua1 pubtic A
{
public:C(){cout<<"C";}
};
class D:public B,public D
{
public:D(){cout<<"D";}
};
void main() {D obj;}
A public A
B private A
C protected A
D virtual public A
27. 
有以下程序:
#include<iostream. h>
void fun(int a, int b, int c)
{a=456, b=567, c=678;}
void main()
{
int x=10, y=20, z=30;
fun(x, y, z);
cout<<x<<","<<y<<","<<z<<endl;
}
输出结果是______。
A 30,20,10
B 10,20,30
C 456,567,678
D 678,567,456
28. 
下面关于运算符重载的描述错误的是______。
A 运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B 不是所有的运算符都可以进行重载
C 运算符函数的调用必须使用关键字operator
D 在C++语言中不可通过运算符重载创造出新的运算符
29. 
通常的拷贝初始化构造函数的参数是 ____
A 某个对象名
B 某个对象的成员名
C 某个对象的引用名
D 某个对象的指针名
30. 
在软件开发中,需求分析阶段可以使用的工具是______。
A N-S图
B DFD图
C PAD图
D 程序流程图
31. 
对于switch(c) 中的变量c不能定义为的类型是 ____
A unsigned
B int
C char
D float
32. 
下列关于C++流的描述中,错误的是 ____
A cout>>"A"表达式中输出字符A
B eof函数可以检测是否到达文件尾
C 对磁盘文件进行流操作时,必须包含头文件fstream
D 以ios_base::out模式打开的文件不存在时,将自动建立一个新文件
33. 
数据库管理系统是______。
A 操作系统的一部分
B 系统软件
C 一种编译系统
D 一种通信软件系统
34. 
有下列程序:
#include <stdio.h>
void f(int*p,int*q);
void main()
{ int m=1,n=2,*r=&m;
f(r,&n);printf("%d,%d",m,n);
}
void f(int*p,int*q)
{ p=p+1;*q=*q+1;)
程序运行后的输出结果是______。
A 1,3
B 2,3
C 1,4
D 1,2
35. 
一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是______。
A 12345ABCDE
B EDCBA54321
C ABCDE12345
D 54321EDCBA
36. 
下列关于文件流的描述中,正确的是______。
A 文件流只能完成针对磁盘文件的输入/输出
B 建立一个文件流对象时,必须同时打开一个文件
C 若输入流要打开的文件不存在,将建立一个新文件
D 若输出流要打开的文件不存在,将建立一个新文件
深色:已答题 浅色:未答题