C++习题监控软件设计嘉兴学院.docx

上传人:b****7 文档编号:15535310 上传时间:2023-07-05 格式:DOCX 页数:17 大小:20.22KB
下载 相关 举报
C++习题监控软件设计嘉兴学院.docx_第1页
第1页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第2页
第2页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第3页
第3页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第4页
第4页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第5页
第5页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第6页
第6页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第7页
第7页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第8页
第8页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第9页
第9页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第10页
第10页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第11页
第11页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第12页
第12页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第13页
第13页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第14页
第14页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第15页
第15页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第16页
第16页 / 共17页
C++习题监控软件设计嘉兴学院.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++习题监控软件设计嘉兴学院.docx

《C++习题监控软件设计嘉兴学院.docx》由会员分享,可在线阅读,更多相关《C++习题监控软件设计嘉兴学院.docx(17页珍藏版)》请在冰点文库上搜索。

C++习题监控软件设计嘉兴学院.docx

C++习题监控软件设计嘉兴学院

一、选择题

(1)C++语言是从早期的C语言逐渐发展演变而来的。

与C语言相比,它在求解问题方法上进行的最大改进是()

A)面向过程      B)面向对象          C)安全性         D)复用性

(2)下面有关重载函数的说法中正确的是()

A)重载函数必须具有不同的返回值类型;  

B)重载函数形参个数必须不同;  

C)重载函数必须有不同的形参列表  

D)重载函数名可以不同;

(3)下列关于构造函数的描述中,错误的是()

A)构造函数可以设置默认参数;       B)构造函数在定义类对象时自动执行  

C)构造函数可以是内联函数;          D)构造函数不可以重载

(4)下面关于C++中类的继承与派生的说法错误的是:

()

A)基类的protected成员在公有派生类的成员函数中可以直接使用

B)基类的protected成员在私有派生类的成员函数中可以直接使用

C) 私有派生时,基类的所有成员访问权限在派生类中保持不变

D)继承可以分为单一继承与多重继承

(5)C++语言中提供内存申请运算符(),它能可靠地控制内存的分配。

A)delete        B)new          C)pos          D)auto

(6)若执行完以下语句,i和j的值分别为()。

int i;

int &j=i;

i=5;

j=i+1;

A)5,5                  B)5,6           C)6,6             D)6,5

(7)类MyClass的定义如下:

classMyClass

{

  public:

MyClass(){value=0;}

SetValue(inti){value=i;}

  private:

        intvalue;

};

则对语句:

MyClass*p,my;p=&my;正确的描述是()。

A)     语句p=&my;是把对象my赋值给指针变量p;

B)      语句MyClass*p,my;会调用两次类MyClass的构造函数

C)     语句*p.SetValue(5)的调用是正确的

D)     语句p->SetValue(5)与my.SetValue(5)等价

(8)通常拷贝构造函数的参数是()。

A) 某个对象名 

B) 某个对象的成员名  

C) 某个对象的引用名

D) 某个对象的指针名

(9)有以下类的定义,其中出错的位置是()。

classCsample

{    Csample();       //A

public:

    inta=10;         //B

    Csample(inta0);  //C

       ~Csample();       //D

};

(10)以下叙述中不正确的是()。

A)在类定义中,通常是用成员变量描述对象的属性;  用成员函数描述对象的行为

B)类的一个成员只能具有一种访问控制属性

C)构造函数和析构函数是特殊的成员函数,因此不允许重载

D)通过对象只能访问类的公有成员

(11)友元函数的作用是()。

A)提高程序的效率                 B)加强类的封装性

C)实现数据的隐蔽性               D)增加成员函数的种类

(12)以下关于派生机制的描述中,不正确的是()。

A)  派生类不仅可以继承基类的成员,也可以添加自己的成员

B)设置protected成员是为派生类访问基类成员之用

C)采用不同的继承方式,将限制派生类对基类成员的使用

D)采用私有继承,派生类只能得到基类的公有成员

(13)设有以下定义:

#include

classA1

{public:

    voidshow1()   {cout<<”classA1”<

};

classA2:

publicA1

{public:

      voidshow2(){cout<<”classA2”<

};

classA3:

protectedA2

{public:

     voidshow3(){cout<<”classA3”<

};

voidmain()

{A1obj1;

A2obj2;

A3obj3;

}

以下不合法的调用语句是()。

A)obj1.show1();                        B)obj2.show1();

C)obj3.show1();                        D)obj2.show2();

(14)下列关于动态联编的描述中,错误的是()。

  A)动态联编是以虚函数为基础

  B)动态联编是运行时确定所调用的函数代码的

  C)动态联编调用函数的操作是通过指向对象的指针或对象引用实现的

  D)动态联编是在编译时确定操作函数的

(15)友元运算符obj1>obj2被C++编译器解释为()。

A)operator>(obj1,obj2)                            B)>(obj1,obj2)

C)obj2.operator>(obj1)                         D)obj1.operator>(obj2)

(16)下面描述中,表达错误的是()。

A)公有继承时基类中的public成员在派生类中仍是public的  

B)公有继承时基类中的private成员在派生类中仍是private的  

C)公有继承时基类中的protected成员在派生类中仍是protected的  

D)私有继承时基类中的public成员在派生类中是private的

(17)一个C++类()。

A)只能有一个构造函数和一个析构函数   B)可以有一个构造函数和多个析构函数

C)可以有多个构造函数和一个析构函数   D)可以有多个构造函数和多个析构函数

(18)派生类的对象对它的基类成员中()是可以访问的。

A) 公有继承的公有成员 

B) 公有继承的私有成员  

C) 公有继承的保护成员

D) 私有继承的公有成员

(19)有关析构函数的说法不正确的是()。

A) 析构函数有且只有一个 

B) 析构函数无任何函数类型  

C) 析构函数和构造函数一样可以有形参

D) 析构函数的作用是在对象被撤销时收回先前分配的内存空间

(20)以下属于析构函数特征的是(   )

A)析构函数名与类名不能相同    B)析构函数的定义必须在类体内

C)析构函数可以带或不带参数    D)在一个类中析构函数有且仅有一个

(21)设有以下类和对象的定义:

classA

{public:

    intm;

...

};

Ak1,k2,*p1,*p2;

则下面针对成员变量m的引用,正确的是(   )

A)k1.m=1;    B)k2->m=2;    C)p1.m=3;  D)(*p2)->m=4;

(22) 以下有关成员函数特征的叙述不正确的是(       )

A)成员函数一定是内联函数          B)成员函数可以重载

C)成员函数可以设置缺省数值        D)成员函数可以是静态的

(23)以下叙述中不正确的是(       )

A)一个类的友元函数可以无条件的使用这个类的私有成员

B)  静态成员函数可以直接访问非静态数据成员

C)不可以声明抽象类的对象,但可以声明抽象类的指针变量

D)静态数据成员为类的所有对象所共享

(24) 以下为Cint类的私有变量n赋初值的形式中不正确的是(   )

A)    classCint                   B)classCint

{  intn;                          {   intn;

   Cint():

n(0){}                        Cint(intv):

n(v){}

   …                                 ….

};                                };

C)classCint                     D)classCint

{  intn=10;                       {  intn;

  …                                Cint(intm=10):

{n=m;}

};                                   …

                                  };};

(25)对new运算符的下列描述中,(   )是错误的。

A)  它可以动态创建对象和对象数组

B)   用它创建对象数组时必须指定初始值

C)  用它创建对象时要调用构造函数

D)  用它创建的对象可以使用运算符delete来释放

 

二、填空

1)在用class定义一个类时,数据成员和成员函数的默认访问权限是 ⑴。

2)已知intDBL(int n){return n + n;}和longDBL(long n){return n+n;}是一个函数模板的两个实例,则该函数模板的定义是⑵。

3)类是对象的 ⑶;而对象则是类的⑷。

4)定义内联函数所用的关键字⑸,定义友元所用的关键字为⑹。

5)如类中没有明确定义析构函数,清除对象的工作由⑺来完成,原因是⑻。

6)生成一个派生类对象时,先调用⑼的构造函数,然后调用⑽的构造函数。

7)在继承关系中,⑾称为多重继承,⑿称为单继承。

8)若在I/O流的输出中使用控制符setfill()设置填充字符,应包含的头文件是⒀。

9)在私有继承关系下,基类的公有成员和保护成员将成为派生类中的⒁成员,它们只能由⒂来访问。

10)设A为test类的对象且赋有初值,则语句testB(A); 表示⒃。

11)在MFC应用程序中,⒄方法使得程序员可以不直接面对一个物理文件而进行文档的读写。

12)应用程序框架中,除⒅类以外都有统一的命名规则。

13)视图类成员函数OnDraw()的作用是⒆。

14)ClassWizard类向导的⒇页面主要用来为对话框类添加和删除与对话框控件关联的成员变量。

15)类是对象的 

(1) ;而对象则是类的具体

(2)。

16)在C++中定义类时,通常是利用(3)描述对象的“特征”;利用(4) 描述对象的“行为”。

17)在私有继承关系下,基类的公有成员和保护成员将成为派生类中的(5)成员,它们只能由派生类的(6)来访问;基类的私有成员将成为派生类中的(7)成员。

18)利用“对象名.成员变量”形式访问的对象成员仅限于被声明为(8)的成员;若要访问其他成员变量,需要通过(9)函数或(10)函数。

19)单目运算符作为类成员函数重载时有(11)形参;双目运算符作为(12)重载时只需声明其右操作数,作为(13)重载时需声明全部操作数。

20)除(14)类以外,应用程序框架中类的命名规则一般遵照如下要求:

(15)

21)MFC中的(16)结构用于数据处理工作,其中(17)用于管理和维护数据,(18)用来显示和编辑数据。

22)有关对话框的常用成员函数中,(19)用来显示对话框窗口,(20)用来实现对话框数据交换。

三、程序分析题

1、写出下列程序的运行结果

#include

classCSample

{

public:

CSample();

voidDisplay();

private:

inti;

staticintk;

};

CSample:

:

CSample()

{

i=0;

k++;

}

voidCSample:

:

Display()

{

cout<<"i="<

}

intCSample:

:

k=0;

voidmain()

{

CSamplea,b;

a.Display();

b.Display();

}

 

2、写出下列程序的运行结果

#include

#include

classperson

{

intage;

charname[10];

public:

voidinit(inti,char*str)

{

age=i;

strcpy(name,str);

}

voiddisplay()

{

cout<

}

};

voidmain()

{

persondemo;

demo.init(30,"li-ming");

demo.display();

}

3、写出下列程序的运行结果

#include

classbase

{

public:

virtualvoidshow()

{cout<<"classbaseshow()iscalled.\n";}

};

classderived:

publicbase

{

public:

voidshow()

{cout<<"classderivedshow()iscalled.\n";}

};

voiddisplay(base*obj)

{obj->show();}

voidmain()

{

basedemo1;

deriveddemo2;

display(&demo1);

display(&demo2);

}

 

4、指出下列程序的错误,并说明原因。

#include

classA{

public:

       voidA(int i=0){m=i;}

       voidshow(){cout<

       void~A(){}

private:

       int m;

};

voidmain()

{

       A a(5);

       a.m+=10;

       a.show();

}

5、分析找出以下程序中的错误,说明错误原因,给出两种修改方案使之能正确运行。

#include

classPoint

{

intx,y;

public:

Point(inta=0,intb=0){x=a;y=b;}

voidmove(intxoffset,intyoffset){x+=xoffset;y+=yoffset;}

intgetx(){returnx;}

intgety(){returny;}

};

classRectangle:

protectedPoint

{

intlength,width;

public:

Rectangle(intx,inty,intl,intw):

Point(x,y)

{length=l;width=w;}

intgetlength(){returnlength;}

intgetwidth(){returnwidth;}

};

voidmain()

{

Rectangler(0,0,8,4);

r.move(23,56);

cout<

}

6、指出下列程序段中的错误,并说明错误原因。

    classX//1

{

public:

//2

intreadme()const{returnm;}//3

voidwriteme(inti){m=i;}//4

private:

//5

intm;//6

};//7

voidf(X&x1,constX&x2)//8

{

x1.readme();//9

x1.writeme

(1);//10

x2.readme();//11

x2.writeme

(2);//12

}//13

7写出下列程序的运行结果

#include

classB

{

public:

B(){};

B(inti,intj);

voidprintb();

private:

inta,b;

};

classA

{

public:

A(){};

A(inti,intj);

voidprinta();

private:

Bc;

};

A:

:

A(inti,intj):

c(i,j)

{};

voidA:

:

printa()

{

c.printb();

}

B:

:

B(inti,intj)

{

a=i;b=j;

}

voidB:

:

printb()

{

cout<<"a="<

}

voidmain()

{

Am(7,8);

m.printa();

}

8、写出下列程序的运行结果

#include

#include

classperson

{

intage;

char*name;

public:

person(inti,char*str)

{

intj;

j=strlen(str)+1;

name=newchar[j];

strcpy(name,str);

age=i;

}

~person()

{

deletename;

cout<<"destructoriscalled.\n";

}

voiddisplay()

{cout<

};

voidmain()

{

persondemo(30,"Li-ming");

demo.display();

}

9、写出下列程序的运行结果

#include

classbase

{

public:

virtualvoidshow()

{cout<<"classbaseshow()iscalled.\n";}

};

classderived:

publicbase

{

public:

voidshow()

{cout<<"classderivedshow()iscalled.\n";}

};

voiddisplay(base*obj)

{obj->show();}

voidmain()

{

basedemo1;

deriveddemo2;

display(&demo1);

display(&demo2);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2