C++程序设计复习提纲+1文档格式.docx

上传人:b****5 文档编号:16895491 上传时间:2022-11-26 格式:DOCX 页数:17 大小:25.11KB
下载 相关 举报
C++程序设计复习提纲+1文档格式.docx_第1页
第1页 / 共17页
C++程序设计复习提纲+1文档格式.docx_第2页
第2页 / 共17页
C++程序设计复习提纲+1文档格式.docx_第3页
第3页 / 共17页
C++程序设计复习提纲+1文档格式.docx_第4页
第4页 / 共17页
C++程序设计复习提纲+1文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++程序设计复习提纲+1文档格式.docx

《C++程序设计复习提纲+1文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计复习提纲+1文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

C++程序设计复习提纲+1文档格式.docx

B.调用该函数时系统随机产生的类型

C.调用该函数时的主调用函数类型

D.在定义该函数时所指定的数据类型

9、下面关于break语句的描述中,不正确的是。

A.break可以用于循环体内

B.break语句可以在for循环语句中出现多次

C.break语句可以在switch语句中出现多次

D.break语句可用于if条件判断语句内

10、下列说法正确的是。

A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义

11、C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是。

A.增加了一些新的运算符

B.允许函数重载,并允许设置缺省参数

C.规定函数说明符必须用原型

D.引进了类和对象的概念

12、下面关于类和对象的描述中,错误的是。

A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量

B.类和对象之间的关系是抽象和具体的关系

C.对象是类的实例,一个对象必须属于一个已知的类

D.类是具有共同行为的若干对象的统一描述体

13、在C++语言中,数据封装要解决的问题是。

A.数据的规范化B.便于数据转换

B.避免数据丢失D.防止不同模块之间数据的非法访问

14、假定a为一个整型数组名,则元素a[4]的字节地址为。

A.A.a+4 

B.a+8 

C.a+16 

D.a+32

15、设有数组定义:

chararray[]="

China"

;

,则数组array所占的空间为。

A.A.4个字节 

B.5个字节 

C.6个字节 

D.7个字节

16、若已定义:

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中0≤i≤9,则对a数组元素不正确的引用是。

A.A.a[p-a] 

B.*(&

a[i]) 

C.p[i] 

D.a[10]

17、在下面的一维数组定义中,哪一个有语法错误。

B

A.inta[]={1,2,3};

B.inta[];

C.inta[10]={0};

D.inta[5];

18、下面程序错误的语句是。

BD

A.①#include<

iostream>

B.②voidmain()

C.③{

D.④int*p=newint[1];

E.⑤p=9;

F.⑥cout<

<

*p<

endl;

G.⑦delete[]p

H.⑧}

④ 

B. 

⑤ 

C. 

⑥ 

D. 

19、下面程序错误的语句是。

D.④intA[]={0,1,2};

E.⑤int*p=A;

G.⑦deletep

20、对于结构中定义的成员,其隐含访问权限为。

A.publicB.protectedC.privateD.static

21、对于类中定义的成员,其隐含访问权限为。

C

A.A.publicA.protectedC.privateD.static

22、对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是。

A.公有类型

B.私有类型

C.保护类型

D.友元类型

23、类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是。

A.友元函数

B.虚函数

C.构造函数

D.析构函数

24、类的析构函数的作用是。

A.一般成员函数的初始化

B.类的初始化

C.对象的初始化

D.删除类创建的对象

25、一个类的友元函数能够访问该类的。

A.所有成员 

B.保护成员 

C.公有成员 

D. 

私有成员

26、对类的构造函数和析构函数描述正确的是。

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

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

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

D.构造函数不能重载,析构函数也不能重载

27、关于构造函数说法不正确的是。

A.构造函数必须与类同名B.构造函数可以省略不写

C.构造函数必须有返回值D.在构造函数中可以对类中的成员进行初始化

28、类的析构函数的作用是。

A.一般成员函数的初始化B.类的初始化

C.对象的初始化D.删除类创建的对象

29、假定AB为一个类,则执行“AB 

a(4),b[3],*p[2];

”语句时,自动调用该类构造函数的次数为。

A.3 

B.4 

C.6 

D.9

30、假定AB为一个类,则该类的拷贝构造函数的声明语句为。

C

A.AB&

(ABx);

B.AB(ABx)C.AB(AB&

);

D.AB(AB*x)

31、如果类A被说明成类B的友元,则。

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类B不一定是类A的友元

D.类A的成员函数不得访问类B的成员

32、下面对于友元函数描述正确的是。

A.友元函数的实现必须在类的内部定义

B.友元函数是类的成员函数

C.友元函数破坏了类的封装性和隐藏性

D.友元函数不能访问类的私有成员

33、下列关于C++语言类的描述中错误的是。

A.类用于描述事物的属性和对事物的操作

B.类与类之间通过封装而具有明确的独立性

C.类与类之间必须是平等的关系,而不能组成层次结构

D.类与类之间可以通过一些方法进行通信和联络

34、可以用p.a的形式访问派生类对象P的基类成员a,其中a是。

A.私有继承的公有成员B.公有继承的私有成员

B.公有继承的保护成员 

D.公有继承的公有成员

35、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是。

A.派生类的对象可以赋给基类的对象 

B.派生类的对象可以初始化基类的引用

C.派生类的对象的地址可以赋给指向基类的指针

D.派生类的对象可以直接访问基类中的成员 

36、建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为。

A.abc 

  B.acb 

  C.cab  D.cba

37、下面对静态数据成员的描述中,正确的是。

A.静态数据成员可以直接用类名调用

B.静态数据成员不可以被类的对象调用

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以在类体内进行初始化

38、下面对静态数据成员的描述中,正确的是。

A.静态数据成员是类的所有对象共享的数据

B.类的每个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值 

D.静态数据成员不能通过类的对象调用

39、下面关于虚函数的描述,错误的是。

A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数

B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数

C.虚函数可以是另一个类的友元函数,但不能是静态成员函数

D.基类中说明的纯虚函数在其任何派生类中都必须实现

40、在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是。

A.一元成员运算符B.二元成员运算符

B.一元友元运算符D.选项B和选项C都可能

41、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为。

AB 

operator+(AB 

a,AB 

b)B. 

a)

a)D. 

operator+()

42、下列运算符中,在C++语言中不能重载的是。

A.A.* 

B.>

C.:

D./

43、下面关于模板的描述,错误的是。

A.函数模板和类模板的参数可以是任意的数据类型

B.类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用

C.函数模板不能直接使用,需要实例化为模板函数后才能使用

D.类模板的成员函数都是模板函数

44、当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为。

A.ios:

:

inB.ios:

outC.ios:

in|ios:

outD.没有

二、填空题(10空*1分=10分)

1、开发一个C++语言程序的步骤通常包括编辑、 

编译 

、链接、运行和调试。

2、cout.put('

A'

,还可以表示为 

cout<

’A’;

3、C++语言中的每条基本语句以 

分号 

作为结束符,每条复合语句以 

右花括号 

作为结束符。

4、函数的递归调用是指函数直接或间接地调用自身。

5、在C++语言中,访问一个对象的成员所用的运算符是 

点号,访问一个指针所指向的对象的成员所用的运算符是 

右箭头。

6、C++语言提供的基本控制结构可以分为3种类型:

顺序结构、 

选择结构 

、和循环结构。

7、若x=5,y=10,则x>

y和x<

=y的逻辑值分别为0和1。

8、执行“cout 

<

char('

+2)<

”语句后得到的输出结果为 

9、已知'

'

Z'

的ASCII码为6590,当执行“charch=14*5+2;

cout<

ch<

”语句序列后,得到的输出结果为__H__。

10、float和double类型的大小分别为 

和 

11、关系表达式x+y>

5的相反表达式为 

x+y<

=5 

12、假定一个一维数组的定义为“char 

*a[8];

”,则该数组所含元素的个数为 

,则该数组所占存储空间数为 

32 

字节 

13、假定一个结构类型定义为“struct 

D{int 

a;

union{int 

b;

double 

c;

};

*d[2];

”,则该类型的大小为 

20 

字节。

14、变量分为全局和局部两种, 

局部 

变量没有赋初值时,其值是不确定的。

15、使用const语句定义一个标识符常量时,则必须对它同时进行__初始化___。

16、通过一个常对象只能调用它的常成员函数,不能调用其他成员函数。

17、通过使用new和delete两个运算符进行的分配为 

动态 

存储分配。

18、假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;

”语句后,p所指对象的值为__26___。

19、假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->

*b。

20、假定a是一个二维数组,则a[i][j]的指针访问方式为 

*(*(a+i)+j) 

21、假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为a+N*i。

22、如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该

是指针类型或引用类型。

23、进行函数重载时,被重载的同名函数如果都没有用const修饰,则它们的形参个数或类型必须不同。

24、在类中必须声明成员函数的原型,成员函数的定义部分可以写在类外。

25、对一个类中的数据成员的初始化可以通过构造函数中的 

函数体 

实现,也可以通过构造函数中的 

初始化列表 

实现。

26、拷贝构造函数的形参必须是本身对象的引用。

27、设px是指向一个类动态对象的指针变量,则执行”deletepx;

”语句时,将自动调用该类的___析构函数__。

28、若需要把一个函数”voidF();

”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:

__friendvoidF();

___。

29、继承的方式有公有继承、私有继承和 

保护继承 

3种。

30、类成员的访问控制属性有公有类型,私有类型和保护类型3种。

31、类模板的使用实际是将类模板实例化成一个具体的 

类。

32、抽象类只能作为基类使用,而不能声明它的对象。

33、如果类B继承了类A,则称类A为类B的基类,类B称为类A的 

派生类。

34、在面向对象方法中,类之间共享属性和操作的机制称为 

继承 

35、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 

AB:

bb 

36、假定AB为一个类,则执行“AB 

a(4),b[10],*p[2];

”语句时,系统自动调用该类的构造函数的次数为 

11 

37、假定AB为一个类,则执行“AB 

a[10];

10 

38、将x+y中的+运算符用友元函数重载应写为friendoperator+(x,y)。

三、设计题(2题*10分=20分)(三选二)

1、编写一个简单程序,要求:

用while循环实现从键盘上输入20个整数并放入数组;

求出数组元素的最大值及数组的平均值并输出。

(有改动)

#include<

voidmain()

{

intn[20];

inti=0,s;

while(i<

20)

{

cin>

>

n[i];

i++;

}

i=0;

if(max>

n[i])

{

max=n[i];

}

s=s+n[i];

"

themax:

max<

thearray:

s/20<

}

2、寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。

(回文:

各位数字左右对称的整数。

例如:

11满足上述条件112=121,113=1331)(或者参考书p66)

intf(inta)

ints=0;

while(a>

0)

s=s*10+a%10;

a=a/10;

return(s);

intm;

for(m=11;

m<

=999;

m++)

if(m==f(m)&

m*m==f(m*m)&

m*m*m==f(m*m*m))

cout<

3、声明并实现一个矩形(Rectangle)类,有长(Length)、宽(Width)两个属性,无参构造函数,带参数构造函数、拷贝构造函数、析构函数、计算矩形的周长的成员函数Get_Circumference()和计算矩形的面积的成员函数Get_Area()

classrectangle

private:

doublelength;

doublewidth;

public:

rectangle()

length=0;

width=0;

rectangle(intl,intw)

length=l;

width=w;

rectangle(rectangle&

r)

length=r.length;

width=r.width;

~rectangle(){};

doubleget_circumference(void)

return((length+width)*2);

doubleget_area(void)

return(length*width);

};

4、声明并实现一个圆(Circle)类,有数据成员半径(Radius)、无参构造函数,带参数构造函数、拷贝构造函数、析构函数、计算圆周长的成员函数Get_Circumference()和计算圆的面积的成员函数Get_Area()。

(三、四两题可以对照着看)

classcircle

doubleradius;

circle()

radius=0;

circle(intl)

radius=l;

circle(circle&

radius=r.radius;

~circle(){};

return(2*radius*3.1415926);

return(3.1415926*radius*radius);

5、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a.dat”中。

(-1是否被保存?

fstream>

ofstreamofs1("

a.dat"

ios:

out);

//书上貌似不太对,没有ios_base

inta[100];

inti=0,j;

do

cin>

j;

a[i]=j;

}while(j!

=-1);

ofs1<

a[i]<

"

}while(a[i]!

ofs1.close();

6、从文件a.dat中依次读取每个字符串(假设每个字符串的长度均小于20)并输出到屏幕上显示出来,同时统计并显示出文件中的字符串个数。

ifstreamifs1("

in);

//书上貌似不太,对没有ios_base

chara[20];

while(ifs1.eof()==0)//ifs1.eof是检测是否到达文件末尾的函数

ifs1>

a;

cout<

a<

s++;

totalchars:

s;

ifs1.close();

7、定义一个处理日期的类TDate,它有3个私有数据成员:

Month,Day,Year和若干个公有成员函数,并实现如下要求:

无参构造函数、带默认参数构造函数、拷贝构造函数、析构函数、定义一个友元函数来打印日期、定义一个非静态成员函数设置日期。

classtdate

intmonth;

intday;

intyear;

tdate()

month=0;

day=0;

year=0;

tdate(inty,intm=0,intd=0)

day=d;

month=m;

year=y;

tdate(tdate&

t)

month=t.month;

day=t.day;

year=t.year;

~tdate(){};

friendvoidpdate(tdate&

voidmdate(inty,intm,intd)

voidpdate(tdate&

year:

t.year<

month:

t.month<

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1