面向对象程序设计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()
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
2
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()函数中
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
3
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. 窗口生成后调用
#include
using namespace std;
void fun(char *b1, char *b2){
int c,i=0;
while(b1[i]==' '){
b2[i]=b1[i];
i++;
}
while(b1[i]!='\0'){
c=b1[i];
if(c>='a' && c<='z')
b2[i]='a'+(c-'a'+1)%26;
else if(c>='A' && c<='Z')
b2[i]='A'+(c-'A'+1)%26;
else
b2[i]=c;
i++;
while(b1[i]!='\0' && b1[i]!=' '){
b2[i]=b1[i];
i++;
}
while(b1[i]!='\0' && b1[i]==' '){ //单词之间的空格
b2[i]=b1[i];
i++;
}
}
b2[i]=0;
return;
}
int main(){
char s1[200],s2[200];
gets(s1);
while(s1[0]!='*'){
fun(s1,s2);
cout <
}
return 0;
}
#include"stdio.h"
#include
void main()
{
char str[100];
gets(str);
int len = strlen(str);
for(int i=0;i
if(str[i]=='*') break;
str[i] = f(str[i]);
printf("%c",str[i]);
}
return;
}
安排研究生课程表。设有m个研究生和可选修的n门课程,如果某个研究生选修的两门课程安排在同一时间内上课,则这两门课程就会发生冲突,要求不冲突地安排课程表。
首先用结构体表示一个student里面先要什么自己加。然后就是安排几个函数执行你要的
功能。可以写几个Initial函数来做个小选择菜单比较漂亮些。名字最好是英文。中文排序可能复杂点