C++复习 答案.docx

上传人:b****7 文档编号:9026174 上传时间:2023-02-02 格式:DOCX 页数:24 大小:26.73KB
下载 相关 举报
C++复习 答案.docx_第1页
第1页 / 共24页
C++复习 答案.docx_第2页
第2页 / 共24页
C++复习 答案.docx_第3页
第3页 / 共24页
C++复习 答案.docx_第4页
第4页 / 共24页
C++复习 答案.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C++复习 答案.docx

《C++复习 答案.docx》由会员分享,可在线阅读,更多相关《C++复习 答案.docx(24页珍藏版)》请在冰豆网上搜索。

C++复习 答案.docx

C++复习答案

基本知识

1.1选择题

1.C++源程序文件的扩展名为A。

A).CPPB).CC).DDLD).EXE

2.D不是C++语言的基本数据类型。

A)字符类型B)整数类型C)逻辑类型D)枚举类型

3.下列表达式的值为false的是C

A)1<3&&5<7B)!

(2>4)C)3&0&&1D)!

(5<8)||(2<8)

4.在C++语言里,一条语句以B字符作为结束符。

A),B);C).D)无符号

5.下面对枚举类型的描述正确的是C。

A)枚举类型的定义为:

enum{Monday,Tuesday,Wednesday,Thursday,Friday}Day;

B)在C++语言中,用户自定义的枚举类型的第一个常量的默认值是1

C)可以定义如下枚举类型:

enum{Monday,Tuesday,Wednesday=5,Thursday,Friday=5};

D)以上说法都不正确

6.定义如下变量:

inti=2;intj=3;则i/j的结果为B。

A)0.66667B)0C)0.7D)0.66666666……

7.有如下数组声明:

intvalues[30];,下标值引用错误的是A。

A)values[30]B)values[20]C)values[10]D)values[0]

8.下列描述正确的是D。

A)表示m>n为false或mn&&m

B)switch语句结构中必须有default语句

C)if语句结构中必须有else语句

D)如果至少有一个操作数为true,则包含║运算符的表达式为true

9.下列关于指针运算的描述错误的是A。

A)在一定条件下,两个指针可以相加

B)在一定条件下,两个指针可以进行逻辑判断

C)在一定条件下,指针可以为空值

D)在一定条件下,两个指针可以相互赋值

10.下列对变量的引用错误的是C。

A)inta;int&p=a:

B)chara;char&p=a

C)inta;int&p;p=a;

D)floata;float&p=a;

1.2填空题

11.程序文件的编译错误分为语法错误和连接错误。

12.字符串类型的变量一般用字符指针和数组类型的变量表示。

13.空字符串的长度是0。

14.设intx=10,则表达式x<=10?

20:

30的值为20。

15.一个指针类型的对象占用内存的4个字节的存储空间。

16.除了在函数参数是引用类型和函数返回类型时对变量的引用的情况下,定义引用变量必须初始化。

17.对于嵌套的if…else语句,C++语法规定else总是与离它最近的且尚未配对的if语句匹配。

18.下列程序计算出0到9之间的任意3个不相同的数字组成的三位数共有多少种不同的组合方式。

请完成下列程序。

#include

Voidmain()

{

Inti,j,k,count=0;

For(i=9;i>=1;i…)

For(j=9;j>=0;j…)

If(i==j)continue;

else

For(k=0;k<=9;k++)

If((k!

=i)&&(k!

=j))count++;

Cout<

}

1.3阅读程序

19.写成下列程序的运行结果。

#include

Voidmain()

{

Inta[2][2]={1,2,3,4},*p;

P=a[0]+1;

Cout<<*p<

}

答案:

2

20.写出下列程序的运行结果。

#include

Voidmain()

{

Inti,j;

For(i=5;i>0;i--)

{

For(j=i;j>0;j--)

Cout<<"*";

Cout<

}

}

答案:

*****

****

***

**

*

1.4编写程序

21.已知一个三角形中三条边的长度分别为a,b和c,请利用下列公式求出三角形的面积

,其中s=(a+b+c)/2。

注意:

构成三角形的条件是三角形任意两条边长度之和大于第三条边。

22.直角三角形的三条边满足勾股定律:

两条直角边的平方和等于斜边的平方。

编写程序,找出三条边的长度都小于50的所有直角三角形。

函数

2.1选择题

23.当一个函数无返回值时,函数的类型应为B。

A)任意B)voidC)intD)char

24.在C++语言中函数返回值的类型时由C决定的。

A)调用该函数时系统临时B)return语句中的表达式类型

C)定义该函数时所指定的函数类型D)调用该函数时的主调函数类型

25.在不同文件的函数中,对全局变量的引用要加上D关键字。

A)registerB)autoC)staticD)extern

26.不能实现函数之间数据传递的是B。

A)全局变量B)局部变量C)函数接口D)函数返回值

27.对下列程序段的描述正确的是A。

#include

IntFun(intx,inty)

{

Returnx+y;

}

Voidmain()

{

Inti+10;

Cout<

}

A)程序输出结果不能确定B)程序输出结果是20

C)程序输出结果是21D)程序输出结果是22

2.2填空题

28.函数的调用方式分为两种:

传值调用和引用调用。

其中,传值调用又根据C++中变量值的不同分为:

传递变量本身值的调用和传递变量地址的传址调用。

29.在调用一个函数的过程中可以直接或间接地调用该函数,这种调用称为递归调用,该函数称为递归函数。

30.假定一个函数的参数说明为intx[],则等价的指针参数说明为int*x。

31.下面的函数Fun将一个整数字符串转换为一个整数。

请完成下列函数定义。

#include

IntFun(char*str)

{

Intnum,digital,len;

Num=0//给变量num赋初值

Len=strlen(str);

While(*str!

=NULL)

{

Difital=*str-'0';

For(inti=0;i

Digital*=10;

Len--;

Str++

Num+=digital;

}

Return

}

2.3阅读程序

32.阅读下列程序,找出程序中的错误,并说明错误原因。

Int&Fun(intindex,inta[])

{

Intr=a[index];

Returnr;

}

答案:

函数Fun的返回值为int&,即返回值对int型的引用。

由于变量r是局部变量,因此它的作用域在Fun函数调用完毕之后就结束了,它所占用的内存空间也将被释放。

因此,不能返回对局部变量的引用。

33.写出下列程序的运行结果。

#include

voidFun1(int*x,int*y)

{

Intp;

P=*x;

*x=*y;

*y=p;

}

voidFun2(int*x,int*y)

{

Int*p;

P=x;

x=y;

y=p;

}

Voidmain()

{

Inta=5,b=10;

Fun1(&a,&b);

Cout<

Fun2(&a,&b);

Cout<

}

答案:

105

105

34.写出下列程序的运行结果。

#include

IntFun(int*x)

{

Cout<

If(x<=o)

{

Cout<

Return0;

}

Else

Returnx*x+Fun(x-1);

}

Voidmain()

{

Intx=Fun(6);

Cout<

}

答案:

6543210

91

35.写出下列程序的运行结果。

#include

Intf(inta)

{

Return++a;

}

Intg(int&a)

{

Return++a;

}

Voidmain()

{

Intm=0,n=0;

M+=f(g(m));

N+=f(f(n));

Cout<<"m="<

Cout<<"n="<

}

答案:

M=3

N=2

2.4编写程序

36.编写一个函数,该函数返回给定字符串大写字母字符的个数。

例如,字符串“ChineseComputerWrold”中,大写字母字符的个数为3个。

37.编写一个函数,求输入的两个自然数的最大公约数。

38.编写一个函数Strlen(char*s),求字符串s的长度,并进行测试。

类与对象

3.1选择题

39.对类的构造函数和析构函数描述正确的是A。

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

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

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

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

40.下面对于友元函数描述正确的是C。

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

B)友元函数时类的成员函数

C)友元函数破坏了类的封装性和隐蔽性

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

41.下面对静态数据成员的描述中,正确的是D。

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

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

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

D)静态数据成员可以直接用类名调用

3.2填空题

42.在C语言中,编程的单位是函数;在C++语言中,编程的单位是类。

43.在结构定义中,数据和成员函数默认权限是公有(public)。

在类定义中,数据和成员函数默认权限是私有(private)。

44.new运算符对指定类型对象动态分配内存并返回该类型的指针。

45.非成员函数应声明为类的友元函数才能访问这个类的private成员。

46.完成下面的类定义。

ClassMyClass

{

Public;

MyClass(){x=0;}

friendIntGetNum(MyClassmy);

Private;

Intx;

};

IntGetNum(MyClassmy)

{

Returnmy.x;

}

3.3阅读程序

47.阅读下面类的定义,找出程序中的错误,并说明错误原因。

Classmy

{

Public;

Mya;

Private;

Intx;

};

答案:

语句Mya;错误。

编译器在处理一个定义性声明的类时,在没有遇到标识声明结束的右花括号之前,所声明的类名是引用性声明。

引用性声明的类名不能用于那些导致建立对象的声明中。

这是因为对应程序中声明的每一个对象,编译器都要确定存储的布局。

3.4编写程序

48.设计一个类CRectangle,要求如下所述。

(1)该类中的私有成员变量存放Rectangle的长和宽,并且设置它们的默认值是1.

(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。

(3)求周长Perimeter。

49.定义一个类Student记录学生计算机课程的成绩。

要求使用静态成员变量或静态成员函数计算全班学生计算机课程的总成绩和平均成绩。

类与对象的高级操作

4.1选择题

50.假定MyClass为一个类,则执行MyClassa[3],*p[2];语句时,自动调用该类构造函数B次

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

类MyClass的定义如下:

ClassMyClass

{

Public;

MyClass(){}

MyClass(inti){value=newint(i);}

Int*value;

};

51.若要对value赋值,则下面语句正确的是D。

A)MyClassmy;my.value=10;

B)MyClassmy;*my.value=10;

C)MyClassmy;my.*value=10;

D)MyClassmy(10)

52.关于new运算符的错误的描述是A。

A)使用运算符new创建对象数组必须定义初始值

B)使用运算符new创建对象时,会调用类的构造函数

C)运算符new可以用来动态创建对象和对象数值

D)使用new运算符创建的对象可以使用运算符delete删除

4.2填空题

53.常量对象应初始化,并且不能在生成之后修改。

54.指向数组的指针是指该指针指向一个数组。

55.有如下定义语句:

MyClassp[10];则系统自动调用该类构造函数10次。

当类对象数组p离开它的作用域时,系统自动调用该类析构函数10次。

4.3阅读程序

56.写出下列程序的运行结果。

#include

classMY_CLASS

{

Public:

VoidDisplayMessage(constchar*Text,intType)

{

Cout<<"Message:

Text="<

Cout<<"Text="<

}

VoidDisplayMessage(constchar*Text,unsignedintType)

{

Cout<<"Message:

Text="<

Cout<<"Text="<

}

};

Voidmain()

{

Unsignedcharvalue=0;

MyClassmy;

My.DisplayMessage("Hello!

",value);

}

答案:

Message:

TextoHello!

Text=10

57.写出下列程序的运行结果。

#include

classMYClass

{

Public:

MyClass(inta){x=a;}

VoidFun1{x++;}

VoidFun2{x+=2;}

VoidFun3{x+=3;}

VoidPrint(){cout<<"x="<

Private:

Intx;

};

Voidmain()

{

MyClassmy(8);

Void(MyClass:

:

*pf)();

My,Print();

Pf=MyClass:

:

Fun1;

(my,*pf)();

My,Print();

Pf=MyClass:

:

Fun2;

(my,*pf)();

My,Print();

Pf=MyClass:

:

Fun3;

(my,*pf)();

My,Print();

}

答案:

X=8

X=9

X=11

X=14

运算符重载

5.1选择题

58.下了运算符中,A运算符在C++中不能重载。

A)?

:

B)[]C)newD)&&

59.下面对C++运算符的正确的描述是D。

A)只有类成员运算符B)只有友元运算符

C)只有非成员和非友元运算符D)上述三者都有

60.下列关于运算符重载的描述中,正确的是D。

A)运算符重载可以改变运算符的操作数的个数

B)运算符重载可以改变优先级

C)运算符重载可以改变结合性

D)运算符重载不可以改变语法结构

5.2填空题

61.单目运算符作为类成员函数重载时没有行参;双目运算符作为类成员函数重载时需要声明其右操作数,作为友元函数重载时需声明全部操作数。

62.利用成员函数对二元运算符重载,其左操作数为this指针,右操作数为成员函数参数。

63.通过重载函数调用运算符实现下列数字函数的抽象:

F(x,y)=ax2+by+c

继承与派生

6.1选择题

64.C++语言建立类族是通过C实现的。

A)类的嵌套B)虚函数C)类的继承D)抽象类

65.下列对基类和派生类关系的描述中,错误的是B。

A)派生类是基类的具体化B)派生类是基类的子集

C)派生类是基类定义的延续D)派生类是基类的组合

66.派生类的对象对它的基类成员中A是可以访问的。

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

C)公有继承的保护成员D)私有继承的公有成员

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

A)基类的构造函数B)派生类中子对象的初始化

C)基类中子对象的初始化D)派生类中一般数据成员的初始化

68.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化D

A)与虚基类下面的派生类个数有关B)多次C)两次D)一次

69.下面叙述错误的是C。

A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的

C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合

6.2填空题

70.派生类可以调用其基类中不具备的数据和操作。

71.C++提供的多继承机制允许一个派生类继承多个基类,即使这些基类是相互无关的。

72.当用protected继承从基类派生一个类时,基类的public成员成为派生类的保护protected成员,protected成员成为派生类的保护protectde成员。

73.当撤销一个含有基类和子对象成员的派生类对象时,将首先完成派生类的析构函数定义体的执行,接着完成子对象成员的析构函数定义体的执行,最后完成基类的析构函数定义体的执行。

74.指向基类的对象的指针变量也可以指向派生类的对象。

6.3阅读程序

75.写出下列程序的运行结果。

#include

#include

ClassBase

{

Public:

Intx;

VoidPrint(){cout<<”Base:

:

xis”<

};

ClassDerivde1:

publicBase

{

Public:

VoidPrint(){}

};

ClassDerivde2:

privateBase

{

Public:

Derivde2(){Base:

:

x=4;}

Intx;

VoidPrint()

{

cout<<”Derived2’sBase:

:

xis”<

:

x<

cout<<”Derived2:

:

xis”<

}

};

Voidmain()

{

BaseobjB;

Derived1objD1;

Derived2objD2;

objD2.x=1+(objD1.x=1+(objB.x=1));

objB.Print();

objD1.Print();

objD2.Print();

}

答案:

Basw:

:

xis1

Derivde1:

:

xis2

Derivde2’sBase:

:

xis4

Derivde2:

:

xis3

多态性

7.1选择题

76.下列关于动态联编的描述中,错误的是D。

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

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

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

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

77.编译时的多态性可以通过使用C获得。

A)虚函数和指针B)重载函数和析构函数

C)虚函数和对象D)虚函数和引用

78.关于虚函数和抽象类的描述中,错误的是C。

A)纯虚函数是一种特殊的虚函数,它没有具体的实现

B)抽象类是指具有纯虚函数的类

C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

79.下面的描述中,正确的是A

A)virtual可以用来声明虚函数

B)含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C)即使基类的构造函数没有参数,派生类也必须建立构造函数

D)静态数据成员可以通过成员初始化列表来初始化

7.2填空题

80.静态联编所支持的多态性称为编译时的(静态)多态性,动态联编所支持的多态性则称为运行时的(动态)多态性,动态多态性由虚函数来支持。

81.C++中不支持虚构造函数,但支持虚析构函数。

7.3阅读程序

82.写出下列程序的运行结果。

#include

ClassBase

{

Public:

Base(inti=1):

x(i){}

Virtualintsum()const{returnx;}

Private:

Intx;

};

ClassDerived:

publicBase

{

Public:

Derived(inti=0,intj=0):

Base(i),y(j){}

Intsum()const{returnBase:

:

sum()+y;}

Private:

Inty;

};

VoidCall(Baseb)

{

Cout<<"sum="<

}

Voidmain()

{

Baseb(10);

Derivedd(10,40);

Call(b);

Call(d);

}

答案:

Sum=10

Sum=10

83.写出下列程序的运行结果。

#include

ClassBase

{

Public:

Base(){cout<<"ConstructorofBase."<

Virtualvoidfun(){cout<<"Base:

:

fun()called."<

};

ClassDerived:

publicBase

{

Public:

Derived(){cout<<"

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

当前位置:首页 > 经管营销 > 财务管理

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

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