为教师提供大量课件,教案,授课计划,大纲免费下载! 课件下载 课程课件 | 理工科课件 工商管理类课件 文学政治历史地理类课件 语言类课件 中小学课件 搜索引擎 百度搜索 | 新浪搜索 | Google | SOSO搜搜 邮箱服务 163邮箱 | 雅虎邮箱 | Hotmail | 搜狐邮箱 在线银行 中国银行 | 工商银行 | 招商银行 | 农业银行 | 交通银行 | 建设银行 实用查询 天气预报 | 在线翻译 | 列车时刻 | 手机号码 | 万 年 历 本站连接 领取红包 | 在线招聘 | 社区银行 | 勋章申请 | 投诉建议
Google
      
发新话题
打印

VC++程序设计》试卷1

VC++程序设计》试卷1

VC++程序设计》试卷1



一、单项选择题(每小题1分,共20分)

1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为(    )

A、2          B、3        C、4       D、5

2、对于类中定义的成员,其隐含访问权限为(    )

A、protected    B、private   C、public   D、 static

3、一个类的友元函数或友元类能够通过成员操作符访问该类的(    )

A、私有成员   B、所有成员  C、公用成员  D、保护成员

4、下面说法正确的是(    )

A、构造函数可以重载,析构函数不能重载。

B、构造函数不能重载,析构函数可以重载。

C、构造函数可以重载,析构函数也可以重载。

D、构造函数和析构函数都不可以重载。

5、下列语句的运行结果为(    )

#include <iostream.h>

srtuct  COMPLEX

{

int  x;

int  y;

} cNum[2]={1,3,2,7};

void main()

{

cout<< cNum[0].y*cNum[1] x<<endl;

}

A、3      B、2      C、21       D、6

6、类AB的缺省构造函数和析构函数是(    )

A、AB( )和~AB( )           B、AB(int)和~AB( )   

C、AB( )和~AB(delete )       D、AB( )和int~AB( )

7、在C++中,若对函数未加说明,则函数的隐含类型是(    )

A、int    B、double    C、void      D、char

8、已知类A是类B的友元,类B是类C的友元,则(    )

A、类A一定是类C的友元

B、类C一定是类A的友元

C、类C的成员函数可以访问类B的对象的任何成员

D、类A的成员函数可以访问类B的对象的任何成员

9、下列说法中正确的是(      )

  A、类定义中只能说明函数成员的函数头,不能定义函数体

  B、类中的函数成员可以在类体中定义,也可以在类体之外定义

  C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中

  D、在类体之外定义的函数成员不能操作该类的私有数据成员

10、以下不属于成员函数的是(     )

A、静态成员函数          B、友元函数

C、构造函数           D、析构函数

11、对于消息队列的描述正确的是(     )

A、在Windows中只有一个消息系统,即系统消息队列。消息队列是一个系统定义的数据结构,用于临时存储消息。

B、系统可从消息队列将信息直接发给窗口。另外,每个正在Windows下运行的应用程序都有自己的消息队列。

C、系统消息队列中的每个消息最终都要被USER模块传送到应用程序的消息队列中去。应用程序的消息对列中存储了程序的所有窗口的全部消息。

D、以上都正确

12、一个视图对象能连接(    )文档对象,一个文档对象能连接(    )视图对象。

A、一个,多个             B、多个,一个   

C、一个,一个             D、多个,多个

13、MFC类库中的类按层次关系可知,CStatic 的直接父类为(       )

A、CObject    B、CWnd    C、CcmdTarget    D、CFrameWnd

14、可以利用控件的(    )属性和Tab键顺序来为控件分组。

A、ID     B、Tab stop     C、Group     D、Caption

15、根据对话框的行为性质,对话框可以分为两类:(     )

A、对话框资源和对话框类     B、模式对话框和非模式对话框

C、对话框资源和对话框模板   D、消息对话框和模式对话框

16、以下控件中,(    )没有Caption属性。

  A、按钮     B、群组框     C、编辑控件    D、静态控件

17、菜单项助记符前用(    )引导。

  A、%       B、&          C、#           D、$

18、更新菜单状态的消息是(    )。

  A、WM_COMMAND               B、UPDATE

  C、ON_UPDATE_COMMAND_UI    D、INVALIDATE

19、关于工具栏、菜单和加速键的关系,正确的说法是(    )。

  A、工具按钮与菜单必须一一对应    B、工具按钮与加速键一一对应

  C、工具按钮不必与菜单一一对应    D、菜单与加速键一一对应

20、使用GetWindowDC( )和GetDC( )获取的设备上下文在退出时,必须调用(    )释放设备上下文。

  A、ReleaseDC( )    B、delete( )     C、DeleteDC( )    D、Detach( )



二、填空题(每空1分,共25分)

1、VC++开发环境中,int型数据占4个字节,short int占_______个字节,long int 占_________个字节。

2、若for循环的“头”为“for(int i=1;i<10;i++)”,并且在循环体中不会修改i的值,则循环体将被重复执行____________次后结束。

3、两个函数的函数名________,但参数的个数或对应参数的类型_________时,则称为重载函数。

4、若ch为char型变量,n为int型变量,则下列语句

ch = ’a’;  n = 3;  ch = ch + n;

cout<<” ch = ”<< ch;

执行的结果是__________。

5、C++中函数的参数传递一种是按值传递,另一种是地址传递或________传递。

6、C++运行时的多态性通过______________来实现,而编译时的多态性通过_____________来实现。

7  只读成员函数用_____________关键字标识,内联成员函数用___________关键字标识。

8、 class test{

        public:

static int x;

};

test t1,t2;   t1.x = 25;

程序运行到这里时,t2.x的值为____________。

9、所有的文档类都派生于________  _______,所有的视图类都派生于:______     _______。

10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了________机制。将公共基类声明为它以后,它在派生类中只产生一个实例。

11、在代码中,使用CWnd::____________函数可实现控件与其成员变量之间的数据的传输。

12、列表框ClistBox类的成员函数______________用来向列表框增加列表项,成员函数____________用来清除列表项所有项目。

13、:_________________ 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。

14、Windows程序中的消息有窗口消息、命令消息和__________消息三种类型。

15、MFC中的集合类包括           、            、             。

16、在进行绘图时,           用于指定图形的填充样式, ________________用于指定图形的边框样式。



三 选择填空题(每空1分,共15分)

1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行    ⑴    的构造函数,接着执行    ⑵    的构造函数,然后执行__ _⑶___的构造函数,最后才执行   ⑷    的构造函数。

A、基类的对象成员    B、派生类的对象成员

C、基类              D、派生类

2、  [5]  代表窗口客户区的显示设备上下文,  [6]  代表整个窗口的显示设备上下文。

A、CPaintDC    B、CClientDC   C、CWindowDC    D、CMetaFileDC

3、消息循环的处理过程如下:

    ⑺   函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,   ⑻   把来自键盘的命令翻译成WM_XXX消息命令形式。   ⑼   函数通知Windows把每个消息分发给相应的窗口函数。应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。

A、GetMessage( )    B、translateMessage( )     C、PostMessage( )

D、SendMessage( )   E、DispatchMessage( )

4、常用的CButton类的成员函数中:   ⑽   获得一个按钮控件的选中、选择和 聚焦状态;   ⑾   得到一个按钮的选中状态;   ⑿   设置一个按钮的选中状态。

  A、GetState( )       B、SetState( )       C、SetCheck( )

  D、GetCheck( )     E、GetButtonStyle( )  

5、滚动条类CScrollBar的成员函数规定了滚动条的操作。设置滚动条的范围使用      ⒀     函数,设置滚动块的位置使用    ⒁     函数,获取滚动块的当前位置使用   ⒂   函数。

A、SetPos      B、SetRange     C、SetScrollRange  D、GetPos

E、SetScrollPos  F、GetScrollPos  G、 GetScrollRange



四 写出下列程序的运行结果(每小题5分,共15分)

1、 .#include<iostream.h>
  class A{
      int *a;
  public:
     A(int x){  a=new int(x);  cout<<"*a="<<*a<<endl;  delete a; }
  };
  void main()
  {
     A x(3), *p;
     p=new A (5);
     delete p;
  }





2、class test{

private:

    int num;

public:

test();

int GetNum() { return num;}

~test();

};

test::test(){  num=0;  }

test::~test()

{   cout<<″Destructor is active″<<endl; }

void main()

{   test x[3];

cout<<″Exiting main″<<endl;

}



3、 #include<iostream.h>

class A {

public:

virtual void fun()

{  cout<<"I'm class A"<<endl; }

};

class B: public A{

public:

void fun()

{  cout<<"I'm class B"<<endl; }

};

class C: public B{

public:

void fun()

{  cout<<"I'm class C"<<endl; }

};

void main()

{

A a,*pA=&a;

pA->fun();

B b;

pA=&b;

pA->fun();

C c;

a=c;

a.fun();

A  &aRef=c;

aRef.fun();

}



五、完成程序题(本大题共3小题,每空2分,共12分)。根据题目要求,完成程序填空。

1、在下面程序的横线处填上适当字句,使该程序执行结果为6。
#include <iostream.h>
class base{
   int X;
public:
    _________[1]__________//为X置值
    _________[2]__________//取X值
};
void main()
{
   base test;
   test.init(6);
   cout<<test.GetNum();
}

2、一个类的头文件如下所示,主程序中产生对象T,且T.num=10,并使用Print()函数输出这个对象的值。

class test{

private:

int num;

public:

    test(int);

void Print();

};

test::test(int n){  num=n; }

void test:rint(){ cout<<num<<endl; }

#include<iostream.h>

void main()

{  ______[3]______________;

   ______[4]______________;

}

3、在下面横线处填上适当字句,完成类中成员函数的定义。

class A{

   int * a;

public:

   A(int x=0) {

       a=_____[5]____________;//用x初始化a所指向的动态对象

   }

   ~A(){_____[6]___________;}//释放动态存储空间

};



六、程序设计题(1题4 分,2题9 分,共13分)



1、简单的计算程序界面如下图所示,操作数1对应编辑框控件的ID为 IDC_EDIT1,对应值类型的成员变量m_op1(int);操作数2对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_op2(int);计算结果对应的编辑框控件的ID 为IDC_EDIT3,对应值类型的成员变量m_result(int)。 假设输入的数为整数,加法按钮的功能是将两操作数相加,并将结果在对应的编辑框IDC_EDIT3显示出来。写出加法按钮对应的代码。


















void CExDlg::OnButton1()

{











}

2、为学员信息设计一个类CStudent,包含:学号、姓名、出生日期、家庭住址、班级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容

TOP

2005—2006学年第一学期

《VC++程序设计》试题答案及评分标准

一、单项选择题(每小题1分,共20分)

题号
1
2
3
4
5
  
6
7
8
9
10

答案
B
B
B
A
D
  
A
A
D
B
B

题号
11
12
13
14
15
  
16
17
18
19
20

答案
D
A
B
C
B
  
C
B
C
C
A




二、填空题(每空1分,共25分)

1、 2、 4       2、  9       3、 相同,不同      4、 ch=d    5、 引用

6、 虚函数 ,函数重载    7、  const 、  inline     8、 25  

9、 Cdocument、  CView   10、 虚基类    11、 UpdateData      

12、 AddString、ResetContent       13、 串行化   

14、 控件通知

15、数组、列表(链表)、映射(顺序可变)

16、画刷、画笔



三 选择填空题(每空1分,共15分)

题号





  





  






答案
A
C
B
D
B
  
C
A
B
E
A
  
D
C
C
E
F




四 写出下列程序的运行结果(每小题5分,共15分)

1、 *a = 3

*a = 5

2、 Exiting main

Destructor is active

Destructor is active

Destructor is active

3、 I'm class A

I'm class B

I'm class A

I'm class C



五、完成程序题(本大题共3小题,每空2分,共12分)。

1、[1]   void init(int i ) { X=i;}    [2]   int GetNum() {  return  X;}

2、[3]  test T ( 10 );             [4]   T.print ( );

3、[5]  new int(x);           [6]   delete a;

六、程序设计题(1题4 分,2题9 分,共13分)

1、 UpdateDate(TRUE);            1分

m_result = m_op1 + m_op2;    2分

UpdateDate(FALSE);           1分



2、 //CStudent.h

class CStudent :public CObject  {        1分

public:

CString Num;

CString Name;

CTime Birth;

CString Address;

CString Grade;                        2分



           DECLARE_SERIAL(CStudent)  // 使对象可串行化     1分

        virtual void Serialize( CArchive & ar ); //重载串行化函数  1分

};



// CStudent.cpp

IMPLEMENT_SERIAL(CStudent ,CObject, 0)     1分

void CStudent:Serialize(CArchive & ar)

{      CObject::Serialize(ar);                         1分

       if ( ar.IsStoring() )

       {      ar<<Num<<Name<< Birth <<Address<<Grade;   1分

       }

       else

       {   ar>>Num>>Name>> Birth >>Address>>Grade;    1分

       }

}

TOP

发新话题