1、【
单选题
】
有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<<C;}
};
class Derived:public Base{
public:
Derived(char C){tout<<C;}
};
int main(){
Derived dl(’B’);
retum 0;
}
执行这个程序的输出结果是( )。
[1分]
答案:
2、【
单选题
】
下列符号中能够作为C++标识符的是( )。
[1分]
、
Coflst
、
2a
、
_shape
、
Count
答案:
3、【
单选题
】
有如下程序:
#include
using namespace std;
class Base
{
private:
void funl()const{tout<<”funl”;}
protected:
void fun2()const{tout<<”fun2”;}
public:
void fun3()const{cout<<”fhll3”;}
};
class Derived:protected Base
{
public:
void fhn4()const{cout<<”filn4”;}
};
int main()
{
Derived obj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
return U:
}
其中有语法错误的语句是( )。
[1分]
答案:
4、【
单选题
】
有如下程序:
#include
using namespace std;
class Instrument{
public:
virtual void Display()=0;
};
class Pian0:public Instrument}
public:
void Display(){/*函数体略*/}
};
intmain(){
Instrument S;
Instrument*P=0:
//…;
return 0;
}
下列叙述中正确的是( )。
[1分]
、
语句“Insturment*P=0;”编译时出错
、
语句“Instnunent s;”编译时出错
、
类Pian0中的Display函数不是虚函数
、
类Instrument是一个虚基类
答案:
5、【
单选题
】
如下函数模板:
templateT square(T x){return x*x;} 其中T是( )。
[1分]
、
函数形参
、
函数实参
、
模板形参
、
模板实参
答案:
6、【
单选题
】
为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
[1分]
、
内联函数
、
重载函数
、
递归函数
、
函数模板
答案:
7、【
单选题
】
有如下程序:
#inClude using namespaCe std; Class Point{
publiC:
statiC int number;
publiC:
Point( )t.number++;} ~Point( ){number--;}
}; , int P0int::number=0;
int main( ){
Point *ptr:
Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’
}
Point C;
Cout<<POINT:::NUMBER<<ENDL;&NBSP;&NBSP;&NBSP; delete[]ptr;
return 0; }
执行这个程序的输出结果是( )。
[1分]
答案:
8、【
单选题
】
有三个关系R、S和T如下
由关系R和s通过运算得到关系T,则所使用的运算为( )。
[1分]
答案:
9、【
单选题
】
下列符号中,正确的c++标识符是( )。
[1分]
、
enum
、
2b
、
f00一9
、
_32
答案:
10、【
单选题
】
下列关于C++预定义流对象的叙述中,正确的是( )。
[1分]
、
Cin是C++预定义的标准输入流对象
、
Cin是C++预定义的标准输入流类
、
Cout是C++预定义的标准输入流对象
、
Cout是C++预定义的标准输入流类
答案:
11、【
单选题
】
下列情况中,不会调用拷贝构造函数的是( )。
[1分]
、
用一个对象去初始化同一类的另一个新对象时
、
将类的一个对象赋值给该类的另一个对象时
、
函数的形参是类的对象,调用函数进行形参和实参结合时
、
函数的返回值是类的对象,函数执行返回调用时
答案:
12、【
单选题
】
下列叙述中正确的是( )。
[1分]
、
线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
、
线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
、
线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
、
线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性
答案:
13、【
单选题
】
类的析构函数的作用是( )。
[1分]
、
一般成员函数的初始化
、
类的初始化
、
对象的初始化
、
删除类创建的对象
答案:
14、【
单选题
】
下列运算符不能重载为友元函数的是( )。
[1分]
、
=()( )->
、
+ - ++ --
、
> < >= <=
、
+= -= *=/=
答案:
15、【
单选题
】
下面关于运算符重载的描述错误的是( )。
[1分]
、
运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
、
不是所有的运算符都可以进行重载
、
运算符函数的调用必须使用关键字operat。
、
在C+十语言中不可通过运算符重载创造出新的运算符
答案:
16、【
单选题
】
当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
[1分]
、
ios::in
、
ios::0ut
、
ios::in I ios::0ut
、
以上都不对
答案:
17、【
单选题
】
由于常对象不能被更新,因此( )。
[1分]
、
通过常对象只能调用它的常成员函数
、
通过常对象只能调用静态成员函数
、
常对象的成员都是常成员
、
通过常对象可以调用任何不改变对象值的成员函数
答案:
18、【
单选题
】
支持子程序调用的数据结构是( )。
[1分]
答案:
19、【
单选题
】
有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。
[1分]
、
obj.fun1();
、
obj.fun2();
、
obj.tim3();
、
ohj.fun4();
答案:
20、【
单选题
】
有如下语句序列:
Char str[10];Cin>>str;
当从键盘输入“I love this game”时,str中的字符串是( )。
[1分]
、
”I love this game”
、
”I love thi”
、
”I love”
、
”I”
答案:
21、【
单选题
】
继承机制的作用是( )。
[1分]
、
信息隐藏
、
数据封装
、
定义新类
、
数据抽象
答案:
22、【
单选题
】
模板对类型的参数化提供了很好的支持,因此( )。
[1分]
、
类模板的主要作用是生成抽象类
、
类模板实例化时,编译器将根据给出的模板实参生成一个类
、
在类模板中的数据成员都具有同样类型
、
类模板中的成员函数都没有返回值
答案:
23、【
单选题
】
if语句的语法格式可描述为:
格式l:if(<条件>)<语句>
或
格式2:if(<条件>)<语句l>
else<语句2>
关于上面的语法格式,下列表述中错误的是( )。
[1分]
、
<条件>部分可以是一个if语句,例如if(if(a==0)…)…
、
<语句>部分可以是一个if语句,例如if(…)if(…)…
、
如果在<条件>前加上逻辑非运算符!并交换<语句l>和<语句2>的位置,语句功能不变
、
<语句>部分可以是一个循环语句,例如if(…)while(…)…
答案:
24、【
单选题
】
下面的程序中,错误的语句是( )。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P<
⑦delete[]p;
⑧}
[1分]
答案:
25、【
单选题
】
下面有关for循环的正确描述是( )。
[1分]
、
for循环只能用于循环次数已经确定的情况
、
for循环是先执行循环体语句,后判断表达式
、
在for循环中,不能用break语句跳出循环体
、
在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:
26、【
单选题
】
下列叙述中正确的是( )。
[1分]
、
算法就是程序
、
设计算法时只需要考虑数据结构的设计
、
设计算法时只需要考虑结果的可靠性
、
以上三种说法都不对
答案:
27、【
单选题
】
由于常对象不能被更新,因此( )。
[1分]
、
通过常对象只能调用它的常成员函数
、
通过常对象只能调用静态成员函数
、
常对象的成员都是常成员
、
通过常对象可以调用任何不改变对象值的成员函数
答案:
28、【
单选题
】
有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C.{cout<<C;}
~MyClass(){cout<<’B’;}
};
int main(){
MyClass pl,+p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
执行这个程序的输出结果是( )。
[1分]
、
ABX
、
ABXB
、
AXB
、
AXBB
答案:
29、【
单选题
】
有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout<<A.GET()’<
return U:
}
执行这个程序的输出结果是( )。
[1分]
答案:
30、【
单选题
】
执行下列语句段后,输出字符“*”的个数是( )。
for(int i=50;i>1;--i) Cout<<'*':
[1分]
答案:
31、【
单选题
】
有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( )。
[1分]
答案:
32、【
单选题
】
软件测试的目的是( )。
[1分]
、
评估软件可靠性
、
发现并改正程序中的错误
、
改正程序中的错误
、
发现程序中的错误
答案:
33、【
单选题
】
软件设计中划分模块的一个准则是( )。
[1分]
、
低内聚低耦合
、
高内聚低耦合
、
低内聚高耦合
、
高内聚高耦合
答案:
34、【
单选题
】
下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
[1分]
答案:
35、【
单选题
】
有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
Base(int x=0){Cout<<X;}&NBSP;&NBSP;&NBSP;
Class Derived:publiC Base{ publiC:
Derived(int X=0){Cout<<X;}&NBSP;&NBSP;&NBSP;
Base val; };
int main() {
Derived d(1); return 0;
}
执行这个程序的输出结果是( )。
[1分]
答案:
36、【
单选题
】
已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。
[1分]
、
Value operator+(Value v,int i);
、
Value operator+(Value v=value,int i);
、
Value operator+(Value v,inl:i=0):
、
Value operator+(Value v=vallle,int i=0);
答案:
37、【
单选题
】
有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中会产生编译错误的语句是( )。
[1分]
答案:
38、【
单选题
】
有如下程序:
﹟nclude
using namespace std;
int main()
{
int*P;
*P=9:
cout<<”The value at p:”<< *p;
return 0;
}
编译运行程序将出现的情况是( )。
[1分]
、
编译时出现语法错误,不能生成可执行文件
、
运行时一定输出:l'lle value at P:9
、
运行时一定输出:llle value at P:*9
、
运行时有可能出错
答案:
39、【
单选题
】
在软件设计中不使用的工具是( )。
[1分]
、
系统结构图
、
PAD图
、
数据流图(DFD图)
、
程序流程图
答案:
40、【
简答题】
请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含一个源程序文件main.cpp,其中有类Book(“书”)和主函数main的定义。程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:
书名:C++语句程序设计总页数:299
已把“c++语言程序设计”翻到第50页
已把“c++语言程序设计”翻到第51页
已把“c++语言程序设计”翻到第52页
已把“c++语言程序设计”翻到第51页
已把书合上。
当前页:0
注意:只修改每个“//ERROR ***found***”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
class Book{
char*title;
int num—pages;//页数
int cur_page;//当前打开页面的页码,0表示书未打开
public:
//ERROR***********found***********
Book(const char*theTitle,int pages)num_pages(pages)
{
title=new char[strlen(theTitle)+1];
strepy(title,theTitle);
cout<<ENDL<<”书名:”<<TITLE
<<”总页数:”<
}
~Book(){delete[]title;}
bool isClosed()const{return cur_page==0;} //书合上时返回true,否则返回false
bool isOpen()const{return!isClosed();}//书打开时返回true,否则返回false
int numOfPages()const{return num_pages;}//返回书的页数
int currentPage()const{return cur_page;}//返回打开页面的页码
//ERROR***********found***********
void openAtPage(int page_no)const{ //把书翻到指定页
cout<
i“page_nohum_pages){
tOUt<<”无法翻到第”<
ClOSe();
}
else{
cur_page=page_n0;
tout<<”已把“"<<TIDE<<"”翻到第"<
}
}
void openAtPrevPage(){openAtPage(cur page—1);{//把书翻到上一页
void openAtNextPage(){openAtPage(cur_page+1);}//把书翻到下一页
void close(){//把书合上
tout<
if(isClosed())
tout<<"书是合上的。";
else{
//ERROR**********found**********
num_pages=0;
cout<<”已把书合上。”;
}
cOut<
}
};
int main(){
Book book(”C++语言程序设计”,299);
book.openAtPage(50);
book.openAtNextPage();
book.openAtNextPage();
book.openA.tPrevPage();
book.close();
tout<<”当前页:”<<BOOK.CURRENTPAGE()<
return 0:
}
[18分]
解析:
(1)Book(Const ChAr*thETiFlE,int pAGEs):num_pAGEs(pAGEs)
(2)voiD opEnAtPAGE(int pAGE—no) //把书翻到指定页
(3)Cur_pAGE=0;