C++面向对象程序设计模拟试题四
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列关于C++函数的说明中,正确的是( D )。C 第一题就错
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的最后一条语句必须是return语句
C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型
D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
2.假定MyCIass为一个类,那么下列的函数说明中,( C )为该类的无参构造函数。
A)void MyClass(); B)~MyClass(int n);
C)MyClass( ); D)~MyClass( );
3.下列叙述中,错误的是( C )。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
4.当一个类的某个函数被说明为virtual时,与这个函数的原型相同的函数在该类及其所有派生类中( A )。
A)都是虚函数B)只有被重新说明为vittual时才是虚函数
C)都不是虚函数D)上面都不正确
5.派生类的构造函数的成员初始化表中,不能包含( C )。什么叫子对象啊。。。
A)基类的构造函数B)派生类中子对象的初始化
C)基类中子对象的初始化D)派生类中一般数据成员的初始化
6.下列是重载加法运算符的函数原型声明,其中错误的是( A )。
A)MyClass operator+(double,double);
B)MyClass operator+(double,MyClass);
C)MyClass operator+(MyClass,double);
D)MyClass operator+(MyClass,MyClass);
7.派生类中的成员不能直接访问基类中的(B)成员。
A)public B)private C)virtual D)protected 8.实现运行时的多态性要使用( D )。
A)重载函数B)析构函数C)构造函数D)虚函数
9.如果在类MyClass外面的非成员函数中使用了函数调用MyClass::f();则函数f()是类MyClass的(A)。友元函数貌似可以吧
A)静态成员函数B)非静态成员函数
C)友元函数D)前面都不正确
10.由于常对象不能被更新,因此C++标准中规定(A)。尼玛我不知道A)通过常对象只能调用它的常成员函数
B)通过常对象只能调用静态成员函数
C)常对象的成员都是常成员
D)通过常对象可以调用任何不改变对象值的成员函数
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用___________的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。2.声明类模板应使用关键字()。
3.重载的关系运算符和逻辑运算符的返回类型应当是()。
4.在面向对象方法中,类的实例称为()。
5.在类的对象被释放时,()函数会被自动调用。
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include
using namespace std;
class A
{
public:
virtual void Show() const
{ cout << "Class A" << endl; }
};
class B: public A
{
public:
void Show() const
{ cout << "Class B" << endl; }
};
void Show(const A &obj) { obj.Show(); }
int main()
{
A a;
B b;
Show(a); Show(b);
A *p;
p = &a; p->Show();
p = &b; p->Show();
B *q;
q = &b; q->Show();
return 0;
}
上面程序的输出结果为:
2.阅读下面程序,写出输出结果。
#include
using namespace std;
template
void Show(ElemType a[], int n)
{
for (int i = 0; i < n; i++)
{ cout << a[i] << " "; }
}
int main()
{
int a[] = {1, 6, 9};
Show(a, sizeof(a) / sizeof(int));
Show(a, 2);
cout << endl;
return 0;
}
上面程序的输出结果为:
3.阅读下面程序,写出输出结果。
#include
using namespace std;
class MyClass
{
public:
MyClass(){ count++; }
~MyClass(){ count--; }
static int GetCount(){ return count; }
private:
static int count;
};
int MyClass::count = 0;
int main()
{
MyClass obj1;
cout << MyClass::GetCount() << endl;
MyClass obj2;
cout << MyClass::GetCount() << endl;
MyClass obj3;
cout << obj1.GetCount() << endl;
MyClass *p = new MyClass;
cout << MyClass::GetCount() << endl;
delete p;
cout << MyClass::GetCount() << endl;
return 0;
}
上面程序的输出结果为:
4.阅读下面程序,写出输出结果。
#include
using namespace std;
class A
{
public:
A() { cout << "A()" << endl; }
~A() { cout << "~A()" << endl; }
virtual void f() const { cout << "A::f()" << endl; } };
class B: public A
{
public:
B() { cout << "B()" << endl; }
~B() { cout << "~B()" << endl; }
void f() const { cout << "B::f()" << endl; }
};
int main()
{
B obj;
A *p = &obj;
p->f();
return 0;
}
上面程序的输出结果为:
5. 阅读下面程序,写出输出结果。
#include
using namespace std;
class Sample
{
int i;
public:
Sample();
void Display( );
~Sample();
};
Sample::Sample()
{
cout << "constructor" << ",";
i=0;
}
void Sample::Display() { cout << "i=" << i << ","; } Sample::~Sample() { cout << "destructor" << endl; }
int main()
{
Sample a;
a.Display();
return 0;
}
上面程序的输出结果为:
6.阅读下面程序,写出输出结果。
#include
using namespace std;
class A
{
int a, b;
public:
A(): a(0), b(0) { cout << a << ' ' << b << endl; }
A(int aa, int bb): a(aa), b(bb) { cout << a << ' ' << b << endl; }
};
int main()
{
A x, y(2,3);
return 0;
}
上面程序的输出结果为:
四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。
1.请完成下面的程序
#include
using namespace std;
class Test
{
private:
int a;
public:
Test(int x = 0): a(x) {} // 将a初始化为x
void Show() const { cout << "a:" << a << endl; }
};
int main()
{
Test obj(168);
obj.Show();
return 0;
}
2.请完成下面的程序
#include
using namespace std;
class Integer
{
private:
int a;
public:
Integer(int x = 0){ a = x; }
operator int () { return a; } // 类型转换函数(将类类型转换为整型)
};
int main()
{
Integer a = 6;
cout << a << endl;
return 0;
}
3.请完成下面的程序
#include
using namespace std;
class Complex
{
private:
double realPart;
double imagePart;
public:
Complex(double real = 0, double image = 0): realPart(real), imagePart(image){ }
double GetRealPart() const{ return realPart; }
double GetImagePart() const{ return imagePart; }
Complex operator+(const Complex &a) const
{
return Complex( realpart+a.realpart,imagepart+a.imagepart ); // 返回和}
};
int main()
{
Complex a(1, 2), b(2, 6), c;
c = a + b;
cout << "a=" << a.GetRealPart() << "+" << a.GetImagePart() << "i" << endl;
cout << "b=" << b.GetRealPart() << "+" << b.GetImagePart() << "i" << endl;
cout << "c=" << c.GetRealPart() << "+" << c.GetImagePart() << "i" << endl;
return 0;
}
4.将如下程序补充完整。
#include
using namespace std;
class Test
{
private:
static int count;
public:
Test(){ count++; }
static void Show(){ cout << "共有" << count << "个对象!" << endl; }
};
int Test::count= 0; // 为静态数据成员赋初值
int main()
{
Test obj1, obj2, obj3;
Test::Show();
return 0;
}
五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)
1.试使用函数模板实现求一个数组各元素的最小值,要求编写测试程序。
函数模板声明如下:
template
Type Min(Type a[], int n) // 求数组a各元素的最小值
2.编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square (正方形),用函数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。
C++面向对象程序设计模拟试题四参考答巡查
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.C)2.C)3.C)4.A)5.C)
6.A)7.B)8.D)9.A)10.A)
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
1.参考答案:基类
2.参考答案:template
3.参考答案:bool或布尔型
4.参考答案:对象
5.参考答案:析构函数
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.参考答案:
Class A
Class B
Class A
Class B
Class B
2.参考答案:
1 6 9 1 6
3.参考答案:
1
2
3
4
3
4.参考答案:
A()
B()
B::f()
~B()
~A()
5.参考答案:
constructor,i=0,destructor
6.参考答案:
0 0
2 3
四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。
1.参考答案:[1]a(x)
2.参考答案:[2]operator int
3.参考答案:[3] realPart + a.realPart, imagePart + a.imagePart或this->realPart + a.realPart, this->imagePart + a.imagePart
4.参考答案:int Test::count =
五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)
1.参考程序:
#include
using namespace std;
template
Type Min(Type a[], int n)
{
Type m = a[0];
for (int i = 1; i < n; i++)
if (a[i] < m) m = a[i];
return m;
}
int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
cout << Min(a, 9) << endl;
return 0;
}
2.参考程序:
#include
using namespace std;
const double PI = 3.1415926;
class Shape
{
public:
Shape() { }
virtual ~Shape() { }
virtual void ShowArea() const = 0;
static double totalArea;
static void ShowTotalArea() { cout << "总面积:" << totalArea << endl; }
};
class Circle: public Shape
{
private:
double radius;
public:
Circle(double r): radius(r) { totalArea += PI * r * r; }
~Circle() { }
virtual void ShowArea() const { cout << "圆面积:" << PI * radius * radius << endl; }; };
class Rectangle: public Shape
{
private:
double length;
double width;
public:
Rectangle(double l, double w): length(l), width(w){ totalArea += l * w; }
~Rectangle() { }
virtual void ShowArea() const { cout << "矩形面积:" << length * width << endl; }; };
class Square: public Shape
{
private:
double length;
public:
Square(double l): length(l){ totalArea += l * l; }
~Square() { }
virtual void ShowArea() const { cout << "正方形面积:" << length * length << endl; }; };
double Shape::totalArea = 0;
int main()
{
Circle c(1);
c.ShowArea();
Rectangle r(1, 2);
r.ShowArea();
Square z(3);
z.ShowArea();
Shape::ShowTotalArea();
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
《面向对象程序设计》答案