- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2009-2010学年期末考试A
武汉大学2009—2010学年上学期
《面向对象的程序设计》试卷(A)
学号: 姓名: 院系: 专业: 得分:
一、名词解释(每题5分,共计25分)
(1)类 (2)多态 (3)抽象类 (4)文档模板 (5)序列化
二、简答题(每题10分,共计40分)
简述文档、视图和应用程序框架之间如何相互作用?
Windows消息的发送有哪两种方式?主要区别是什么?Windows API提供了哪几个函数用于消息的发送?
试简述const型变量与用#define宏定义的符号常量的差异。
简述Windows应用程序绘图过程。
三、改错题(每题5分,共计10分)。
1、根据左边的结构定义,找出右边程序的错误并修改正确。
2、下面两段程序的目的是在屏幕上输出“Hello!”,但是两段程序中都不能得到正确的运行结果,请简述其错误并改正。(5分)
五、编程题(25分):下面的单文档应用程序用于在客户区内绘制矩形。程序运行后,当用户在客户区窗口按下鼠标左键并移动时,程序会在鼠标按下的起始位置和鼠标当前位置之间绘制矩形,当鼠标左键弹起时,记录矩形参数并在窗口中使用绿色的单像素线条绘出最终的矩形形状。请在题中画横线的地方添加相应的实现代码。
1、下面是文档类CDrawRectDoc的类声明、构造函数、析构函数和成员函数AddRect。请在析构函数和成员函数AddRect中添加相应代码。
2、下面是视图类CDrawRectView的类声明、消息响应函数OnLButtonDown、OnMouseMove和OnRButtonDown、以及绘图成员函数OnDraw,请在黑体注释后面添加相应的实现代码。
出卷人 张勇 徐景中 教研室负责人审核签字 共 4 页 第 4 页
typedef struct tagWORKER{
long int num;
char* name;
char sex;
int age;
}Worker;
void main(){
Worker a;
a.Num = 187045;
strcpy(a.name, ZhangFun);
a.sex = Man;
a.age = 18;
}
void GetMemory(char *p){
p = new char[100];
}
void Test(void){
char *str = NULL;
GetMemory(str);
strcpy(str, Hello!);
printf(str);
}
char* GetMemory(void){
char p[] = Hello!;
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
class CDrawRectDoc : public CDocument {
protected: // create from serialization only
CDrawRectDoc();
DECLARE_DYNCREATE(CDrawRectDoc)
// Operations
public:
void AddRect(RECT rect); // 添加新的矩形
RECT* GetRectData(){return m_pRectArray;}; // 获得矩形数组指针
int GetRectNumber(){return m_nRect;}; // 获得矩形数量
......
protected:
RECT* m_pRectArray; // 矩阵数组
int m_nRect; // 矩阵数量
int m_nSize; // 矩阵数组的容量
};
CDrawRectDoc::CDrawRectDoc(){
m_pRectArray = new RECT[64];
memset(m_pRectArray, 0, 64*sizeof(RECT));
m_nRect = 0;
m_nSize = 64;
}
CDrawRectDoc::~CDrawRectDoc(){
// 请在下面添加“释放矩阵数组所占用的内存”的代码(2分)
}
// 成员函数:添加新的矩形
void CDrawRectDoc::AddRect(RECT rect){
// 请在函数体内添加实现代码(5分)
}
class CDrawRectView : public CScrollView
{
protected: // create from serialization only
CDrawRectV
文档评论(0)