成都元亨教育面向对象程序设计复习题.docx

上传人:b****4 文档编号:12314069 上传时间:2023-04-18 格式:DOCX 页数:25 大小:22.44KB
下载 相关 举报
成都元亨教育面向对象程序设计复习题.docx_第1页
第1页 / 共25页
成都元亨教育面向对象程序设计复习题.docx_第2页
第2页 / 共25页
成都元亨教育面向对象程序设计复习题.docx_第3页
第3页 / 共25页
成都元亨教育面向对象程序设计复习题.docx_第4页
第4页 / 共25页
成都元亨教育面向对象程序设计复习题.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

成都元亨教育面向对象程序设计复习题.docx

《成都元亨教育面向对象程序设计复习题.docx》由会员分享,可在线阅读,更多相关《成都元亨教育面向对象程序设计复习题.docx(25页珍藏版)》请在冰豆网上搜索。

成都元亨教育面向对象程序设计复习题.docx

成都元亨教育面向对象程序设计复习题

面向对象程序设计复习题

一、选择题

1、基类中的保护成员在其私有派生类中的访问属性是(A)。

A.私有B.公有C.保护D.不确定

2、在类的非静态成员函数中,不可以直接访问的数据成员是(D)。

A.本类的私有成员B.本类的保护成员

C.本类的公有成员D.本类的所有非静态成员

3、下列标示符中,不符合C++标示符命名规则的是(C)。

A.x10B._totalC.πD.www

4、下列整型常数中,不符合C++语法的是(C)。

A.12uB.-67lC.059D.0X11ff

5、下列常量中,不符合C++语法的是(D)。

A.”\0”B.‘*’C.“”D.“It’sanarray!

6、下列数组的初始化形式中,不符合C++语法的是(A)。

A.ints1[3]={1,2,3,4}B.ints2[3]={0}

C.chars3[3]={‘a’,’x’,’d’}D.chars4[]=“asd”

7、如果说明语句为:

inta[4]={10,20,30,40,50},*p=&a[2];则*p的值是

(B)。

A.a[2]的地址B.30C.20D.不确定

8、已知:

inta[3][3];下列表示数组元素a[0][0]的方法中,不符合C++语法的是(C)。

A.**aB.*a[0]C.a[0]D.*(*a[1]-1)

9、已知:

inta=3,b=5,下列表达式中,值为0的表达式是(B)。

A.a%5-5B.a/bC.!

a||bD.a&&b

10、C++中字符常数的定界符是(B)。

A.”B.‘C.#D.\

11、已知:

inta=9,sum=0;下列循环中,不构成死循环的是(A)。

A.for(;a;a++)sum+=a--B.do{sum+=a--}while(--a);

C.while(a=1)sum+=a--;D.do{sum+=a}while(a-1);

12、如果定义一个函数时未指定该函数的返回值类型,则函数返回值类型应是

(B)。

A.无B.intC.任意D.void

13、下列描述中,属于传值调用的是(C)。

A.形参是指针,实参是地址B.形参、实参都是数组

C.形参是变量,形参是常数D.形参是指针,实参是数组名。

14、在类的友元函数中,可以访问的数据成员是(D)。

A.本类的私有成员B.本类的保护成员

C.本类的公有成员D.本类的所有成员

15、下列各种函数中,在对象生命期结束时自动调用的函数的是(B)。

A.构造函数B.析构函数C.友元函数D.虚函数

16、下列描述中,属于析构函数的特征是(D)。

A.函数的名字与类名无关B.函数可以重载

C.函数形参可有可无D.不能指定函数返回值的类型

17、列对类的描述中,不符合C++语法的是(B)。

A.一个派生类至少有一个基类

B.一个派生类只能有一个基类

C.一个基类不可以有多个派生类

D.抽象类一定是另一个类的基类

18、C++中的虚函数可以实现的面向对象的基本特性是(D)。

A.封装性B.继承性C.抽象性D.多态性

19、下列关于运算符重载的描述中,错误的是(D)。

A.运算符只能重载为成员函数

B.运算符只能重载为友元函数

C.有些运算符只能重载为成员函数

D.有些运算符只能重载为友元函数

20、有文件打开语句:

ofstreamfout(“data”);则下列描述中,正确的描述是(D)。

A.fout是一个标准输入流对象;B.fout是一个标准输出流对象;

C.fout是一个文件输入流对象;D.fout是一个文件输出流对象;

21、下列标示符中,符合C++标示符命名规则的是(A)。

A.AmaxB.x

(2)C.intD.姓名

22、下列常数中,不符合C++语法的是(C)。

A..5B.‘7’C.2e0.5D.3.14f

23、下列字符常量中,不符合C++语法的是(B)。

A.’\0’B.‘\’C.‘3’D.‘*’

24、以下指针用法中错误的是(B)。

A.inti;int*ptr=&i;B.int*ptr=2000;

C.int*ptr=0;D.inti,*ptr=&i;*ptr=5;

25、下列描述中,不属于地址调用的是(D)。

A.形参、实参是指针B.形参、实参都是数组

C.形参是指针,实参是数组名D.形参是变量的引用,实参是变量

26、下列各种函数中,在对象生命期结束时自动调用的函数是(B)。

A.构造函数B.析构函数C.友元函数D.虚函数

27、下列描述中,不属于虚函数的特征是(C)。

A.函数定义时不加virtualB.是类的非静态成员函数

C.函数没有形参D.不能重载

28、C++中设置友元函数的目的是(B)。

A.解决继承中的二义性问题B.提高编程效率

C.实现动态多态性D.实现静态多态性

29、下列关于运算符重载的描述中,正确的是(D)。

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

B.运算符重载可以改变原有运算符的优先级

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

D.运算符重载可以定义新的运算方法

30、用I/O流打开一个文件时,如果不指定文件存储方式,则该文件的格式是(B)。

A.二进制文件B.文本文件C.无格式D.不确定

二、判断题(每题1分,共10分,对的打√,错的打×)

1、一个程序文件中,main函数有且只能有一个。

(√)

2、程序中的注释是可执行的语句。

(×)

3、C++的表达式中不允许不同类型数据的混合运算。

(×)

4、系统函数不需要任何人定义,编程时可直接使用。

(×)

5、数组名可以看作一个指针变量。

(×)

6、不同函数间传递数组时,采用的是引用调用方式。

(×)

7、虚函数可以是类的静态成员。

(×)

8、抽象类只能做基类,但可以定义该类的对象。

(×)

9、文本文件只能保存字符数据,不能保存数值数据。

(×)

10、函数调用在前,定义在后时,需要原型声明。

(√)

11、main函数总是程序中第一个被执行的函数。

(√)

12、程序中的注释是写给编程人员看的。

(√)

13、C++的表达式中允许不同类型数据的混合运算。

(√)

14、函数在调用之前必须先定义或声明。

(√)

15、数组名中存放的是一个地址。

(√)

16、不同函数间传递数组时,采用的是地址调用方式。

(√)

17、基类的指针可以指向其派生类的对象。

(√)

18、复制构造函数与构造函数的执行时机是一样的。

(×)

19、类中定义的成员函数都是内联函数。

(√)

20、没有main函数的C++程序也可以执行。

(×)

21、程序中有没有注释不影响程序的执行。

(√)

22、一个函数的函数体中不能包含另一个函数的定义。

(√)

23、类的任何公有成员在类体外必须通过对象来访问。

(×)

24、一个指针变量指向数组元素时可以做++或—操作。

(√)

25、具有块作用域的变量在块结束时,所占存储空间一定被释放。

(×)

三、阅读程序写结果

1、#include

voidmain(){

ints=0,k;

for(k=7;k>=0;k--){

switch(k){

case1:

case4:

case7:

s+=k;break;

case2:

case3:

case6:

break;

case0:

case5:

s++;break;

}

}

cout<<”S=”<

}

输出结果:

答:

S=14

2、写出以下程序运行时分别输入1、0、5时的输出结果。

#include

voidmain()

{inta,b=5;

cout<<”输入一个整数:

”;

cin>>a;

switch(a>0)

{case1:

switch(b<10)

{case0:

cout<<″*″<

case1:

cout<<″#″<

}

default:

cout<<″!

\n″;

case0:

switch(b>0)

{case0:

cout<<″ok1\n″;

case1:

cout<<″ok2\n″;

}

}

}

输出结果:

答:

第一次运行:

输入一个整数:

1

#

!

ok2

第二次运行:

输入一个整数:

0

ok2

第三次运行:

输入一个整数:

5

#

!

ok2

3、写出下列程序运行时输入9的运行结果

#include

voidmain(){

inta[10]={23,4,78,9,9,37,92,47,9,17},x,i,k=-1;

cout<<”Inputanumber:

”;

cin>>x;

for(i=0;i<10;i++)

if(a[i]!

=x)a[++k]=a[i];

for(i=0;i<=k;i++)

cout<

cout<

}

输出结果:

答:

2347837924717

4、#include

voidmain()

{inta[4],i,j,k;

for(i=0;i<4;i++)a[i]=0;

k=3;

for(i=0;i

for(j=0;j<=k;j++)

a[j]=a[i]+2;

cout<

}

输出结果:

答:

1012

5、#include

longfac(int);

voidmain()

{inti;

for(i=1;i<=5;i++)

cout<

}

longfac(intn)

{staticlongf=1;

f=f*n;

returnf;

}

输出结果:

答:

12

26

324

4120

5720

6、#include

voidswap(int&m1,int&m2)

{m1*=2;m2+=2;}

voidmain()

{inta(10),b(20);

cout<

swap(a,b);

cout<

}

输出结果:

答:

1020

2022

7、#include

classmyclass

{private:

intx,y;

staticlongsum;

public:

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

voidgetxy()

{sum*=x*y;

cout<<″sum=″<

}

};

longmyclass:

:

sum=1;

voidmain()

{myclassob1(1,2);

ob1·getxy();

myclassob2(3,4);

ob2·getxy();

myclassob3(5,6);

ob3·getxy();

}

输出结果:

答:

sum=2

sum=24

sum=720

8、#include

classcube

{public:

cube(intht=2,intwd=5,intdp=3)

{height=ht;width=wd;depth=dp;

cout<<″depth=″<

}

~cube(){cout<<″depth=″<

intvolume(){returnheight*width*depth;}

private:

intheight,width,depth;

};

voidmain()

{cubecone(10,20,15),ctwo;

cout<

cout<

}

输出结果:

答:

depth=15construnctedcalled

depth=3construnctedcalled

3000

30

depth=3Destructedcalled

depth=15Destructedcalled

9、#include

classA{

public:

virtualvoiddisp(){cout<<”A”<

};

classB:

publicA{

voiddisp(){cout<<”B”<

};

voidp1(A&a1)

{a1.disp();}

voidp2(Aa2)

{a2.disp();}

voidmain()

{Bb;

p1(b);

p2(b);

}

输出结果:

答:

B

A

10、#include

voidf(int);

voidmain()

{

for(inti

(1);i<=4;i++)

f(i);

}

voidf(intj)

{

staticinta=10;

intb=1;

a+=10;

b+=5;

cout<

}

输出结果:

答:

20+6=26

30+6=36

40+6=46

50+6=56

四、程序填空

1、以下的程序实现求分数序列2/1,3/2,5/3,8/5,13/8,21/13,……前15项的和。

#include

#defineN15

voidmain(){

inti,m,n,k;

doubles=0;

m=2,n=1;

for(i=1;i<=N;i++){

s=s+1.0*m/n;

k=m;

m=m+n;

n=k;

}

cout<<”s=”<

}

2、下面是利用运算符重载实现字符串加等的程序,请在空白处填入合适的内容。

#include

#include

classCstring

{char*s;

public:

Cstring(char*s1=0){

s=newchar[strlen(s1)+1];

strcpy(s,s1);

}

___Cstringoperator+=(Cstring&s1);__

voidlist(){cout<

};

CstringCstring:

:

operator+=(Cstring&s1)

{

char*t=newchar[strlen(s)+strlen(s1.s)+1];

strcpy(t,s);

strcat(t,s1.s);

deletes;

s=t;

__return*this;__

}

voidmain()

{

Cstringcstr1("abcd"),cstr2("1234");

__cstr1+=cstr2;__

cstr1.list();

}

3、下面程序将输入到数组a中的数据重新按逆序存放,然后将逆序存放后的数据输出。

#include

constintN10;

voidmain()

{inta[N],*p=a,*q,r;

cout<<”输入10个整数:

”;

for(inti=0;i>a[I++];

p=a;q=&a[9];

while(_____p

{r=*p;p=q;*q=r;

p++;

_____q--__;

}

cout<<”逆序存放结果:

”;

p=a;

for(i=0;i

cout<<*p++<<″″;

cout<

}

4、、输入一串有字母和数字混合的字符串,编程序将字符串中的字母和数字分开,分别存入两个不同的文件。

#include

#include

#include

voidmain()

{

charch[100];

cout<<"请输入一串有字符和数字的字符串:

"<

ofstreamfout1("shuzi.txt");

ofstreamfout2("zimu.txt");

if(!

fout1)

{

cout<<"文件打开失败!

"<

exit

(1);

}

if(!

fout2)

{

cout<<"文件打开失败!

"<

exit

(1);

}

cin>>ch;

inti=0;

do{

if('0'<=ch[i]&&ch[i]<='9')

fout1<

if(('a'<=ch[i]&&ch[i]<='z')||('A'<=ch[i]&&ch[i]<='Z'))

fout2<

i++;

}while(ch[i]!

=0);

fout1.close();

fout2.close();

}

5、下面的程序输出小于200的素数,而且每行最多输出10个素数。

#include

#include

classPrime{

intp;

public:

Prime(intn){if(n<3)p=3;elsep=n;}

voidRun();

};

voidPrime:

:

Run()

{

intk,j,flag,line=0;

for(j=2;j

{

flag=1;

for(k=2;k

if(j%k==0)

flag=0;

if(flag)

{

cout<

line++;

if(line%10==0)

cout<

}

}

cout<

}

voidmain()

{

Primeobj(200);

obj.Run();

}

6、下面是将一个一维数组及各元素乘积写入文本文件data.txt的程序,请在空白处填入合适的内容。

___#include__

#include

voidmain(){

inta[10]={1,2,3,4,5,6,7,8,9,10},cum=0;

__ofstreamfout("data.txt");_

if(!

fout){//打开文件失败

cout<<"Cannotopenthefile!

"<

exit

(1);

}

inti;

for(i=0;i<10;i++){

cum*=a[i];

__fout<

}

_fout<

fout.close();

}

7、以下程序用友元函数实现复数加和复数赋制运算,完成程序。

#include

classcomplex{

private:

doublereal,image;

public:

complex(){real=0;image=0;}

complex(doubler,doublei){real=r;image=i;}

friendcomplexoperator+(complex&a,constcomplex&b);

complex&operator=(complex&c);

voidprint();

};

complexoperator+(complex&a,constcomplex&b)

{

returncomplex(_a.real+b.real,a.image+b.image_);

}

complex&complex:

:

operator=(complex&c)

{

real=c.real;

imag=c.imag;

return*this;

}

voidcomplex:

:

print()

{

cout<

}

voidmain()

{complexc1,c2(1.5,4.0),c3(6.5,-2.8);

complexc4=c2+c3;

c1=c4;

c1.print();

c4.print();

}

8、下面是利用运算符重载实现字符串赋值(=)的程序,请在空白处填入合适的内容。

#include

#include

classCstring

{char*s;

public:

Cstring(char*s1=0){

s=newchar[strlen(s1)+1];

strcpy(s,s1);

}

__Cstringoperator=(Cstring&s1);__

voidlist(){cout<

};

CstringCstring:

:

operator=(Cstring&s1)

{

deletes;

s=newchar[strlen(s1.s)+1];

strcpy(s,s1.s);

__return*this;_

}

voidmain()

{

Cstringcstr1("abcd"),cstr2("1234");

____cstr1=cstr2;____

cstr1.list();

}

五、编程题

1、从由键盘输入的若干整数中找出其中最大的数并输出。

当输入为负数时结束输入。

答:

#include

voidmain()

{

inta,

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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