C++面向对象程序设计模拟试题一
一、单项选择题
1.说明虚函数的关键字是(B )。
A. inline
B. virtual
C. define
D. static
2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为(A )。
A. main
B. MAIN
C. name
D. function
3.cout是某个类的标准对象的引用,该类是(A )。
A. ostream
B. istream
C. stdout
D. stdin
4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的(C )。
A. 私有静态成员函数
B. 公有非静态成员函数
C. 公有静态成员函数
D. 友元函数
5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为(C )。
A. public
B. protected
C. private D.static
6.一个类的所有对象共享的是(D )。
A. 私有数据成员
B. 公有数据成员
C. 保护数据成员
D. 静态数据成员7.动态联编所支持的多态性称为(D )。
A. 虚函数
B. 继承
C. 编译时多态性
D. 运行时多态性8.定义类模板时要使用关键字(D )。
A. const
B. new
C. delete
D. template
9.对虚基类的定义(A )。
A. 不需要使用虚函数
B. 必须使用虚函数
C. 必须使用private
D. 必须使用public
10.类型转换函数(A )。
A. 不能带有参数
B. 只能带一个参数
C. 只能带2个参数
D. 只能带3个参数
二、判断正误题
1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。Y ()2.抽象类可以用来直接创建对象。N ()
3.内联函数中可以出现递归语句。N ()4.模板类与类模板的意义完全相同。N ()5.常对象只能调用常成员函数。Y ()6.重载函数要求函数有相同的函数名,但具有不同的参数序列。Y ()
三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.在用C++进行程序设计时,最好用(new )代替malloc。
2.函数模板中紧随template之后尖括号内的类型参数都要寇以保留字(class\\typename )。3.编译时多态性可以用( 重载)函数实现。4.拷贝构造函数用它所在类的(对象)作为参数。5.用关键字static修饰的类的成员称为( 静态)成员。6.重载运算符“+”的
函数名为(operator+ )。
四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include
using namespace std;
class CArray
{
public:
CArray(int iArray[], int iSize):m_pArray(iArray), m_iSize(iSize)
{
}
int GetSize()
{
return m_iSize;
}
int &operator[](int iIndex)
{
return m_pArray[iIndex - 1];
}
private:
int *m_pArray; // 指向一个数组空间
int m_iSize; // 数组元素个数
};
int main()
{
int s[]={3, 7, 2, 1, 5};
CArray oArray(s, 5);
oArray[1] = 9;
for (int i = 1; i <= 5; i++)
{
cout << oArray[i] << " ";
}
cout << endl;
return 0;
}
上面程序的输出结果为:
1.参考答案:9 7 2 1 5
2.阅读下面程序,写出输出结果。#include
using namespace std;
template
void Print(Type a[], int n)
{
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
}
int main()
{
int a[] = { 5, 6, 8};
double b[] = {6.8, 9.6};
Print(a, sizeof(a) / sizeof(int));
Print(b, 2);
cout << endl;
return 0;
}
上面程序的输出结果为:
2.参考答案:5 6 8 6.8 9.6
3.阅读下面程序,写出输出结果。#include
using namespace std;
class CTest
{
public:
CTest(int iVar):m_iVar(iVar)
{
m_iCount++;
}
~CTest()
{
}
void Print() const;
static int GetCount()
{
return m_iCount;
}
private:
int m_iVar;
static int m_iCount;
};
int CTest::m_iCount = 0;
void CTest::Print() const
{
cout << this->m_iVar << " " << this->m_iCount << " "; }
int main()
{
CTest oTest1(6);
oTest1.Print();
CTest oTest2(8);
oTest2.Print();
cout << CTest::GetCount();
cout << endl;
return 0;
}
上面程序的输出结果为:
3.参考答案:6 1 8 2 2
4.阅读下面程序,写出输出结果。
#include
using namespace std;
class CTest
{
public:
CTest(int iX = 0, int iY = 0, int iZ = 0):m_iZ(iZ)
{
m_iX = iX;
m_iY = iY;
}
void Print()
{
cout << m_iX << endl;
cout << m_iY << endl;
}
void Print() const
{
cout << m_iZ << endl;
}
private:
int m_iX, m_iY;
const int m_iZ;
};
int main()
{
CTest oTest1;
oTest1.Print();
CTest oTest2(1, 6, 8);
oTest2.Print();
const CTest oTest3(6, 0, 18);
oTest3.Print();
cout << endl;
return 0;
}
上面程序的输出结果为:4.参考答案:
1
6
18
五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。
1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include
//3 class CTest //4 { //5 public: //6 CTest(int iVar = 0):m_iArr(iVar) //7
{ //8 cout << "构造函数:" << m_iArr << endl; //9 } //10
//11 void ~CTest() //12 { //13 cout << "析造函数:" << m_iArr << endl; //14 } //15
//16 private: //17 int m_iArr; //18 }; //19
//20
//21
int main() //22 { //23 CTest oTest1, oTest2(8); //24 cout << endl; //25
//26 return 0; //27
} //28 1.参考答案:
出错行:第12行
原因:析造函数不能有返回值类型
改正:去掉void
2.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include
//3 class CTest //4 { //5 public: //6
CTest(int iA = 0, int iB):m_iA(iA), m_iB(iB) //7 { //8 } //9
//10 void Show() //11 { //12 cout << m_iA << "," << m_iB << endl; //13 } //14
//15 private: //16 int m_iA, m_iB; //17 }; //18
//19
//20 int main() //21 { //22 CTest oTest(12, 16); //23 oTest.Show(); //24 cout << endl; //25
//26 return 0; //27 } //28 2.参考答案:
出错行:第7行
原因:带缺省值的参数应放在参数表的尾部,其后不允许出现不带缺省值的参数
改正:
CTest(int iA = 0, int iB = 0):m_iA(iA), m_iB(iB) //7
或
CTest(int iA , int iB = 0):m_iA(iA), m_iB(iB) //7
或
CTest(int iA , int iB):m_iA(iA), m_iB(iB) //7 3.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include
//3 class CTest //4 { //5 public: //6 CTest(int iVar = 0) //7 { //8 m_iVar = iVar //9 } //10
//11 void Print() const //12
{ //13 cout << m_iVar<< endl; //14 } //15
//16 private: //17 const int m_iVar; //18 }; //19
//20
//21 int main() //22 { //23 const CTest oTest(16); //24 oTest.Print(); //25 cout << endl; //26
//27 return 0; //28 } //29 3.参考答案:
出错行:第9行
原因:常数据成员只能通过初始化表方式进行初始化。
改正:去掉第9行,在第7行后加初始化表,即第9行改为:
CTest(int iVar = 0):m_iVar(iVar)
4.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。
#include
//3 class CBase //4 { //5 public: //6 CBase(int iBase = 0):m_iBase(iBase) //7 { //8 } //10
//11 virtual void Show() = 0; //12
//13 int Get() const //14 { //15 return m_iBase; //16 } //17
//18 private: //19 int m_iBase; //20 }; //21
//22
class CDerive:public CBase //23 { //24 public: //25 CDerive(int iBase = 0, int iDerive = 0):CBase(iBase) //26 { //27 m_iDerive = iDerive; //28 } //29
//30 void Show() //31 { //32 cout << CBase::Get() << "," << m_iDerive << endl; //33 } //34
//35 private: //36 int m_iDerive; //37 }; //38
//39 int main() //40 { //41 CBase obj(10); //42 obj.Show(); //43 return 0; //44 } //45 4.参考答案:
出错行:第42行
原因:抽象类不能用来直接创建对象。
改正:将第42行改为:
CDerive obj(10); //42 六、编程题(本大题共2个小题,每小题8分,共16分)
1.编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。
函数模板声明如下:
template
Type Abs(Type tVar)
参考程序:
#include
using namespace std;
template
Type Abs(Type tVar)
{
if (tVar >= 0) return tVar;
else return -tVar;
}
int main()
{
cout << Abs(5) << endl;
cout << Abs(-5) << endl;
cout << Abs(2.5) << endl;
cout << Abs(-2.5) << endl;
return 0;
}
2.定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显示复数值的函数Show(),重载“+”运算符(用成员函数实现),并编写测试程序进行测试。
参考程序:
#include
using namespace std;
class CComplex
{
public:
CComplex(double dReal, double dImage = 0)
{
m_dReal = dReal;
m_dImage = dImage;
}
void Show()
{
cout << m_dReal;
if (m_dImage > 0)
{
cout << "+" << m_dImage << "i" << endl;
}
else if(m_dImage < 0)
{
cout << "-" << -m_dImage << "i" << endl;
}
}
CComplex operator+(const CComplex &obj)
{
CComplex objTemp(m_dReal + obj.m_dReal, m_dImage + obj.m_dImage);
return objTemp;
}
private:
double m_dReal, m_dImage;
};
int main()
{
CComplex obj1(2, 6), obj2(3, 8), obj3(0);
obj1.Show();
obj2.Show();
obj3.Show();
obj3 = obj1 + obj2;
obj3.Show();
return 0;
}
《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型
一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”< (A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的 财经法规全真模拟试题3(含答案及详细解析) 第 1题:单选题(本题1分) 下列关于商业汇票提示付款的表述中,正确的是( ) A.定日付款的汇票自到期日起10日内向承兑人提示付款 B.见票即付的汇票,自出票日起7日内向付款人提示付款 C.出票后定期付款的汇票自到期日起20日内向承兑人提示付款 D.见票后定期付款的汇票自到期日起30日内向承兑人提示付款 【正确答案】:A 【答案解析】: 定日付款、出票后定期付款或者见票后定期付款的汇票,自到期日起10日内向承兑人提示付款。 第 2题:单选题(本题1分) 开户银行根据开户单位( )天的日常零星开支所需要的现金,核定开户单位的库存现金限额。 A.1~3 B.3~5 C.5~7 D.7~9 【正确答案】:B 【答案解析】: 开户银行根据开户单位3~5天的日常零星开支所需要的现金,核定开户单位的库存现金限额。 第 3题:单选题(本题1分) 委托加工的一般应税消费品,没有同类消费品销售价格的,按组成计税价格计算纳税,其组成计税价格等于( ) A.(材料成本+加工费)/(1+消费税税率) B.(材料成本+加工费)/(1-消费税税率) C.(材料成本+加工费)/(1+增值税税率) D.(材料成本+加工费)/(1-增值税税率) 【正确答案】:B 【答案解析】: 委托加工的一般应税消费品,没有同类消费品销售价格的,按组成计税价格计算纳税,其组成计税价格等于(材料成本+加工费)/(1-消费税税率)。 第 4题:单选题(本题1分) 某公司为获得一项工程合同,拟向工程发包方的有关人员支付好处费8万元,公司市场部人员持公司领导的批示到财务部领取该笔款项。财务部经理谢某认为该项支出不符合规定,但考虑到公司主要领导已做了批示,遂同意拨付了该笔款项。下列对于谢某做法的认定中,正确的是( ) A.谢某违反了爱岗敬业的会计职业道德规范的要求 B.谢某违反了参与管理的会计职业道德规范的要求 C.谢某违反了廉洁自律的会计职业道德规范的要求 D.谢某违反了坚持准则的会计职业道德规范的要求 【正确答案】:D 【答案解析】: 坚持准则要求会计人员:熟悉准则、遵循准则、敢于同违法行为作斗争,谢某按照领导的批示做了相关处理明显违反了坚持准则要求。 第 5题:单选题(本题1分) 填写票据和结算凭证时下列中文大写不正确的是( ) A.¥1 508.50,应写成人民币壹仟伍佰零捌元伍角 B.¥225.04,应写成人民币贰佰贰拾伍元零肆分 C.¥206 000.73,应写成人民币贰拾万陆仟元零零零柒角叁分 D.¥3 009.24,应写成人民币叁仟零玖元贰角肆分 【正确答案】:C 【答案解析】: 阿拉伯数字万位或元位是“0”,或者数字中间连续有几个“0”,万位、元位也是“0”,但千位、角位不是“0”时,中文大写金额中可以只写一个“零”字,也可以不写零字。 ¥206 000.73,应写成人民币贰拾万陆仟元零柒角叁分或人民币贰拾万陆仟元柒角叁分。 第 6题:单选题(本题1分) 根据有关规定,会计人员因故离职时应与接替人员办理工作交接手续。下列选项中,表述正确的是( ) A.会计人员调动工作或因故离职,未办清交接手续的,不得调动或离职 B.一般会计人员办理交接手续,由单位负责人负责监交 C.交接工作结束后,接替人员应当另立账册记账,以便分清各自职责 D.交接工作结束后,原会计人员与接替人员双方应在移交清册上签章 【正确答案】:A 【答案解析】: 根据有关规定,会计人员工作调动或者因故离职,必须将本人所经管的会计工作全部移交给接替人员。没有办清交接手续的,不得调动或者离职。交接工作结束后,原会计人员与接替人员以及监交人员都应在移交清册上签章。 1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。 年中考数学全真模拟试题(三) 班级 姓名 得分 一、 填空题(每空2分,共40分) 1、的相反数是 ;-2的倒数是 ; 16的算术平方根是 ;-8的立方根是 。 2、不等式组的解集是 。 3、函数y= 自变量x 的取值范围是 。 4、直线y=3x-2一定过(0,-2)和( ,0)两点。 5、样本5,4,3,2,1的方差是 ;标准差是 ;中位数是 。 6、等腰三角形的一个角为,则底角为 。 7、梯形的高为4厘米,中位线长为5厘米,则梯形的面积为 平方厘米。 8、如图PA 切⊙O 于点A ,PAB=,AOB= ,ACB= 。 9、 如图PA 切⊙O 于A 割线PBC 过圆心,交⊙O 于B 、C ,若PA=6;PB=3,则PC= ;⊙O 的半径为 。 10、如图ABC 中,C=,点D 在BC 上,BD=6,AD=BC ,cos ADC= ,则DC 的长为 。 11、如图同心圆,大⊙O 的弦AB 切小⊙O 于P ,且AB=6,则阴影部分既圆环的面积为 。 12、已知Rt ABC 的两直角边AC 、BC 分别是一元二次方程的两根,则此Rt 的外接圆的面 积为 。 二、 选择题(每题4分,共20分) 13、如果方程有两个同号的实数根,m 的取值范围是 ( ) A 、m <1 B 、0<m ≤1 C 、0≤m <1 D 、m >0 14、徐工集团某机械制造厂制造某种产品,原来每件产品的成本是100元,由于提高生产技术,所以连续两次降低成本,两次降低后的成本是81元。则平均每次降低成本的百分率是 ( ) A .8.5% B. 9% C. 9.5% D. 10% 15、二次函数的图像如图所示,则关于此二次函数的下列四个结论①a<0 ②a>0 ③ 2 1 - ?? ?-+2 80 4<>x x 1 1-x ?30∠?30∠∠ 10题图 9题图 A C D B 8题图 A 11题图 B ?∠?90∠5 3 ?06x 5-x 2 =+?0m x 2x 2 =++c bx ax y 2 ++=财经法规全真模拟试题3(含答案及详细解析)
什么是面向对象程序设计
中考数学全真模拟试题3
《面向对象程序设计》答案