学一学期C期末复习题网上的.docx
- 文档编号:9587286
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:20
- 大小:29.02KB
学一学期C期末复习题网上的.docx
《学一学期C期末复习题网上的.docx》由会员分享,可在线阅读,更多相关《学一学期C期末复习题网上的.docx(20页珍藏版)》请在冰豆网上搜索。
学一学期C期末复习题网上的
1.下列语句中错误的是(D)
A.int*p=newint(10)。
B.int*p=newint[10]。
C. int*p=newint。
D.int*p=newint[40](0)
2.假设已经有定义char*constname=”chen”。
下面的语句中正确的是(A)
A.name[3]=’q’。
B.name=”lin”。
C.name=newchar[5] D.name=newchar(‘q’)。
3.下面的类型声明中正确的是(D)
A.int&a[4] B.int&*p。
C.int&&q。
D.intI,*p=&I。
4.在声明类时,下面的说法正确的是(C)
A.可以在类的声明中给数据成员赋值 B.数据成员的数据类型可以是register
C.private、public、protected可以按任意顺序出现 D.没有用private、public、protected定义的数据成员是公有成员
5.构造函数是在(B)时被执行的。
A.程序编译 B.创建对象 C.创建类 D.程序装入内存
6.在下面有关友元函数的描述中,正确的说法是(A)
A.友元函数是独立于当前类的外部函数 B.一个友元函数不能同时定义为两个类的有友元函数
C.友元函数必须在类的外部定义 D.在外部定义友元函数时,必须加关键字friend
7.使用派生类的主要作用是(A)
A.提高代码的可重用性 B.提高程序的运行效率 C.加强类的封装性 D.实现数据的隐藏
8.关于虚函数,正确的描述是(A)
A.构造函数不能是虚函数B.析构函数不能是虚函数C.虚函数可以是友元函数D.虚函数可以是静态成员函数
9.如果在基类中将成员函数show声明为不带返回值得纯虚函数,正确的写法是(C)
A.virtualshow()=0。
B.virtualvoidshow() C.virtualvoidshow()=0。
D.voidshow()=0virtual。
10.使用myFile.open(“sales.dat”,ios:
:
app)语句打开文件sales.dat后,则(A)
A.该文件只能用于输出 B.该文件只能用于输入 C.该文件既能用于输出,又能用于输入 D.若该文件存在,则清除该文件的内容
二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)
1.#include"iostream.h"
classstudent
{
charname[10]。
intage。
floataver。
voidprintStu(){}
}。
voidmain()
{
studentp1,p2,p3。
p1.age=16。
//…
}
2.#include"iostream.h"
classstack
{
public:
stack(intsz)。
private:
char*p。
intsize。
}。
stack:
:
stack(intsz)
{
p=newchar[size=sz]。
}
voidmain()
{
stackstt。
//...
}
3.#include"iostream.h"
classCTest
{
public:
constinty2。
CTest(inti1,inti2):
y1(i1),y2(i2)
{
y1=10。
x=y1。
}
intreadme()const。
//...
private:
intx。
constinty1。
}。
intCTest:
:
readme()const
{
inti。
i=x。
x++。
returnx。
}
voidmain()
{
CTestc(2,8)。
inti=c.y2。
i=c.y1。
}
三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)
1.#include"iostream.h"
classtoy
{
public:
toy(intq,intp)
{quan=q。
price=p。
}
intget_quan()
{returnquan。
}
intget_price()
{returnprice。
}
private:
intquan,price。
}。
intmain()
{
toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)}。
inti。
for(i=0。
i<2。
i++)
{
cout< cout< cout< cout< } cout<<"\n"。 return0。 } 2.#include"iostream.h" classStock { public: voidprint() {cout<<"Stockclass.\n"。 } }。 classDer1_Stock: publicStock { public: voidprint() {cout<<"Deri1_Stockclass.\n"。 } }。 classDer2_Stock: publicStock { public: voidprint() {cout<<"Deri2_Stockclass.\n"。 } }。 voidmain() { Stocks1。 Stock*ptr。 Der1_Stockd1。 Der2_Stockd2。 ptr=&s1。 ptr->print()。 ptr=&d1。 ptr->print()。 ptr=&d2。 ptr->print()。 } 3.#include"iostream.h" classA { public: A(inti): xi(i){} A(){xi=0。 } friendAoperator++(Aa)。 friendAoperator--(A&a)。 voidprint()。 private: intxi。 }。 Aoperator++(Aa) { ++a.xi。 returna。 } Aoperator--(A&a) { --a.xi。 returna。 } voidA: : print() {cout< } voidmain() { Ai(7)。 ++i。 i.print()。 --i。 i.print()。 } 二 1.答案: p1.age=16。 有错(3分),因为age是私有数据成员,不能直接访问(3分) 2.答案: stackstt。 有错,(3分)类中没有定义无参构造函数(3分) 3.答案: 错误1: y1=10。 有错(2分),y1是常成员,不能修改(1分) 错误2: x++。 有错(2分),readme函数是常成员函数,不能修改对象的数据成员(1分) 错误3: i=c.y1。 有错(1分),y1是私有变量,不能直接存取(1分) 三 1.答案: 10,20。 30,48。 50,6870,80 2.答案: Stockclass. Stockclass. Stockclass. 3.答案: 7 6 B卷 一、选择题(每题2分,共20分,答案填写在题后的表格内) 1.假设已经有定义constchar*constname=”chen”。 下面的语句中正确的是(D) A.name[3]=’a’。 B.name=”lin”。 C.name=newchar[5] D.cout< 2.假设已经有定义const char*name=”chen”。 下面的语句中错误的是(A) A.name[3]=’q’。 B.name=”lin”。 C.name=newchar[5] D.name=newchar(‘q’)。 3.在下面有关对构造函数的描述中,正确的是(B) A.构造函数可以带有返回值 B.构造函数的名字与类名完全相同 C.构造函数必须带有参数 D.构造函数必须定义,不能缺省 4.在下面有关析构函数特征的描述中,正确的是(C) A.一个类可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型 D.析构函数可以有一个或多个参数 5.在下面有关静态成员函数的描述中,正确的是(B) A.在静态成员函数中可以使用this指针 B.在建立对象前,就可以为静态数据成员赋值 C.静态成员函数在类外定义时,要用static前缀 D.静态成员函数只能在类外定义 6.友元的作用之一是(A) A.提高程序的运行效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类 7.假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是(C) A.classderived: : studentprivate B.classderived: studentpublic C.classderived: privatestudent{//… } D.classderived: : publicstudent{//… } 8.要实现动态联编,派生类中的虚函数(D) A.返回的类型可以与虚函数的原型不同B.参数个数可以与虚函数的原型不同C.参数类型可以与虚函数的原型不同D.以上都不对 9.有关运算符重载正确的描述是(D) A.C++语言允许在重载运算符时改变运算符的操作个数 B.C++语言允许在重载运算符时改变运算符的优先级 C.C++语言允许在重载运算符时改变运算符的结合性 D.C++语言允许在重载运算符时改变运算符的原来的功能 10.假设定义了函数模板: template Tmax(Tx,Ty) {return(x>y)? x: y。 } 并定义了inti=6。 charc=’a’。 错误的调用语句是(D) A.max(i,i) B.max(c,c) C.max((int)c,i) D.max(i,c) 二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分) 1.#include"iostream.h" classpoint {public: intx,y。 private: point(){x=1。 y=2。 }}。 voidmain() {pointcpoint。 cpoint.x=2。 } 2.#include"iostream.h" template classStack {public: Stack(intsz) {v=p=newT[size=sz]。 } ~Stack() {delete[]v。 } voidpush(Tx) {*p++=x。 } Tpop() {return*--p。 } intlenth()const {return(p-v)。 } private: T*v,*p。 intsize。 }。 voidmain() {Stack obj(5)。 obj.push(10)。 } 3.#include"iostream.h" classstudent {intsno。 intage。 voidprintStu()。 voidsetSno(intd)。 }。 voidprintStu() {cout<<”\nStudentNo.is“< cout<<”ageis”< } voidsetSno(intd) {sno=d。 } voidsetAge(inta) {age=a。 } voidmain() {studentlin。 lin.setSno(20021)。 lin.setAge(20)。 lin.printStu()。 } 三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分) 1.#include"iostream.h" classb1 {public: b1(intii) {i=ii。 } voiddisplay() {cout< } protected: inti。 }。 classb2 {public: b2(intjj) {j=jj。 } voiddisplay() {cout< } protected: intj。 }。 classb3: publicb1,publicb2 {public: b3(intii,intjj,intkk): b1(ii),b2(jj) {k=kk。 } voidsetall(intii,intjj,intkk) {i=ii。 j=jj。 k=kk。 } voiddisplay() {cout< cout< cout< } private: intk。 }。 voidmain() {b1o1(40)。 o1.display()。 b2o2(50)。 o2.display()。 b3o3(10,20,30)。 o3.display()。 o3.setall(50,60,70)。 o3.display()。 } 2.#include"iostream.h" classStock {public: virtualvoidprint() {cout<<"Stockclass.\n"。 }}。 classDer1_Stock: publicStock {public: voidprint() {cout<<"Deri1_Stockclass.\n"。 }}。 classDer2_Stock: publicStock {public: voidprint() {cout<<"Deri2_Stockclass.\n"。 }}。 voidmain() {Stocks1。 Stock*ptr。 Der1_Stockd1。 Der2_Stockd2。 ptr=&s1。 ptr->print()。 ptr=&d1。 ptr->print()。 ptr=&d2。 ptr->print()。 } 3.#include constintsize=10。 template classstack {public: voidinit(){tos=0。 } voidpush(Typech)。 //参数取Type类型 Typepop()。 //返回类型取Type类型 private: Typestck[size]。 //数组的类型为类型参数Type,即可取任意类型 inttos。 }。 template voidstack : push(Typeob) {if(tos==size){cout<<"stackisfull"。 return。 } stck[tos]=ob。 tos++。 } template Typestack : pop() {if(tos==0) {cout<<"stackisempty"。 return0。 } tos--。 returnstck[tos]。 } intmain() { //定义字符堆栈 stack //创建两个模板参数为char型的对象 inti。 s1.init()。 s2.init()。 s1.push('a')。 s2.push('x')。 s1.push('b')。 s2.push('y')。 s1.push('c')。 s2.push('z')。 for(i=0。 i<3。 i++)cout<<"pops1: "< for(i=0。 i<3。 i++)cout<<"pops2: "< return0。 } 二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分) 1.答案: pointcpoint。 是错误的(3分),因为构造函数是私有成员(3分) 2.答案: Stack obj(5)。 有错(3分),因为Stack是类模板,应将模板实例化,才可定义对象(3分) 3.答案: 错误1: printStu、setSno两个成员函数不是公有成员,不允许在类外访问(4分) 错误2: 成员函数在类外定义,应加上类名“student: : ”(2分) 错误3: setAge函数应在类中说明(2分) 三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分) 1.答案: 40 50 10 20 30 506070 2.答案: Stockclass. Deri1_Stockclass. Deri2_Stockclass. 3.答案: pops1: c pops1: b pops1: a pops2: z pops2: y pops2: x A 卷 一、单项选择题: (每小题2分,共20分) 1、假设已经有定义constchar*name=”chen”。 下列语句中错误的是_____________ A.name[3]=’q’ B.name=”lin” C.name=newchar[5] D.name=newchar(‘q’) 2、在下列关键字中,用于说明类中公有成员的是____________ A.public B.private C.protected D.friend 3、下列哪项不是面向对象程序设计的主要特征_______________。 A.封装 B.继承 D.多态 D.结构 4、构造函数是在__________时被执行的。 A.程序编译 B.创建对象 C.创建类 D.程序装入内存 5、在下面有关析构函数的描述中,正确的是____________ A.一个类中可以定义多个析构函数 B.析构函数的名字和类名完全相同 C.析构函数不能指定返回类型 D.析构函数可以有一个或多个参数 6、使用派生类的主要原因是_______________ A.提高代码的可充用性 B.提高程序的运行效率 C.加强类的封装性 D.实现数据的隐藏 7、下列的各函数中,___________不是类的成员函数. A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 8、关于虚函数,正确的描述是_______________ A.构造函数不能是虚函数 B.析构函数不能是虚函数 C.虚函数可以是友元函数 D.虚函数可以是静态成员函数 9、友元的作用之一是____________ A.提高程序的运用效率 B.加强类的封装性 C.实现数据的隐藏性 D.增加成员函数的种类 10、在下面有关静态成员函数的描述中,正确的是________________ A.在静态成员函数中可以使用this指针 B.在建立对象前,就可以为静态数据成员赋值 C.静态成员函数在类外定义时,要用static前缀 D.静态成员函数只能在类外定义 得 分 评卷人 二、判断题: (每题1分,共10分) ( )1、使用关键字class定义的类中缺省的访问权限是私有(private)的。 ( )2、构造函数和析构函数都不能重载。 ( )3、说明或定义对象时,类名前不需加关键字class。 ( )4、可以在类的构造函数中对静态数据成员进行初始化。 ( )5、protected和private区别在于protected成员可以被派生类访问,而private成员则不能被派生类访问。 ( )6、在C++中,封装是通过类实现的。 ( )7、无论何时编译器都为类构造一个无参数的缺省的构造函数。 ( )8、无论什么方式的继承,基类的私有成员都不能被派生类访问。 ( )9、在c++中,只有在类对象定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一学期 期末 复习题 网上