大学c++复习题文档格式.docx

上传人:b****6 文档编号:8533407 上传时间:2023-05-11 格式:DOCX 页数:25 大小:35.45KB
下载 相关 举报
大学c++复习题文档格式.docx_第1页
第1页 / 共25页
大学c++复习题文档格式.docx_第2页
第2页 / 共25页
大学c++复习题文档格式.docx_第3页
第3页 / 共25页
大学c++复习题文档格式.docx_第4页
第4页 / 共25页
大学c++复习题文档格式.docx_第5页
第5页 / 共25页
大学c++复习题文档格式.docx_第6页
第6页 / 共25页
大学c++复习题文档格式.docx_第7页
第7页 / 共25页
大学c++复习题文档格式.docx_第8页
第8页 / 共25页
大学c++复习题文档格式.docx_第9页
第9页 / 共25页
大学c++复习题文档格式.docx_第10页
第10页 / 共25页
大学c++复习题文档格式.docx_第11页
第11页 / 共25页
大学c++复习题文档格式.docx_第12页
第12页 / 共25页
大学c++复习题文档格式.docx_第13页
第13页 / 共25页
大学c++复习题文档格式.docx_第14页
第14页 / 共25页
大学c++复习题文档格式.docx_第15页
第15页 / 共25页
大学c++复习题文档格式.docx_第16页
第16页 / 共25页
大学c++复习题文档格式.docx_第17页
第17页 / 共25页
大学c++复习题文档格式.docx_第18页
第18页 / 共25页
大学c++复习题文档格式.docx_第19页
第19页 / 共25页
大学c++复习题文档格式.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大学c++复习题文档格式.docx

《大学c++复习题文档格式.docx》由会员分享,可在线阅读,更多相关《大学c++复习题文档格式.docx(25页珍藏版)》请在冰点文库上搜索。

大学c++复习题文档格式.docx

) 

intios:

width(intn)2.setw(intn)?

?

12.十进制数0.1的二进制表示是什么?

(0.1)10=(0.000110011...)2,它是无限循环小数。

也就是说,十进制数0.1无法精确用二进制表示!

13.简述程序设计的步骤。

程序设计一般遵循以下步骤:

明确问题;

系统设计;

用某种语言进行编程;

测试与调试;

运行与维护

14.简述编译与解释的区别。

编译是指把高级语言程序首先翻译成功能上等价的机器语言程序或汇编语言程序,然后执行目标代码程序,在目标代码程序的执行中不再需要源程序。

解释则是指对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了,这种翻译方式不产生目标程序。

一般来说,编译执行比解释执行效率要高

15.简述C++程序的编译执行过程

编译过程主要分为4个阶段:

编译预处理;

编译、优化阶段;

汇编过程;

链接程序(?

16.下面哪一些是合法的C++字面常量,它们的类型是什么?

-5.23,1e+50,-25,105,20

.20,e5,1e-5,-0.0e5,'

\n'

-000,'

A'

'

5'

3.14'

false

red,'

\r'

\f'

"

TodayisMonday."

"

\"

"

字面常量是指在程序中直接写出常量值的常量。

-5.23,1e+50,-25,20,.20,1e-5,-0.0e5,'

-000,'

"

都是字面常量。

其中:

整数类型常量:

-25,20,-000

实数类型常量:

-5.23,1e+50,.20,1e-5,-0.0e5

字符常量:

'

字符串常量:

17.什么是符号常量?

符号常量的优点是什么?

符号常量是指有名字的常量,在程序中通过常量的名字来使用这些常量。

程序中使用符号常量有以下优点:

(1)增加程序易读性;

(2)提高程序对常量使用的一致性;

(3)增强程序的易维护性

18.如何理解变量?

变量定义和声明的作用是什么

值可以改变的量叫变量,可变的数据.使用变量前,C++要对变量做声明

19.指针类型主要用于什么场合?

引用类型与指针类型相比,其优势在哪里?

指针类型主要用于参数传递和对动态变量的访问。

在C++中,指针类型还用于访问数组元素,以提高访问效率。

引用类型与指针类型都可以实现通过一个变量访问另一个变量,但访问的语法形式不同:

引用是采用直接访问形式,指针则采用间接访问形式。

在作为函数参数类型时,引用类型参数的实参是一个变量,而指针类型参数的实参是一个变量的地址。

除了在定义时指定的被引用变量外,引用类型变量不能再引用其他变量;

而指针变量定义后可以指向其他同类型的变量。

因此,引用类型比指针类型要安全。

20.constint*p1和int*constp2的区别是什么?

constint*p1是指向常量的指针,指针指向一个常量,无需初始化,指针本身可以改变,但是指针指向的值不能改变。

int*constp2是指向常量的引用,使用时必须初始化,而且初始化后,引用值不可以改变,引用的常量也不能改变。

21.表达式中的类型转换规则是什么?

下面的表达式计算时如何进行操作数类型转换?

(1)3/5*12.3

(2)'

a'

+10*5.2

(3)12U+3.0F*24L

表达式中类型转换规则是:

基于单个操作符依次进行转换。

1)3与5同类型,不转换,结果为0,转换成double型后与12.3做乘法。

2)10转换成double型与5.2做乘法,’a’转换成double型后与前者结果做加法。

22.将下列公式表示成C++的表达式:

(1)

(可利用C++标准库中的求平方根的函数:

sqrt(x))

(-1*b+sqrt(b*b-4*a*c))/(2*a)

sqrt(s*(s-a)*(s-b)*(s-c))

(2)

((a*b)/(c*d))*(3/(1+(b/(2.5+c))))+(4*pi*r*r*r/3)

23.派生类构造函数执行的次序是怎样的?

派生类构造函数执行的一般次序为:

调用基类构造函数;

调用成员对象的构造函数;

派生类的构造函数体中的内容。

24.如果在派生类B已经重载了基类A的什么叫做多态性?

在C++中是如何实现多态的?

多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。

C++支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。

25.一个成员函数fn1(),没有重载成员函数fn2(),如何调用基类的成员函数fn1()、fn2()?

A:

fn1();

fn2();

26.如果类A是类B的友元,类B是类C的友元,类D是类A的派生类,那么类B是类A的友元吗?

类C是类A的友元吗?

类D是类B的友元吗?

类B不是类A的友元,类C不是类A的友元,类D不是类B的友元

二、选择题

1. 

下列的各类函数中, 

不是类的成员函数。

A)构造函数 

 

 B)析构函数 

C)友元函数 

D)拷贝初始化构造函数

2.作用域运算符“:

”的功能是 

A)标识作用域的级别的 

B)指出作用域的范围的 

C)给定作用域的大小的 

D)标识成员是属于哪个类的

3. 

是析构函数的特征。

A)一个类中只能定义一个析构函数

B)析构函数名与类名不同

C)析构函数的定义只能在类体内 

D)析构函数可以有一个或多个参数

4下述静态数据成员的特性中, 

是错误的。

A)说明静态数据成员时前边要加修饰符static 

B)静态数据成员要在类体外进行初始化

C)引用静态数据成员时,要在静态数据成员前加<

类名>

和作用域运算符

D)静态数据成员不是所有对象所共用的

5. 

友元关系不能 

A)是类是与类的关系 

B)是一个类成员函数与另一个类的关系

C)继承 

D)提高程序的运行效率

6.下列关于对象数组的描述中, 

是错的。

A)对象数组的下标是从0开始的 

B)对象数组的数组名是一个常量指针

C)对象数组的每个元素是同一个类的对象 

D)对象数组只能赋初值,而不能被赋值

7. 

下列说明中constchar*ptr;

ptr应该是 

A)指向字符常量的指针 

B)指向字符的常量指针 

C)指向字符串常量的指针 

D)指向字符串的常量指针

8. 

已知:

print()函数是一个类的常成员函数,它无返回值,下列表示中, 

是正确的。

A)voidprint()const;

B)constvoidprint();

C)voidconstprint():

D)voidprint(const);

9. 

关于new运算符的下列描述中, 

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

B)使用它创建的对象或对象数组可以使用运算符delete删除

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

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

10. 

下列对派生类的描述中, 

是错的 

A)一个派生类可以作另一派生类的基类 

B)派生类至少有一个基类

C)派生类的成员除了它自己的成员外,还包含了它的基类的成员

D)派生类中继承的基类成员的访问权限到派生类中保持不变

11. 

派生类的构造函数的成员初始化列表中,不能包含 

A)基类的构造函数 

B)派生类中子对象的初始化 

C)派生类中一般数据成员的初始化 

D)基类的子对象初始化

12. 

设置虚基类的目的是 

A)简化程序 

B)消除二义性 

C)提高运行效率 

D)减少目标代码

13. 

下列函数中, 

不能重载

A)成员函数 

B)非成员函数 

C)析构函数 

D)构造函数

注:

重载函数:

同名不同参(个数、类型、顺序)

14. 

关于动态联编的下列描述中 

是错误的 

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

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

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

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

15. 

关于虚函数的描述中, 

是正确的 

A)虚函数是一个static类型的成员函数

B)虚函数是一个非成员函数

C)基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数

D)派生类的虚函数与基类的虚函数具有不同的参数个数和类型

16. 

下列描述中, 

是抽象类的特性 

A)可以说明虚函数

B)可以进行构造函数重载 

C)可以定义友元函数 

D)不能说明其对象

17. 

在类定义的外部,可以被访问的成员有 

A)所有类成员 

B)private的类成员 

C)public的类成员

D)public或private的类成员

18.下面对构造函数的不正确描述是 

A)系统可以提供默认的构造函数 

B)构造函数可以有参数,所以可以有返回值没有

C)构造函数可以重载 

D)构造函数可以设置默认参数

19. 

在创建派生类对象时,构造函数的执行顺序是 

A)对象成员构造函数、基类构造函数、派生类本身的构造函数

B)派生类本身的构造函数、基类构造函数、对象成员构造函数

C)基类构造函数、派生类本身的构造函数、对象成员构造函数

D)基类构造函数、对象成员构造函数、派生类本身的构造函数

20. 

在C++中,要实现动态联编,必须使用 

调用虚函数 

A)类名 

B)派生类指针 

C)对象名 

D)基类指针

三、运行结果

1.在你的计算机上运行下面的程序:

#include<

iostream>

usingnamespacestd;

intmain()

{doublea=3.3,b=1.1;

inti=a/b;

cout<

<

i<

endl;

return0;

}

结果与你预期的是否相符?

如果不符,请解释它的原因

结果为2。

小数3.3和1.1无法用double型精确表示。

结果比3.0小,所以转换成int型后为2

2.写出下面程序的执行结果:

#include<

intcount=0;

intfib(intn)

{count++;

if(n==1||n==2)

return1;

else

returnfib(n-1)+fib(n-2);

{cout<

fib(8);

'

<

count<

递归。

结果:

21,41

3.#include<

iostream.h>

classCPoint

{public:

CPoint(){X=Y=0;

cout<

”缺省构造(”<

X<

”,”<

Y<

”)\n”;

}

CPoint(intx0,inty0){X=x0;

Y=y0;

cout<

”构造(”<

~CPoint(){cout<

”析构(”<

private:

intX,Y;

};

voidmain()

{CPointp1(3,4),p2;

}

运行结果:

构造(3,4)

缺省构造(0,0)

析构(0,0)

析构(3,4)

4.#include<

classBase

{public:

Base(){cout<

Base"

endl;

classLevel1:

virtualpublicBase

{

public:

Level1(){cout<

Level1"

classLevel2:

Level2(){cout<

Level2"

classToplevel:

publicLevel1,publicLevel2

Toplevel(){cout<

TopLevel"

voidmain(){Toplevelt;

}:

Base

Leve11

Leve12

TopLeve1

5.classB1

B1(inti){cout<

constructingB1"

i<

~B1(){cout<

destructingB1"

classB2

B2(intj){cout<

constructingB2"

j<

}

~B2(){cout<

destructingB2"

classB3

B3(){cout<

constructingB3*"

~B3(){cout<

destructingB3"

classC:

publicB2,publicB1,publicB3

C(inta,intb,intc,intd):

B1(a),memberB2(d),memberB1(c),B2(b){}

private:

B1memberB1;

B2memberB2;

B3memberB3;

{Cobj(1,2,3,4);

constructingB22

constructingB11

constructingB3*

constructingB13

constructingB24

destructingB3

destructingB2

destructingB1

6.编写函数reverse(char*s)的倒序递归程序,使字符串s倒序#include<

参考答案:

string.h>

voidreverse(char*s,char*t)

{charc;

if(s<

t)

{c=*s;

*s=*t;

*t=c;

reverse(++s,--t);

}}

voidreverse(char*s)

{reverse(s,s+strlen(s)-1);

{charstr1[20];

cout<

输入一个字符串:

;

cin>

>

str1;

原字符串为:

str1<

reverse(str1);

倒序反转后为:

程序运行输出:

abcdefghijk

kjihgfedcba

7.定义一个tree类,有成员ages,成员函数grow(intyears)对ages加上years,age()显示tree对象的ages的值。

参考算法:

classTree{

intages;

Tree(intn=0);

//复制构造函数

~Tree();

voidgrow(intyears);

//声明了成员函数

voidage();

Tree:

Tree(intn){//复制构造函数的实现

ages=n;

~Tree(){

age();

voidTree:

grow(intyears){//定义了之前声明的两个函数

ages+=years;

age(){

这棵树的年龄为"

ages<

Treet(12);

t.age();

//需要计算,最后输出。

t.grow(4);

这棵树的年龄为12

这棵树的年龄为16

四、编程题

1.编写一个程序,将华氏温度转换为摄氏温度。

转换公式为:

c=

(f-32),其中,c为摄氏温度,f为华氏温度

解:

{doublec,f;

PleaseinputanF-temperature:

cin>

f;

c=(f-32)*5/9;

TheC-temperatureis:

c<

2.编写一个程序,分别按正向和逆向输出小写字母a~z。

vari:

byte;

begin

fori:

=ord('

)toord('

z'

)do

write(chr(i));

writeln;

)downtoord('

end.

intmain(){

inti;

for(i='

i<

='

i++)//没错!

{

printf("

%c"

i);

i>

i--){

3.编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输出其位数。

{unsignedintZ;

intcount=0;

while

(1)

{cout<

Pleaseinputaninteger(greaterthanzero):

Z;

if(Z<

=0)

Yourinputiswrong!

Pleaseinputagain..."

else

break;

while(Z!

{Z=Z/10;

count++;

Thenumberofdigitsintheintergeris:

4.编写一个程序,求所有这样的三位数,它们等于它们的各位数字的立方和。

例如:

153=13+33+53

#include<

intnum;

inti=0;

Enteranumber:

cin>

num;

while(num>

0)

i++;

num=num/10;

Thisnumberbitsis:

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

当前位置:首页 > 工作范文 > 行政公文

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

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