面向对象与程序设计A河南科技大学考试试卷格式(四页式)B卷1

合集下载

面向对象程序设计试卷A答案及评分标准

面向对象程序设计试卷A答案及评分标准

《面向对象程序设计》试卷A答案及评分标准本试卷共10个题,分别按以下标准评分,最后根据整个答题的情况,从程序设计风格的角度给予0-5分的附加分。

1、编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。

(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>main ( ){FILE *fptr;fptr = fopen("a.txt","w");if (fptr==NULL)return 0;char a;a=getchar( );while(a!=EOF ){if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr);a = getchar();}fclose(fptr);return 0;}2、定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口设置该矩形对象的长和宽、计算面积并输出。

(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。

程序结构完整,有不妥之处,酌情扣分。

)#include <stdio.h>#include <iostream.h>class Rectangle{public:int getArea();void setWidth(int w);void setLength(int l);private:int Length;int Width;};int Rectangle::getArea(){return Length*Width;}void Rectangle::setLength(int l){Length=l;}void Rectangle::setWidth(int w){Width=w;}main(){int len,wid;Rectangle r1;cout<<"Input the Rectangle's Information"<<endl;cout<<"Lentgh:"<<endl;cin>>len;cout<<"Width:"<<endl;cin>>wid;r1.setLength(len);r1.setWidth(wid);cout<<"Rectangle's Area:"<<r1.getArea()<<endl;return 0;}3、定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数6、7、8,然后逐一弹栈输出。

面向对象期末试卷 A(答案)

面向对象期末试卷 A(答案)

******************************************班级:******************************学号:************************************姓名:************************************共3页第1页得分 阅卷人************ ****** ****** ****** ****** ****** ****** 班级: ****** ****** ****** ****** ****** 学号: ****** ****** ****** ****** ****** ****** 姓名: ****** ****** ****** ****** ****** ******共3页 第21. (9分)class Point { private: int x, y; public:Point(){x=y=0;} Point(int x0,int y0) {x=x0;y=y0;} int GetX() { return x; } int GetY() { return y; }void Print(){cout<<"Point("<<x<<","<<y<<")"<<endl;} ___(1)___; //友元函数声明 ___(2)___; //友元函数声明};Point operator+(Point& pt,int dd) //加号操作符重载函数,实现Point 类对象与整数加法 { Point temp=pt; temp.x+=dd; temp.y+=dd; return temp;}Point operator+(Point& pt1,Point& pt2) //加号操作符重载函数,实现两个Point 类对象的加法 { Point temp=pt1; temp.x+=pt2.x; ___(3)___; return temp;}答案:(1) friend Point operator+(Point& pt,int dd) ----3分(2) friend Point operator+(Point& pt1,Point& pt2) ----3分 (3) temp.y+=pt2.y ----3分 2.(12分) 已知一个类的定义如下: #include<iostream.h> class AA { private:int a[10]; int n;public:void SetA(int aa[], int nn); //用数组aa 初始化数据成员a ,用nn 初始化数据成员n int MaxA(); //从数组a 中前n 个元素中查找最大值void SortA(); //采用选择排序的方法对数组a 中前n 个元素进行从小到大排序void InsertA();//采用插入排序的方法对数组a 中前n 个元素进行从小到大排序 void PrintA(); //依次输出数组a 中的前n 个元素};该类中InsertA()函数的实现如下,请在标号位置补充适当的内容。

计08面向对象程序设计 考试参考答案(A卷)

计08面向对象程序设计  考试参考答案(A卷)
cout<<B.AuthorName <<endl;
cout<<B.Publish <<endl;
cout<<B.PageNum <<endl;
return Output;
}
int main()
{
Book b1,b2("数据结构","严教授","¸高等教育出版社",200);
cout<<b2;
ofstream f1("BookFile.txt",ios::out);
delete bed.
delete chair.
delete bed.
五、理解问答题(10分)
1.解答:
(1):(评分标准:指出错误得1分,改错2分(程序功能上等价也行))
标记行5错误,因为在类外不能直接访问对象的受保护的成员。改正:
i = d[0].GetC();
i += b.c;
d[0].SetC(i);
1.(评分标准:前两个知识点各2分,后一个知识点4分)
答:类:是指具有相同的属性和操作方法,并遵守相同规则的对象的集合。
对象:是包含现实世界物体特征的抽象实体,每个对象有内部的属性和操作方法。
主要区别:
面向对象的程序设计:它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,对象通过响应消息来实现程序的功能。编程时可以不知道对象的内部实现细节。
Win Begin
Win
OpenWin
But
OpenWin
3.程序3(10分,评分标准:每对一个得1分)
答:程序运行结果为:

C++面向对象程序设计试题(A卷)

C++面向对象程序设计试题(A卷)

《C++面向对象程序设计》试题(A卷) (满分:100分时间:150分钟日期:2005.1.10)一、(共20分,每题2分)单项选择1.已定义了一个类A并有语句A* pa=new A(5); 那么以下说法正确的是:A. 该语句会创建A类的一个对象,并将此对象的地址赋给指针pa; B. 该语句会创建A类的5个对象,且它们的地址是连续的; C. 当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放;D. 类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数;2.定义类A的非静态成员函数A& f(A& one)时,需有语句return exp;则exp不能是:A.类A 中类型为A的静态数据成员 B. f中用语句A a = one; 定义的量a C. oneD. *this3.在一个类中,下列哪些成员可以是多个?A. 无参构造函数 B. 析构函数C. 原型相同的非静态成员函数 D. 静态成员函数4.对类T中的下列成员,若不考虑代码优化,一般来说它们中的哪个执行起来最慢?A. 缺省的无参构造函数 B. 缺省的拷贝构造函数 C. T f( ) { T t; return t; }D. 不能判定A、B、C哪个最慢5.对函数原型为int& min(int& a, int& b);的全局函数,下列语句块哪个是错误的:A. int x=10,y=5; min(x,y)=100; B. int x=10,y=5, z; z=min(x,y+=x); C. int x=10,y=5;min(x,10)=y; D. int x=10,y=5; x=min(x,y);6.关于拷贝构造函数错误的说法有:A. 拷贝构造函数是一种特殊的构造函数,且不能在类中进行函数重载。

B. 若自定义派生类的拷贝构造函数,那么也必须自定义基类的拷贝构造函数。

C. 拷贝构造函数只能有一个参数,且为常量引用或非常量引用。

(完整word版)《面向对象程序设计C 》期末试卷及标准答案(B)

(完整word版)《面向对象程序设计C  》期末试卷及标准答案(B)

《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。

(答题纸在本套试卷的第8页上)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。

A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,( A )是正确的。

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='*');下面函数调用中,不合法的是( C )。

A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是(A )。

A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。

A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了( D )次构造函数。

A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是(B )。

A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是( C )。

计07 面向对象程序设计 考试试卷 A卷

计07 面向对象程序设计 考试试卷 A卷
2.在修改了程序的错误以后,写出程序运行的结果。(2分)
3.如果把运算符”>”重载函数定义为友元函数,请写出该函数的定义(功能与上述程序一样)。(4分)
六、编程题(20分)
定义一个复数类Complex,它的私有数据成员(类型都是float)有real(实数),imag(虚数),公有成员函数有:GetReal(),它返回复数的实数部分;GetImag(),它返回复数的虚数部分;Complexoperator+(Complex &),返回两个复数的加。该复数的构造函数原型为:Complex(float r=1.0, float i=1.0)。
else//24行
cout<<” b1<b2”<<endl;//25行
return 0; //26行
}//27行
1.在5到12行之间有1行存在语法错误,在16到26行之间有1行存在语法错误,请指出错误行的行号并改正(每空1分,共4分)。
(1)错误行的行号为_____和______。
(2)分别改正为______和______。
public:
CStr( char *p,int len=0)
{int i;n=len;
for (i=0;i<n;i++) str[i]=*p++;
}
friend void GetChar(CStr &a);
};
void GetChar(CStr &a)
{
int i;
char ch;
for (i=0;i<a.n;i++)
{cout<<"ST con."<<endl;}

面向对象程序设计试卷及答案

面向对象程序设计试卷及答案.)答案考试试卷A(面向对象程序设计注意事项:请考生按要求在试卷装订线内填写姓名、学号1.和年级专业。

请仔细阅读各种题目的回答要求,在规定的位2.置填写答案。

不要在试卷上乱写乱画,不要在装订线内填写3.无关的内容。

分钟。

100分,考试时间为1204. 满统分得单项选择一.分分,共小题,每小题3(本大题共10 评分) 30分人) B 中每个int类型的变量占用(1. C# 个字节的内存。

)C (( B)4 8 (A)1 )(D 2) A 2. 面向对象的特点是(态装封、继承、多(A)(B)抽象、封装、多态封继承、(C )抽装象、)抽象、多态、重载(D 3. C#控制台程序的主入口点是() C)C Run Page_Load(A)函数(B)函数( Main函数函数)(DForm_Load引用类型存储在()中。

B 4.))(堆内存B 堆栈)(A () C队列D (列表表示一个字符串的变量应使用以下哪在5. C#中,)B 条语句定义(.(A)CString str (B)string str(C)Dim str as string (D)char*str6.在中,用来与数据源建立连接的对象是( A )。

(A)Connection对象(B)Command 对象(C)DataAdapter对象(D)DataSet 对象7. 在类的定义中,类的( B )描述了该类的对象的行为特征。

(A)类名(B)方法(C)所属的名字空间(D)私有域8. 如果未显式赋值,则将整型值( B )赋给枚举中的第一个元素。

(A)1 (B)0 (C)23)(D)类型类型的值可以隐式转换成(9. float C的值而保持值不被改变。

double )C( long )B( char )A(int )D(是IExample而,是一个类Class1假设,中在C#10.A 下面的(,一个接口)类声明是正确的。

class Employee: Class1, IExample )A(.class Employee: IExample, Class1 B)(class Employee- Class1, IExample )(Cclass Employee: Class1/IExample )(D得.判断题二分15共每小题小题,3分,(本大题共5 评)分分中子类可以继承多个基类,也可以1. C人)×继承一个接口。

计算机11 面向对象程序设计 考试试卷(A卷) 参考解答0

cout<<a1.Num<<" "<<a2.Num<<endl;
A a3, a4(4);
cout<<GetN(a3)<<" "<<GetN(a4)<<endl;
cout<<a3.Num<<" "<<a4.Num<<endl;
cout<<A::Num<<endl;
}
解答:程序1运行结果为:(评分标准:每对一行得1分,共5分)
Student=19
Teacher=32
Student=22
Teacher=35
Graduate=22
Graduate end.
Teacher end.
Student end.
Teacher end.
Student end.
第3页共4页
3.程序3(10分)
#include <iostream>
using namespace std;
8.若A类中的一个成员函数说明如下:voidset(A&a),则A&a的含义是()。
A.指向类A的名为a的指针B.将a的地址赋给变量Set
C.a是类A的对象引用,用来作函数Set()的形参
D.变量A与a按位与的结果作为函数Set的参数
9.在C++中把不返回任何类型的函数应该说明为()。
A.voidB.char
The Base.
The Derive1.
The Derive1.
The Derive2.
六、编程题(20分)

计06 面向对象程序设计 考试参考答案(A卷)

2.在修改了程序的错误以后,回答以下问题:
(1)写出程序运行的结果。(3分,评分标准:正确给3分)
c1<c2
(2)如果删除程序中的第11、17、18、19行,则程序编译时,在什么位置会出错?为什么?(3分,评分标准:答对前一份给2分,答对后一份给1分)
在24行会出错。
因为:if (c1>c2)中c1和c2是两个对象,要进行运算,必须重载运算符“>”。
Box(float L=1.0, float W=1.0, float H=1.0)
{
Length = L;
Width = W;
Height = H;
}
};
int main()
{
Bo b1.GetVolume();
v2 = b2.GetVolume();
if (v1>v2)
cout<<v1<<" "<<v2<<endl;
else
cout<<v2<<" "<<v1<<endl;
return 0;
}
六、编程题(18分,评分标准:写出类Box得8分,编出main()函数得10分,注意:程序的所有等价写法同样给分)
#include <iostream.h>
class Box
{
private:
float Length,Width,Height;
public:
float GetVolume() { return Length*Width*Height;};
60
25
60
25
3.程序3(10分,评分标准:前面con和后面des的输出每行0.5分,中间数字输出每行1分)

面向对象程序设计考试

面向对象程序设计考试(答案见尾页)一、选择题1. 面向对象程序设计(OOP)的基本概念是什么?A. 类和实例B. 过程和函数C. 数据结构和算法D. 对象和封装2. 在面向对象程序设计中,什么是封装?A. 将数据隐藏在对象内部B. 提供统一的接口C. 包含数据和处理数据的函数D. 以上所有3. 在面向对象编程中,什么是继承?A. 重用已有的代码B. 创建新的类C. 在现有类的基础上添加新特性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. 销毁对象并释放资源的方法B. 定义对象行为的方法C. 没有返回值的方法D. 以上所有11. 在面向对象程序设计中,什么是类和对象?它们的关系是什么?A. 类是一种抽象的数据类型,而对象是类的实例。

B. 类是用来描述具有相同属性和行为的对象的集合,对象是类的实例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的。错选、多选或未选均无分。 1.决定C++语言中函数的返回值类型的是 ( ) A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 2. 对基类和派生类的关系描述中,错误的是 ( ) A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 3. 关于this指针使用说法正确的是 ( ) A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码 B. 保证基类私有成员在子类中可以被访问。 C. 保证基类保护成员在子类中可以被访问。 D. 保证基类公有成员在子类中可以被访问。 4. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ( ) A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 5. 适宜采用inline定义函数情况是 ( ) A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用 6. 假定一个类的构造函数为A(int aa,int bb){a=aa- -;b =a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为( ) A. 3和15 B. 5和4 C. 4和20 D. 20和5 7. 在类中说明的成员可以使用关键字的是 ( ) A. public B. extern C. cpu D. register 8. 使用地址作为实参传给形参,下列说法正确的是 ( ) A. 实参是形参的备份 B. 实参与形参无联系 C. 形参是实参的备份 D. 实参与形参是同一对象 9. 关于对象概念的描述中,说法错误的是 ( ) A. 对象就是C语言中的结构变量 B. 对象代表着正在创建的系统中的一个实体 C. 对象是类的一个变量 D. 对象之间的信息传递是通过消息进行的 10. 使用string类建立对象的不正确方式是 ( ) A. string s(‚C++‛); B. string s=‚C++‛; C. string str; D. string s=‘C++’; 二、填空题(本大题共14空,每空1分,共14分)。错填、不填均无分。 1. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是 。 2. 下列程序段的输出结果是 。 for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j); cout<b>c; cout< void main() {int num=2,i=6; do {i--; num++; }while(--i); cout< void main() { int *p1; int **p2=&p1; int b=20; p1=&b; cout<<**p2< class example {int a; public: example(int b=5){a=b++;} void print(){a=a+1;cout < class Base {private: int Y; public: Base(int y=0) {Y=y;cout<<"Base("< class A {public: A() {cout<<"A 构造函数\n";fun();} virtual void fun() {cout<<"A::fun() 函数\n";} }; class B:public A {public: B() {cout<<"B构造函数\n";fun();} void fun() {cout<<"B::fun() calle函数\n";} }; void main() {B d;} 四、程序设计题(本大题共3小题,每
题12分,共36分)
1. 编写类String的构造函数、析构
函数和赋值函数和测试程序。
已知类String的原型为:
#include
#include
class String
{public:
String(const char *str=NULL); //
普通构造函数
String(const String &other); // 拷
贝构造函数
~String(); // 析构函数
String & operator=(const String
&other); // 赋值函数
void show()
{cout<}
private:
char *m_data; // 用于保存字符串
};
2.使用动态内存分配生成动态数组来
设计一个4X4矩阵转置函数,使用指针
实现函数的功能。
3.定义一个哺乳动物类Mammal,再由
此派生出狗类Dog,定义一个Dog类的
对象,通过主函数测试基类与派生类的
构造函数和析构函数的调用顺序。

相关文档
最新文档