面向对象与程序设计A河南科技大学考试试卷格式(四页式)B卷1
面向对象程序设计试卷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(答案)

******************************************班级:******************************学号:************************************姓名:************************************共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卷)

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卷) (满分: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)

《面向对象程序设计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卷

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

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分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<
题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类的
对象,通过主函数测试基类与派生类的
构造函数和析构函数的调用顺序。