(07837)《面向对象程序设计C++》复习题
一、单选题
1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D )
A. 公有类型
B. 私有类型
C. 保护类型
D. 友元类型
2.下列关于多态性的描述,错误的是( C )
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过模板和虚函数实现
D. 实现运行时多态性的机制称为动态绑定
3.在C++语言中,数据封装要解决的问题是( D )
A. 数据的规范化
B. 便于数据转换
C. 避免数据丢失
D. 防止不同模块之间数据的非法访问
4.使用private修饰的成员变量,以下说法正确的是( A )
A. 只能由本类中的函数使用,不能被外面的程序所访问。
B. 可以由本类中的函数使用,也可以被外面的程序所访问。
C. 只能由本类和派生类中的函数使用。
D. 可以在主函数中使用。
5.对类的构造函数和析构函数描述正确的是( A )
A. 构造函数可以重载,析构函数不能重载
B. 构造函数不能重载,析构函数可以重载
C. 构造函数可以重载,析构函数也可以重载
D. 构造函数不能重载,析构函数也不能重载
6.下面对静态数据成员的描述中,正确的是( A )
A. 静态数据成员是类的所有对象共享的数据
B. 类的每个对象都有自己的静态数据成员
C. 类的不同对象有不同的静态数据成员值
D. 静态数据成员不能通过类的对象调用
7.在VC++语言类体系中,不能被派生类继承的有( B )
A. 转换函数
B. 构造函数
C. 虚函数
D. 静态成员函数
8.下面关于句柄正确的说法是( A )
A. 句柄是一个标识Windows资源和设备等对象的变量。
B. 句柄是用户程序自定义的数据类型。
C. 用户程序使用句柄时不需要定义。
D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。
9.下面关于动态链接库正确的说法是( B )
A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。
B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。
C. 动态链接库本身不能单独设计、编译和调试。
D. 动态链接库的使用使得程序缺乏灵活性。
10.下面关于MFC应用程序中InitInstance函数正确的说法是( D )
A. 该函数由用户定义。
B. 该函数不需要用户程序覆盖。
C. 该函数在WinMain函数内被显式调用。
D. 通过应用程序类的全局指针自动调用。
11.为了在程序中显示一个模式对话框,应使用CDialgl类的成员函数( C )
A. ShowWindow()
B. Create()
C. DoModal()
D. InvalidateRect()
12.为了在程序中显示一个无模式对话框,应使用CWnd类的成员函数( A )
A. ShowWindow(SW_NORMAL)
B. Create()
C. DoModal()
D. InvalidateRect()
13.对于模式对话框的缺省按钮“OK(确定)”,下面哪种说法是正确的?( B )
A. 单击“OK”,系统认定用户在对话框中的选择或输入无效,对话框退出。
B. 单击“OK”,系统认定用户在对话框中的选择或输入有效,对话框退出。
C. 单击“OK”,对话框照常运行。
D. 单击“OK”,对话框暂停运行。
14.设有语句int i=MessageBox("MFC对话框","提问",MB_YESNO|MB_ICONQUESTION);,下面哪种说法是正确的?( C )
A. 消息对话框有两个按钮“确定”和“取消”,单击“确定”返回IDOK。
B. 消息对话框有一个按钮“确定”,单击“确定”返回IDOK。
C. 消息对话框有两个按钮“是”和“否”, 单击“是”返回IDYES。
D. 消息对话框有一个按钮“是”, 单击“是”返回IDYES。
15.一个无模式对话框在退出时,应写的代码是( C )
A. DestroyWindow();
B. delete this;
C. DestroyWindow();delete this;
D. CloseWindow();
16.在编辑框内用代码实现剪贴板功能,下面哪个说法是正确的( D )
A. 使用UNIT类型变量访问剪贴板函数
B. 使用CString类型变量访问剪贴板函数
C. 使用int类型变量访问剪贴板函数
D. 使用CEdit类型变量访问剪贴板函数
17.关于DDX/DDV技术,下面哪个说法是正确的。( D )
A. 用户只能为一个控件关联一个变量
B. 用户可以为同一个控件关联多个变量,变量名可以相同,类型必须不同。
C. 用户可以为同一个控件关联多个变量,类型可以相同,变量名必须不同。
D. 用户可以为同一个控件关联多个变量,但必须保证变量名不同且类型不同。
18.一个Button控件同时具有OnCommand和BN_CLICKED两个消息处理函数,下面哪个说法是正确的。( B )
A. 优先执行BN_CLICKED消息处理函数
B. 优先执行OnCommand消息处理函数
C. 同时执行
D. 编译错
19.关于函数CListBox:: GetText( int nIndex, LPTSTR lpszBuffer ),下面的说法哪个是正确的( C )
A. 取列表框中选中项的内容
B. 取列表框中选中项的索引
C. 取列表框中索引为nIndex的内容,送lpszBuffer
D. 取列表框中内容为lpszBuffer的索引,送nIndex
20.关于函数CButton::SetCheck (1),下面的说法哪个是正确的( A )
A. 设置复选按钮为选中状态
B. 设置复选按钮为非选中状态
C. 设置复选按钮为不确定状态
D. 该函数不能设置复选按钮状态
21.关于对话框应用程序的初始化代码,下面哪个说法是正确的( B )
A. 初始化代码应放在WinMain()函数中
B. 初始化代码应放在OnInitDialog()函数中
C. 初始化代码应放在对话框类的构造函数中
D. 初始化代码应放在用户自定义函数中
22.关于函数CProgressCtrl::SetPos( int nPos ),下面的说法哪个是正确的( C )
A. 设置进展条的步长
B. 设置进展条范围的上限
C. 设置进展条初始位置
D. 返回进展条当前位置
23.关于函数CListBox::GetItemDataPtr( int nIndex ),下面的说法哪个是正确的( A )
A. 取出与索引nIndex的列表项相关联数据的指针,类型为void*
B. 取出与索引nIndex的列表项相关联数据的指针,类型CString*
C. 取出与索引nIndex的列表项相关联数据的指针,类型int*
D. 取出索引nIndex的列表项字符串
24.关于函数SetSel(0,-1),下面的说法哪个是正确的( C )
A. 在编辑框内选中第0行文本
B. 在编辑框内未选中任何文本
C. 在编辑框内选中全部文本
D. 参数范围错
25.关于滚动条的WM_VSCROLL消息映射,下面的说法哪个是正确的( B )
A. 在CScrollBar类中进行
B. 在CDialog类中进行
C. 在CFrameWnd类中进行
D. 在CView类中进行
26.关于函数CProgressCtrl:: SteiIt(),下面的说法哪个是正确的( A )
A. 使进展条前进一个步长
B. 使进展条后退一个步长
C. 设置进展条初始位置
D. 返回进展条当前位置
27.关于函数CListBox:: GetCurSel( ),下面的说法哪个是正确的( B )
A. 取列表框中选中项的内容
B. 取列表框中选中项的索引
C. 删除列表框中的选中项
D. 在列表框中添加一项
28.关于函数UpdateData(),下面哪个说法是正确的( B )
A. 数据从相关联的成员变量向控件传输
B. 数据从控件向相关联的成员变量复制
C. 实现不同控件之间的数据交换
D. 实现与不同控件相关联变量的数据交换
29.关于函数CListBox:: ResetContent( ),下面的说法哪个是正确的( D )
A. 更新列表框中的内容
B. 删除列表框中的第1项
C. 删除列表框中的最后1项
D. 删除列表框中的所有项,即清空列表框
30.为使工具栏按钮与对应菜单项功能一致,下面哪个说法是正确的( B )
A. 工具栏按钮与对应菜单项的ID相同,工具栏按钮必须重写代码。
B. 工具栏按钮与对应菜单项的ID相同,工具栏按钮不用重写代码。
C. 工具栏按钮与对应菜单项的ID必须不同,工具栏按钮必须重写代码。
D. 工具栏按钮与对应菜单项的标题相同,工具栏按钮不用重写代码。
31.关于消息WM_CONTEXTMENU的说法,下面哪个说法是正确的( A )
A. 单击鼠标右键时发送
B. 单击鼠标左键时发送
C. 双击鼠标右键时发送
D. 双击鼠标左键时发送
32.关于消息BN_CLICKED的说法,下面哪个说法是正确的( B )
A. 单击鼠标右键时发送
B. 单击鼠标左键时发送
C. 双击鼠标右键时发送
D. 双击鼠标左键时发送
33.关与函数OnDraw,下面哪个说法是正确的( A )
A. 窗口首次生成时自动调用
B. 窗口生成后调用
C. 窗口消失前调用
D. 窗口消失后调用
34.关与函数OnNewDocumen,下面哪个说法是正确的( A )
A. 创建文档时调用
B. 打开文档时调用
C. 修改文档时调用
D. 视图第1次连接到文档后,初始显示视图前调用该函数
35.关与函数OnInitialUpdate,下面哪个说法是正确的(D )
A. 创建文档时被调用
B. 打开文档时被调用
C. 修改文档时被调用
D. 视图第1次连接到文档后,初始显示视图前调用该函数36.对滑动条控件有设置SetRange(0,100,TRUE); SetTicFreq(4); ,下面的说法哪个是正确的。( B )
A. 滑动条的刻度线有25根
B. 滑动条的刻度线有26根
C. 滑动条的刻度线有4根
D. 滑动条的刻度线不确定
37.定义逻辑字体的结构变量,下面哪个定义是正确的?( B )
A. CFont cf
B. LOGFONT lf
C. COLORREF rc
D. LOGBRUSH cp
38.设有定义CRect re(10,20,50,60) ,下面哪个说法是正确的?( A )
A. 定义的矩形左上角顶点坐标是(10,20),右下角顶点坐标是(50,60)
B. 定义的矩形左下角顶点坐标是(10,20),右上角顶点坐标是(50,60)
C. 定义的矩形右上角顶点坐标是(10,20),左下角顶点坐标是(50,60)
D. 定义的矩形右下角顶点坐标是(10,20),左上角顶点坐标是(50,60)
39.下列说法正确的是( B )
A..内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C. 类的内联函数必须在类体内定义
D. 类的内联函数必须在类体外通过加关键字inline定义
40.下列关于虚基类的描述,错误的是( B )
A. 设置虚基类的目的是为了消除二义性
B. 虚基类的构造函数在非虚基类之后调用
C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
二、添空题
1.在面向对象方法中,类之间共享属性和操作的机制称为____继承____。
2.通过使用new和delete两个运算符进行的分配为动态存储分配。
3.在面向对象的程序设计中,类描述的是具有相似性质的一组对象。
4.在C++中封装性、继承性和多态性是面向对象思想的主要特征。
5.MFC框架程序是从 WinMain 函数开始执行的。
6.一个const对象只能访问 const 成员函数。
7.静态成员函数、内联函数和构造函数不能声明为虚函数。
8.在函数体之前加 const 关键字可以防止覆盖函数,改变数据成员的值。
9.设在程序中使用如下语句申请了一个对象数组:Point *ptr=new Point[2];,则在需要释放ptr指向的动态数组对象时,所使用的语句是 delete[]ptr; 。
10.设有下列代码int a=0;double b=0;cin>>a>>b;当用键盘输入时,b=。
11.CWnd的成员函数GetCheckedRadioButton的功能是返回按钮组中被选中按钮的ID 。
12.消息WM_COMMAND的参数wParam的高位字是控件的通知代码。
13.消息映射宏DELCARE_MESSAGE_MAP的作用是用来声明对消息映射的支持。14.CComboBox的成员函数GetCurSel( ),在组合框中没有选项时返回 CB_ERR 。
15.CListBox的成员函数InsertString(-1, “辽宁省”),把“辽宁省”添加到列表框中的位置是
最后。
16.CWnd的成员函数GetDlgItemText的功能是获取控件的标题文本。
17.消息SB_THUMBTRACK是在滚动条拖动滚动块时发送。
18.动态链接库可以提高程序模块的灵活性,因为它本身可以单独设计、编译和调试。19.Windows提供的图形界面接口GDI,使得用户能方便实现图形和文本的输出,不必关心与系统相连的
外部设备特性。
20.句柄是一个对操作系统资源的间接引用。
21.每个MFC应用程序都需要头文件,该头文件定义了MFC的所有类、函数、变量等。
22.每个Win32应用程序都需要头文件,该头文件及其所包含的文件定义了Windows所有的数据类型、函数调用、数据结构和符号常量等。
23.可以使用ShowWindow(SW_NORMAL)显示无模式对话框,它是 CWnd 基类的成员函数。
24.在VC++中,菜单、工具栏、对话框、图标等都被视为资源。
25.Window中的每一个资源都是由标识符来定义的,其中的英文字母不区分大小写。
26.列表框中第1项的索引值是 0 。
27.CListBox的成员函数GetCurSel( ),在列表框中没有选项时返回 LB_ERR 。
28.消息SB_LINEDOWN是在滚动条向下滚动一行时发送。
29.如工具栏按钮属性的提示项是“加法运算\n加法”,则状态栏显示信息为加法运算。30.GDI提供高层绘图函数,支持与设备无关的图形显示。
三、问答题
1.简述Windows编程特点。
答案:
Windows程序有如下特点:
①消息驱动机制
在Windows应用程序中,通过接收消息、分发消息、处理消息来和用户进行交互。
②图形设备接口(GDI)
Windows提供了一个抽象的图形界面接口,称为图形设备界面,或简称GDI。使得用户直接利用系统的GDI函数就能方便实现图形和文本的输出,不必关心与系统相连的外部设备特性。
③基于资源的程序设计
Windows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等,统称为资源。
VC++提供了很多编辑器对这些资源进行编辑,使得用户可以方便地使用这些资源。
④动态链接库
动态链接库提供的函数,能在Windows程序运行时进行装载和连接。可提高程序模块的灵活性。
2.简述MFC程序的运行机制。
答案:
①程序运行时,首先定义全局程序对象,系统调用缺省的应用程序类的构造函数,该函数把全局程序对象的地址保存在一个全局指针中。
②此时WinMain()函数接收控制,首先通过全局指针调用应用程序类的InitInstance()函数完成应用程序的初始化。
③InitInstance()函数执行结束,屏幕上显示窗体,WinMain()进入消息主循环,等待接收用户消息。收到消息后转到系统的Run()函数处理。
④当用户点击退出按钮时,WinMain()调用ExitInstance()函数退出。
3.什么是MFC的消息映射机制?简述映射一个消息的过程。
答案:
所谓消息映射机制,即指MFC类中将消息与消息处理函数联系起来,一一对应的机制。
映射一个消息的过程由三个部分组成:
①在处理消息的类中,使用消息宏LARE_MESSAGE_MAP() 声明对消息映射的支持,并在该宏之前声明消
息处理函数。
②使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏在类声明之后的地方定义该类支持的消息映入口点,
所有消息映射宏都添加在这里,当然不同的消息MFC都会有不同的消息映射宏。
③定义消息处理函数,在该函数内添加消息处理代码。
4.简述DDX/DDV技术是如何实现数据交换和数据校验的?使用时应注意什么问题?
答案:
DDX技术:DDX将数据成员变量同对话框模板内的控件相连接,使得数据在控件之间很容易地传输。
具体使用如下两个函数:
UpdateData(TRUE)或UpdateData()实现控件数据向相关联的变量复制。
UpdateData(FALSE)实现数据由相关联的变量传给控件。
DDV技术:DDV技术能根据用户为与控件相关联的变量设定的取值范围,自动对数据进行校验,当超出范围时,发出相应的警告。。
注意事项:在DDX/DDV技术中,允许用户为同一个控件关联多个变量,但必须保证这些变量名是互不相同的,且这些变量在同一个类型不能有多个变量。
5.什么是静态控件?有哪些静态控件?
答案:
静态控件:用来显示一个字符串、框、矩形、图标,位图或增强的图元文件。它可以用来作为标签、框或用来分割其它的控件。一个静态控件一般不接收用户输入,也不产生通知消息。
静态控件种类:静态文本,组框,静态图片。
6.什么是按钮控件?有哪些按钮控件?简述它们的不同。
答案:
按钮控件:用来实现一种开与关的输入。
常见的按钮有三种类型:按键按钮,单选按钮,复选框按钮
按键按钮通常可以立即产生某个动作,执行某个命令,因此也常被称为命令按钮。
单选按钮通常成组出现,分组后每组中只能有一个被选中。
复选框通常成组出现,复选框被选中时,复选框中就加上一个标记,复选框常用的有选中和未选中两种状态,用户可以同时选中多个复选框。
7.什么是文档的序列化?其过程是怎样的?
答案:
文档的序列化:使一个类可序列化就是使其具有CArchive的序列化功能,即可以在文档类的Serialize函数中直接通过CArchive引用变量进行该数据的读写操作。
序列化过程:在MFC中,一个可序列化的类必须是CObject的一个派生类,且在类声明中,需要包含DECLARE_SERIAL宏调用,而在类的实现文件中包含IMPLEMENT_SERIAL宏调用,这个宏有三个参数:前两个参数分别表示类名和基类名,第三个参数表示应用程序的版本号。最后还需要重载Serialize函数,使该类的数据成员进行相关序列化操作。
8.简述单文档应用程序中是如何实现文档读写的?
答案:
①当MFC AppWizard创建文档应用程序时,它会自动将“文件(File)”菜单中的“打开(Open)”命令(ID号为ID_FILE_OPEN)映射到CWinApp的OnFileOpen成员函数。
②当MFC AppWizard创建应用程序时,它会自动将“文件(File)”菜单中的“保存(Save)”命令与文档类CDocument的OnFileSave函数在内部关联起来,但用户在程序框架中看不到相应的代码。
③打开和保存文档时,系统都会自动调用Serialize函数。事实上,MFC AppWizard在创建文档应用程序框架时已在文档类中重载了Serialize函数,通过在该函数中添加代码可达到实现数据序列化的目的。
9.函数OnInitialUpdate和OnNewDocument都可以对文档进行初始化工作,叙述它们的区别。
答案:
函数:OnInitialUpdate是当应用程序被启动时,或当用户从“文件”菜单中选择了“新建”或“打开”时,视图第1次连接到文档后,在初始显示视图前调用该函数,用户可重载此函数对文档所需信息进行初始化。
这里的初始化主要是对与文档相联系的视图进行,如设置视图大小、是否有滚动功能等。
函数OnNewDocument是当用户从“文件”菜单中选择“新建”命令时,框架首先构造一个文档对象,然后调用该函数,用户可在这里对文档数据进行初始化。
10.什么是列表框和组合框控件?组合框控件有哪些类型?
答案:
列表框:是一个列有许多项目让用户选择的控件。用户可以在其中选择一个或多个项,列表框中的项目数
目可灵活变化,程序运行时可根据需要随时增加或删除。当列表框中项目很多时,自动提供滚动
功能。
组合框:常用的项目在组合框中显示,用户可以选择其中一项。同时还配有一个编辑框,输入组合框中没
有的项。组合框中的项目数目可灵活变化,程序运行时可根据需要随时增加或删除。
组合框类型:简单组合框、下拉式组合框和下拉式列表框。
四、程序分析题
1.分析下面的程序
要求:⑴写出程序运行结果。
⑵说明语句*this = a;的含义。
#include <>
class COne
{
public:
COne() {x = y = 0;}
COne(int a, int b){x = a; y = b;}
void copy(COne &a);
void print() {cout< private: int x, y; }; void COne::copy(COne &a) { if (this == &a) return; *this = a; } void main() { COne one, two(3, 4); (); (two); (); } 答案: ⑴0 , 0 3 , 4 ⑵把形参a获得的某对象的值赋给操作该成员函数的对象。在本例中,就是将对象two赋给对象one。 2.设有一个对话框应用程序,对话框类名为CEx_RadioDlg,添加了一个Button按钮,ID号为 IDC_BUTTON1和4个Radio按钮,ID号分别为IDC_RADIO1~IDC_RADIO4。分析下面的程序段: 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_RadioDlg::OnButton1() { CString str; UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4); // GetDlgItemText(nID1, str); // MessageBox(str); // } 答案: ⑴ UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4); //返回按钮组中被选中按钮的ID GetDlgItemText(nID1, str); //获取控件nID的标题文本,送str MessageBox(str); //用消息对话框显示str 该函数在鼠标左键单击Button按钮时被调用。 函数功能:获取按钮组中被选中按钮的标题文本,用消息对话框显示出来。 3.设有一个对话框应用程序,对话框类名为CEx_DlgCtrlsDlg。分析下面的程序: 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 BOOL CEx_DlgCtrlsDlg::OnInitDialog() { CStatic *cs; cs=new CStatic(); cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENT ER,CRect(20,20,120,40),this);// CFont *font=this->GetFont();// cs->SetFont(font);// return TRUE; } 答案: ⑴ cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER ,CRect(20,20,120,40),this); //创建静态控件,标题为"Hello!",子窗体风格,带边框,文本局中,控件左上角顶点坐标为 (20,20),宽120,高40,父类窗口为当前窗口(对话框)。 CFont *font=this->GetFont();//获得对话框字体 cs->SetFont(font);//用对话框字体设置静态控件字体 ⑵函数OnInitDialog()在显示对话框之前执行,完成对话框的初始化。 该函数完成的功能:在对话框上创建一个具有指定风格的静态控件,标题为"Hello!"。 4.设有一个对话框应用程序,对话框类名为CEx_DlgCtrlsDlg,添加两个Button按钮,ID号分别为IDC_BUTTON1和IDC_BUTTON2。分析下面的程序: 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 BOOL CEx_DlgCtrls1Dlg::OnCommand(WPARAM wParam, LPARAM lParam) { WORD nCode=HIWORD(wParam); WORD nID=LOWORD(wParam); if((nID==IDC_BUTTON1)&&(nCode==BN_CLICKED)) // MessageBox("你按下的是Button1"); if((nID==IDC_BUTTON2)&&(nCode==BN_CLICKED)) // MessageBox("你按下的是Button2"); return CDialog::OnCommand(wParam, lParam); // } 答案: ⑴ if((nID==IDC_BUTTON1)&&(nCode==BN_CLICKED)) //如果控件标识符是IDC_BUTTON1并且事件是 BN_CLICKED,执行下面语句。 if((nID==IDC_BUTTON2)&&(nCode==BN_CLICKED)) //如果控件标识符是IDC_BUTTON2并且事件是 BN_CLICKED,执行下面语句。 return CDialog::OnCommand(wParam, lParam); //把控件的消息交由其它函数处理,如OnButton1()。 ⑵该函数在控件发出通知消息OnCommand时执行。 函数功能:鼠标单击“Button1”时,显示消息对话框,内容为"你按下的是Button1"。 鼠标单击“Button2”时,显示消息对话框,内容为"你按下的是Button2"。 5.设有一个单文档应用程序,IDR_MAINFRAME为菜单标识。下面是在框架类中添加的WM_CONTEXTMENU 消息处理函数。分析下面的程序段: 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_SystemMenuView::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu mPop; (IDR_MAINFRAME); // CMenu* p=(4); // p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,,,this); // } 答案: ⑴ void CEx_SystemMenuView::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu mPop; (IDR_MAINFRAME); //装载菜单IDR_MAINFRAME CMenu* p=(4); //取菜单第4项指针(从0开始),即“加减法”菜单。 p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,,,this);//显示弹出式菜单 // ,为菜单位置(鼠标位置),this为父窗口 } ⑵在单文档应用程序窗口空白处,按下鼠标右键时执行该函数。 功能是显示快捷菜单,快捷菜单是菜单IDR_MAINFRAME的第4项(从0开始) 6.下面是在关于状态栏设置的一段代码。 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_StatusBarView::OnMouseMove(UINT nFlags, CPoint point) { CString str; CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; // if (pStatus) { pStatus->SetPaneStyle(1, SBPS_POPOUT); // ("X=%d, Y=%d",, ; pStatus->SetPaneText(1,str); // } CView::OnMouseMove(nFlags, point); } 答案: ⑴ void CEx_StatusBarView::OnMouseMove(UINT nFlags, CPoint point) { CString str; CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; // 获得主窗口中的状态栏指针 if (pStatus) { pStatus->SetPaneStyle(1, SBPS_POPOUT); //设置状态栏风格 ("X=%d, Y=%d",, ; pStatus->SetPaneText(1,str); //在状态栏第二个窗格显示文本str,str为鼠标位置} CView::OnMouseMove(nFlags, point); } ⑵ 该函数当鼠标在单文档窗口内移动时被调用,状态栏第二个窗格显示鼠标当前位置。 7.分析下面的程序 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { int cxScreen = ::GetSystemMetrics(SM_CXSCREEN); int cyScreen = ::GetSystemMetrics(SM_CYSCREEN); //下面两条语句的作用是 = cxScreen/2; = cxScreen/2-150; //下面两条语句的作用是 =/2; =/2; &=~WS_MAXIMIZEBOX; // } 答案: ⑴ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { int cxScreen = ::GetSystemMetrics(SM_CXSCREEN); int cyScreen = ::GetSystemMetrics(SM_CYSCREEN); //下面两条语句的作用是设置主窗口宽为1/2屏宽、高为1/2屏幕高 = cxScreen/2; = cxScreen/2-150; //下面两条语句的作用是设置主窗口左上角坐标,使窗口位于屏幕中央 =/2; =/2; &=~WS_MAXIMIZEBOX; //去处最大化按钮 } ⑵ 当窗口创建之前,系统自动调用该函数。 该函数完成对窗口风格的设置,使窗口宽为1/2屏宽、高为1/2屏幕高,位于屏幕中央,无最大化按钮。 8.分析下面的程序段 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_FontView::OnDraw(CDC* pDC) { LOGFONT lf; memset(&lf,0,sizeof(LOGFONT)); =1; CFont font; (&lf); // pDC->SelectObject(&font); // pDC->TextOut(10,10,"我喜欢Visual C++!"); // } 答案: ⑴ void CEx_FontView::OnDraw(CDC* pDC) { LOGFONT lf; memset(&lf,0,sizeof(LOGFONT)); =1; CFont font; (&lf);//用lf结构创建字体 pDC->SelectObject(&font);//把字体装入设备环境 pDC->TextOut(10,10,"Hello!");//在指定位置显示字符串 } ⑵ 窗口首次生成时,自动调用视图类函数OnDraw 程序功能是在指定位置(10,10),用由lf结构创建的字体输出文本"Hello!"。9.分析下面的程序 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_PenView::OnDraw(CDC* pDC) { CRect rc4(10,120,110,220); COLORREF color4=RGB(192,0,0); // CBrush brush4=(HS_FDIAGONAL,color4); pDC->SelectObject(brush4); // pDC->Ellipse(rc4); // } 答案: ⑴ void CEx_PenView::OnDraw(CDC* pDC) { CRect rc4(10,120,110,220); COLORREF color4=RGB(192,0,0); //设置颜色变量 CBrush brush4=(HS_FDIAGONAL,color4); pDC->SelectObject(brush4); //把画刷装到设备环境中 pDC->Ellipse(rc4);//绘制圆,用画刷颜色填充圆 } ⑵ 窗口首次生成时,自动调用视图类函数OnDraw 程序功能是在指定矩形rc4内绘制圆,用画刷颜色填充圆。 10.分析下面的程序 要求:⑴在注释符号//后面对各条语句进行注释,说明该语句的作用。 ⑵该函数在什么时候被调用?写出该函数完成的功能。 void CEx_PenView::OnDraw(CDC* pDC) { CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192); // CPen pen1(PS_SOLID,1, color1); pDC->SelectObject(pen1); // pDC->Rectangle(rc1); // } 答案: ⑴ void CEx_PenView::OnDraw(CDC* pDC) { CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192);//设置颜色变量 CPen pen1(PS_SOLID,1, color1); pDC->SelectObject(pen1);//把画笔装到设备环境中 pDC->Rectangle(rc1);//用指定画笔绘制矩形 } ⑵ 窗口首次生成时,自动调用视图类函数OnDraw 程序功能是在指定矩形rc1内,用所定义的画笔绘制矩形 五、程序设计题 1.设计一个单文档应用程序,要求通过菜单打开通用字体对话框,按用户选择的字体、字号、颜色等属性在窗口中显示字符串“我喜欢Visual C++!”。 要求:⑴写出设计步骤 ⑵完成代码设计 答案: ⑴设计步骤 ①使用MFC AppWizard(exe)向导创建一个单文档应用程序 ②选中资源面板底端的ResourceView ③在资源树中选择并展开Menu结点,其中IDR_MAINFRAME为系统预定义菜单 ④双击IDR_MAINFRAME打开菜单编辑器,增加一项设ID为ID_FONT ⑤建立菜单消息COMMAND的处理函数 ⑵编写代码 void CEx_DialogFontView::OnFont() { LOGFONT lf; memset(&lf, 0,sizeof(LOGFONT)); strcpy ( , "Times New Roman"); CFontDialog dlg ( &lf,CF_EFFECTS | CF_SCREENFONTS, 0, this); if () == IDOK ) { CClientDC dc(this); (&lf); CFont myfont; (&lf); (&myfont); ()); (100,100,"我喜欢Visual C++!"); } } 2.设计一个对话框应用程序Ex_Check,保留“取消”按钮,标题改为“退出”,删除其它默认控件,添加1个命令按钮,4个复选框,一个组框。 初始运行“篮球”被选中;鼠标单击按钮“显示信息”时,用消息对话框显示选中的内容。 运行界面如下: 要求:⑴写出设计步骤 ⑵完成代码设计 答案: ⑴设计步骤 使用应用程序向导,建立一个对话框应用程序Ex_Check; ①设计界面 添加两个按钮,ID分别为IDC_BUTTON1和IDC_BUTTON2,标题为“显示信息”和“退出”; 一个组框,标题为“爱好”; 在组框控件内,添加4个复选框,ID为IDC_CHECK1 ~ IDC_CHECK4,标题分别为“篮球”、“足球”、“排球”、“棒球”; 使用“布局”调整控件大小和位置。 ②生成两个按钮的消息BN_CLICKED的处理函数。 ⑵编写代码 ①在对话框初始化函数中写入初始化代码,保证初始运行时“篮球”被选中。 BOOL CEx_CheckDlg::OnInitDialog() { CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK1); pBtn->SetCheck(1); //或用CheckRadioButton(IDC_CHECK1,IDC_CHECK4,IDC_CHECK 1); return TRUE; } ②在标题为“显示信息”按钮的消息BN_CLICKED处理函数中写入代码 void CEx_CheckDlg::OnButton1() { CString str1,str2; UINT nCheckIDs[4] = {IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4}; CButton* pBtn; for (int i=0; i<4; i++){ pBtn = (CButton*)GetDlgItem(nCheckIDs[i]); if ( pBtn->GetCheck() ){ pBtn->GetWindowText( str1 ); str2 = str2 + str1; str2 = str2 + ","; } } MessageBox("我喜欢"+str2); } 注:控件的ID号只要符合VC标识符定义规则即可,不必与答案完全一致。 3.设计一个对话框应用程序Ex_CComboBox,保留“取消”按钮,标题改为“退出”,删除其它默认控件。 在对话框初始化函数中,用代码输入组合框中的数据,为每人关联一个电话号码。如姓名为“王一”、“李二”、“张三”、“赵四”,电话号码为“00000000”、“”、“”、“”等。 选中组合框中的一项,单击按钮“显示电话号码”时,在编辑框中显示该人的电话号码。 初始运行界面如图1所示,选择“张三”后的运行界面如图2所示。 初始运行界面选择“张三”后的运行界面 图 1 图 2 要求:⑴写出设计步骤 ⑵完成代码设计 答案: ⑴设计步骤 使用应用程序向导,建立一个对话框应用程序Ex_CComboBox; ①设计界面 添加1个组合框,ID为IDC_COMBO1;添加1个编辑框,ID为IDC_EDIT1; 添加1个按钮,标题为“显示电话号码”,ID为IDC_BUTTON1; 删除缺省按钮“确定”,保留缺省按钮“取消”,标题改为“退出”。 使用“布局”调整控件大小和位置。 ②为控件添加关联变量 为组合框添加CComboBox类型的关联变量m_CL; 为编辑框添加CString类型的关联变量m_E; ③添加消息处理函数 为按钮添加消息BN_CLICKED的处理函数; 为对话框添加消息WM_DESTROY的处理函数; ⑵编写代码 ①初始化代码 BOOL CEx_CComboBoxDlg::OnInitDialog() { ("王一"); ("李二"); ("张三"); ("赵四"); CString telephone="00000000"; (0,new CString(telephone)); (1,new CString(telephone)); (2,new CString(telephone)); (3,new CString(telephone)); return TRUE; // return TRUE unless you set the focus to a control } ②“显示电话号码”按钮消息BN_CLICKED的处理函数 void CEx_CComboBoxDlg::OnButton1() { CString sd; int i=(); sd=*(CString*)(i); m_E=sd; UpdateData(FALSE); } ③对话框退出代码 void CEx_CComboBoxDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here //对话框退出时,释放关联数据占有的空间 for(int k=0;k<4;k++) delete(CString*)(k); } 注:控件的ID号和关联变量名称只要符合VC标识符定义规则即可,不必与答案完全一致,但类型必须正确。 4.设计一个对话框应用程序Ex_Progress,保留“取消”按钮,标题改为“退出”,删除其它默认控件。添加1个进展条,2个按钮。在对话框初始化函数中设置进展条范围、步长和初始位置。 运行界面如下: 单击“后退”按钮,进展条向后退; 单击“继续”按钮,进展条向前进; 要求:⑴写出设计步骤 ⑵完成代码设计 答案: ⑴设计步骤 使用应用程序向导,建立一个对话框应用程序Ex_Progress; ①设计界面 添加1个进展条,ID为IDC_PROGRESS1;添加2个按钮,ID为IDC_BUTTON1和IDC_BUTTON2; 删除缺省按钮“确定”,保留缺省按钮“取消”,标题改为“退出”。 使用“布局”调整控件大小和位置。 ②为控件添加关联变量 为进展条添加CProgressCtrl类型的变量m_P; ③添加消息处理函数 为按钮添加消息BN_CLICKED的处理函数; ⑵编写代码 ①对话框初始化代码 BOOL CEx_ProgressDlg::OnInitDialog() { (0,100); //设置进展条范围的上限和下限值 (5); //设置步长 (30); //设置进展条初始位置 return TRUE; // return TRUE unless you set the focus to a control } ②“后退”按钮代码 void CEx_ProgressDlg::OnButton1() { int nPos = (); // 获取进展条当前位置 int nLow, nUp; (nLow, nUp); // 获取进展条范围 nPos = nPos-5; if (nPos ( nPos ); //设置进展条初始位置 } ③“继续”按钮代码 void CEx_ProgressDlg::OnButton2() { (); } 第3章面向对象程序设计基础 第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) { studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){ 课程与教学论期末考试题2 专业:教育管理(本) / 课程与教学论人气指数:185 中央广播电视大学2007—2008学年度第一学期“开放本科”期末考试(半开卷) 小学教育等专业课程与教学论试题 一、填空(每空1分,共10分) 1.典型的课程与教学论的研究方法包括——、观察研究法、————、人种学研究法。 2.课程资源是教学内容的直接来源,它包括——和————。 3.所谓教学手段,是指师生为实现预期的教学目的,开展教学活动、相互传递信息的 ——、——或设备。 4.一般情况下,课堂气氛可以分为积极的、消极的和——三种类型。 5.一个完整的教学模式应包含理论基础、——、实现条件、活动程序和评价等五个要素。 6.在课堂教学中,教师的非言语表达艺术是非常丰富的,它一般要通过一一——、手 势、面部表情、——和体态等来表达。 二、判断题(每小题2分,共10分。在每小题后面的括号内,根据自己的判断填上“正”或“误”) 1.生成性目标在英国著名课程论专家泰勒的理论中得到了发展和传播。( ) 2.杜威是最早为分科课程提供心理学理论基础的人。( ) 3.比较典型的实行中央集权型课程管理模式的国家为法国。( ) 4.教学过程就是一个认识的过程。( ) 5.教学评价不是教育行政主管部门的职责。( ) 三、简答题(每小题10分,共40分) 1.什么是隐性课程? 2.综合实践活动的含义与内容是什么? 3.简述教学过程的基本阶段。 4.简述教学艺术的特征。 四、论述题(每小题20分,共40分) 1.试举例分析影响课程实施的因素。 2.试述课程与教学内容选择的依据。 试卷代号:1155 中央广播电视大学2007—2008学年度第一学期“开放本科”期末考试[半开卷) 小学教育等专业课程与教学论试题答案及评分标准 (供参考) 2008年1月 一、填空题(共6小题,共lo分) 1.调查研究法实验研究法 2.素材性资源条件性资源 3.工具媒体 4.对抗 5.功能目标 6.副语言眼神 二、判断题(共5小题,共10分) 1.错 2.错 3.对 4.错 5.错 三、简答题(共4小题,共40分) 1.隐性课程:隐性课程也叫隐蔽课程、无形课程等,是指学生在学习环境(包括物质环境、社会环境和文化体系)中所学习到的非预期或非汁划性的知识、价值观念、规范和态度,是计划表上看不到的课程。 2.综合实践活动的含义与内容 综合实践活动:主要指以学生的兴趣和直接经验为基础,以与学生学习生活和社会生活密切相关的各类现实性、综合性、实践性问题为内容,以研究性学习为主导的学习方式,以培养学生的创新精神、实践能力及体现对知识的综合运用为主要目的的一类新型课程。包括:信息技术教育,研究性学习,社区眼务与社会实践,劳动与技术教育。 3.教学过程的基本阶段 心理准备阶段;感知知识阶段;理解知识阶段;巩固知识阶段;运用知识阶段;检查与评价学习效果阶段。 4.教学艺术的特征 (1)教学艺术的创造性。(2)教学艺术的形象性。(3)教学艺术的情感性。(4)教学艺术 课程与教学论模拟试题(附答案) 一.填空题 1.()()(),是课程与教学论研究的三大任务。 2.()中的()可以说是我国乃至世界最早的教育学专著,系统地总结了我国先秦时期的教育思想与教育经验。 3.()标志着教学论作为一门学科的诞生。 4.古希腊教育包括斯巴达()教育和雅典的()教育。 5.()是世界教育史上第一位对发现学习从理论上进行详细研究、周密论证的教育学家。 6.博比特的()问世标志着课程作为一门研究领域的诞生。 7.永恒学科大致有三大类:()()()。 8.教学过程的动力是指()和()的动力。 9.课程评价主要包括三个方面:()()()。 10.教学设计的前期准备分析主要包括:()分析()分析()分析。 二.选择题 下列选择题中有的是单选题,有的是多选题,请将所选择的答案的序号字母填上空格多选题的答案多于标准答案则扣分。 1.下面哪项不属于课堂教学的具体内容()。 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.伦理关系 E.情感关系 10.列哪些选项是属于发展性评价的功能()。 A.导向功能 B.评价功能 C.激励功能 D.调节功能 三.判断题 1.认识课程与教学论的客观规律,这是课程与教学轮的基本任务之一。() 2.现代教学论是以德国的赫尔巴特为代表。() 3.表现性评价是指通过观察学生在学习上的表现来评价学生已经取得的发展成就。()4.课堂教学心理环境可分为积极的,消极的和反抗的三种类型。() 5.问题解决的过程是一种“探索——失败——成功——再探索”的过程。() 四.简答题 1.简述教学媒体的作用。第3章 面向对象程序设计基础
课程与教学论期末试题
课程与教学论模拟试题(附答案)
(完整版)《面向对象程序设计》答案