《2023年面向对象程序设计综合练习题.docx》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计综合练习题.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象程序设计综合练习题一单项选择题1. C+源程序文献的缺省扩展名为(A)。A. c p p o B. exe C. obj 。D. lik.由C+源程序文献编译而成的目的文献的缺省扩展名为(C )。A. cpp ooB.exe C, obj 。 。 lik.由C+目的文献连接而成的可执行文献的缺省扩展名为(B )。A. cp p B. exe C. obj 。D. li k.编写C+程序一般需通过的几个环节依次是(B ).A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接2 .以下标记符中不全是保存字的是(A. casefor int
2、C. bool c I a ss long.能作为C+程序的基本单位是(CA.字符 。B.语句o C.函数.程序中主函数的名字为(A )。6 )。B. d e fau 1 t then w h il eD. g oto re turn c har)oD.源程序文献A. mainB. MA I No o C. Ma i n D.任意标记符.C+程序的基本模块为(D )。A.表达式 B.标记符。C.语句 D.函数.可用作C+ +语言用户标记符的一组标记符是(B )。defin e_123a b cDOvoidA. a3_b3f o rB. 2a+WORDYNCa s es i z e of10 .
3、存储以下数据,占用存储字节最多的是(D )。C. d oubl e &p= * k;。D. char *p=Th a n k you!”;75.变量s的定义为“char *s= Hello wo Md!” ;”,要使变量p指向s所指向的同一个字符串, 则应选取()oA. char 火 p =s;。 。 B. char *p=& s;char *p: p=* s ; D. ch a r * p ; p=& s ;76.关于void指针,下列说法对的的是()ovoid指针就是未指向任何数据的指针A. void指针就是已定义而未初始化的指针C.指向任何类型数据的指针可直接赋值给一个vo i d指针C
4、. void指针值可直接赋给一个非void指针77 .假定一条定义语句为“in t a*pa=a: ,若要把数组a中下标为3的元素值赋给x,则不对的的语句为()oA. x=pa3;。B. x=*(a+3);C. x= a 3;。D.x=*pa+3;7 8.假定有定义“ i nt b10; int *pb;二则不对的的赋值语句为()。A. p b=b;B. p b=&bO;C. * p b = n e w i n t ;。D. p b = b 5 ;7 9 .假定p是具有double类型的指针变量,则表达式+p使p的值(以字节为单位)增长()。A. 1。 B. 4C. sizeof (doubl
5、 e)。 D. size of(p)80 .假定p指向的字符串为” string,则c。u t v vp+3的输出结果为()。A. str i ng 。 B. ringC. in g。 D. i81 .假定p指向的字符串为” string,若要输出这个字符串的地址值,则使用()。A. cout*p; 。B. c outp;C. cou t &p ;。D. coutt i tie,“ Wang Tao):86.假定有 “s t r u c t BO0 K c har t i t Ie 4 0 ; flo a t p rice; BOOK *boo k ; ,则不 对的的语句为( )oA. BOO
6、K *x= n e w b oo k ;。 B. B OOK x=”C+ P rogramm i ng, 27. 0);C. BOOK *x=new BOOK;。D. BOOK *x=b o o k;8 7 .假定有 “st r uc t BOOK char title40; floa t pi c e; bo o k ;,则对的的语句为()。A. BOOK &x= &book;。B. BOOK &x=b o o k ;声明 X为引用C. BOOK &x=new BOOK;。D. BOOK &x=BOOK;8 8 ,下列对引用的陈述中不对的的是()。A.每一个引用都是其所引用对象的别名,因此必
7、须初始化B.形式.上针对引用的操作事实上作用于它所引用的对象C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D.不需要单独为引用分派存储空间89 .假定变量a和pa定义为“double a10 , *pa=a;,要将12. 35赋值给a中的下标为5的 元素,不对的的语句是( )oA. pa5 = 12.35;o B. a 5 = 12.35;C. *(pa + 5) = 1 2. 35;D. *(a0 +5) = 1 2.3 5 ;.假定变量b和pb定义为“intb10, *p b=b;,要将24赋值给b 1元素中,不对的的语句是( )。A. * ( p b+ 1 ) =
8、 2 4 ; o B . * (b+l)= 2 4 ;C.* + + b = 24;。 D. * + + pb = 24;9 1.假定指针变量p定义为i nt *p=new i nt (100);”,要释放p所指向的动态内存,应使用语句()。A. delete p; 。 B. dele t e *p:C. del e te &p;o 。D. d ele t e p;9 2 .假定指针变量p定义为int * p =new int30; ,要释放p所指向的动态内存,应使用语句()。A. d e 1 e te p;。 。 B. d ele t e *p;C. delete &p;。D. d e le
9、te p;9 3.假定变量*定义为)足*=5;,要使rx成为x的引用(别名),rx应定义为()。A. int rx= x ;,B. i n t r x=& x ;C. i n t *rx=&x;。D. int &rx=x;115 .在多文献结构的程序中,通常把类的定义单独存放于()中。A.主文献 B.实现文献C.库文献 D.头文献.在多文献结构的程序中,通常把类中所有非内联函数的定义单独存放于()中。A.主文献 B.实现文献 C.库文献 D.头文献.在多文献结构的程序中,通常把具有main。函数的文献称为()。A.主文献 B.实现文献 C.程序文献D.头文献二,填空题1 . C+语言是在_c
10、语言的基础上发展起来的。2 . C + +语言的编译单位是扩展名为 的 文献。3 .行尾使用注释的开始标记符为。4 .多行注释的开始标记符和结束标记符分别为 和 o5 .用于输出表达式值的标准输出流对象是。6 .用于从键盘上为变量输入值的标准输入流对象是。7 . 一个完整程序中必须有一个名为 的函数。8 . 一个函数的函数体就是一条 语句。9 .当执行c in语句时,从键盘上输入每个数据后必须接着输入一个 符,然后才干继续输入下一个数据。10 .在C+程序中包含一个头文献或程序文献的预编译命令为。1 1 .程序中的预解决命令是指以 字符开头的命令。1 2. 一条表达式语句必须以 作为结束符。1
11、 3 .在#includ e命令中所包含的头文献,可以是系统定义的头文献,也可以是 定义的头文献。14 .使用#incl ude命令可以包含一个头文献,也可以包含一个 文献。15 . 一个函数定义由和 两部分组成。1 6.若一个函数的定义处在调用它的函数之前,则在程序开始可以省去该函数的 语句。2 7. C+ +头文献和源程序文献的扩展名分别为 和3 8 .程序文献的编译错误分为 和 两类。4 9.当使用 保存字作为函数类型时,该函数不返回任何值。5 0 .当函数参数表用 保存字表达时,则表达该参数表为空。21.从条函数原型语句“in t f unl(void);可知,该函数的返回类型为,该函
12、数带有 个参数。22.当执行cou t语句输出endl数据项时,将使C+显示输出屏幕上的光标从当前位置移动到 的开始位置。38.在C+ +中存储字符串 a b cd ef”至少需要 个字节。3 9 .在C+ +中存储字符串 a + b=C”至少需要 个字节。7 0.元素类型为d ouble的二维数组a4G共占用_24*8 字节的存储空间。71 .元素类型为char的二维数组a10 3 0拱占用_300 字节的存储空间。72 .存储字符a和字符串a”分别需要占用_1 和 2 个字节。73 .空串的长度为,存储它需要占用 个字节。76 .用于存储一个长度为n的字符串的字符数组的长度至少为。77 .
13、若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为。78 8 .若a是一个字符数组,则向屏幕输出a中所存字符串的表达式为。79. 一个二维字符数组al 020可以存储 个字符串,每个字符串的长度至多为 o80.对一个二维字符数组a进行初始化的数据为“ 12 3 “,“ 4 56“789”,则a 1 元素相应的字符串为81 .若需要把一个字符串“ aaa ”赋值到字符数组a中,则需要执行 函数的调用来实现。82 .假定对数组a进行初始化的数据为 2,7 ,9, 6 , 5, 7 ,10),则a2和a 5 分别被初始化为 和_83 .假定对二维数组a 3 4进行初始化的数据为3,5,6
14、, 2, 8, 7,则a II 和a 2 3分别 被初始化为 和 o84 .在C+语言中,一个函数由函数头和 组成。8 5.重载一个函数的条件是:该函数必须在参数的个数或参数的上与其它同名函数有所不同。86.假如一个函数只允许同一程序中的函数调用,则应在该函数定义前加上 C+保存字。87.若d。ublex=100;”是文献Fl.CPP中的一个全局变量定义语句,若文献F2.CPP中的某个函数需要访问此x,则 应在文献F2.CPP中添加对x的声明语句为.8 8.定义一个函数模板要用到的第一个修饰符是。91 .已知 in t cu b in (i nt n) ( r etu rn n* n *n;和
15、 do u b 1 e c ub i n( d o u b 1 e n) return n* n * n ;是一 个函数模板的两个实例,假定类型参数用T表达,则该函数模板的定义是92 .对于无返回值函数,定义函数时要用 修饰函数类型。93 .假如一个函数定义中使用了.static 修饰,则该函数不允许被其它文献中的函数调用。9 4.假如一个函数中有多个默认参数,则默认参数必须所有处在形参表的 部分。95.定义外部变量时,不用存储类说明符,而声明外部变量时用它。97 .函数形参的作用域是该函数的。105 .若有定义“ s tru c t AA i n t a; char b;double c;x
16、; ,则x占用空间大小为 字节。106 .当定义一个结构体变量时,系统分派给该变量的内存大小等于各成员所需内存大小的。107 . 一个指针类型的对象占用内存的 个字节的存储空间。108一个指针指向一个数据对象,它保存着该数据对象的,若数据对象为DataTyp e类型,则相应的指 针类型为。10 9.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为 0111.假定P是一个指向整数对象的指针,则用 表达该整数对象,用 表达指针变量P的地址。1 1 2.假定p是一个指针,则* P+运算一方面访问,然后使 的值增1。113 .假定p是一个指针,则(*p) +运算一方面访问,然后使 的值增1
17、。114 .假定p所指对象的值为25,p+l所指对象的值为42,则* p + +的值为。115 .假定p所指对象的值为25,p+l所指对象的值为4 2,则*+ + p的值为。116 .假定P所指对象的值为2 5, p + 1所指对象的值为42,则执行(*p) + +运算后,P所指对象的值为 o1 1 7.假定p所指对象的值为25. p + 1所指对象的值为4 2,则执行*( p + + )或* P + +运算后,p所指对象的值为118.假定a是一个一维指针数组,则a+i所指对象的地址比a大 字节。1 19.假定a是一个一维数组,则a i的指针访问方式为。120.假定a是一个一维数组,则a i
18、相应的存储地址(以字节为单位)为。12 1 . 一个数组的数组名事实上是指向该数组元素的指针,并且在任何时候都不允许 它。1 2 2.假定指向一维数组bl 0 中元素b4的指针为p,则p +3所指向的元素为,P - 2所指向的元素 为。12 3 .若要定义整型指针P并初始指向X,则所使用的定义语句为。124 .若P指向X,则 与X的表达是等价的。125 .在一个二维数组int am n中,包含的一维元素a i的类型为,访问ai时返回值的类型为一1 2 6 .假定一个二维数组为C58,则C 3 的值为二维元素 的地址,C 3 +2的值为二维元素一的地址。12 7.假定p为指向二维数组i nt d
19、 4 6的指针,则p的类型为。128.假定a是一个二维数组,则a 口口的指针访问方式为-1 2 9.若要把整型变量y定义为x的引用,则所使用的定义语句为 o130.若y是x的引用,则对y的操作就是对 的操作。1 31.若y是x的引用,则&y和& x的值,即为变量的地址。13 2.执行int p=new i nt操作得到的一个动态分派的整型时象为。133.执行int *p=new int 1 0 操作,使p指向动态分派的数组中下标为0的元素,该元素可表达为_p 0 或_*P 0134.执行char *p=new char( a )操作后,p所指向的数据对象的值为_a=136.执行d elet e
20、 p;操作将释放由p所指向的动态分派的数据空间。1 3 7.执行de 1 ete p;操作将释放由p所指向的动态分派的数组空间。13 8. NULL是一个符号常量,通常作为空指针值,它的具体值为_0.14 0.已知语句“coutvvp;”的输出是“Hell。!”,则语句“COUtV*p;”输出的是_,H141.已知语句“ coutvvs;”的输出是“ a pple ”,则执行语句“ c outvvs+2; ”的输出结果为p 1 e四,写出程序运营结果1. . #incl u de#in c ludevoid mai n ()int 矶8 =25, 48,3 2,8 5,64, 1 8,4 8,
21、29):int max, min;ma x =min=a0;for (int i=0; i8; i + + ) a i ) max= a i;if( x a i) mi n = a i;)coutmax: maxendl;co u t M mi n :Hm i nen d I; 2. #inclu d evo i d m a in()f o r (a= 1 ,b= 2 ; b50;) couta ba =a+b;b= a +b;)coutendl;couta b endl;1 3 5 8 1 3 21 3455 8 93. # i n clud e c o nst int M = 3, N=4
22、;vo i d main()(int i,j,s=O;for( i =1; i = M;i + + )for( j =1; j = N;j+)s+=i*j;coutvv $ = ” send 1 ;)s = 6 04. #includevoid m a in ()i f (a+b10) c=a*b; else c =3*a+b;i f (c=2 0 ) cou t c *c; else cout 4 +c-5;cou t endl;a=a+b; b=a+b: c+=a+b:coutvv“a,b, c = a / b /cend 1 ;121a,bzc=7zl 2,305.#includevo
23、i d main()(i nt x=5;s witch(2* x -3) case 4: coutx,;c ase 7: co u t2*x+ 1 J ;case 1 0: cout3*x-l, ; b r e a k;default: cou t d e f au 1 tend 1 ;c o u t swit c h e nd. endl;1114 s witch end.6 . # i nclude# i nclu d ei nta4 =36,- 5,73, 8;int i, y;fo r (i = 0; i4; i+ + ) if(ai 0 ) y =1;else i f (a i 10
24、) y= ai* a i+3:e 1 se if(ai60) y=4*ai- 5 ;e 1 se y= i nt(sq r t (a i ); / / s qrt(x)为取 x 的平方根函数 couts e tw(5) a isetw( 5 ) y ;)7 . #inc 1 udei nt a8 = 3 6,25,20,43,12,70,66,35;vo i d main()int s 0, sl,s2:s 0 =sl= s 2 =0;fo r (int i=0; i8; i +) (switch (a i %3) case 0: SO += a i ; b r e a k;case 1: s
25、 1 +=ai;bre a k;ca s e 2 : s2+=ai; brc ak;)coutsO s 1 * s2 endl;)9.#includec o nst i n t M=2 0 ;A. 0A. 0。B. O C. 0”。D. 0. 01 1.程序运营中需要从键盘上输入多于一个数据时,各数据之间应使用(D )符号作为分隔符。A.空格或逗号B.逗号或回车。C.逗号或分号。D.空格或回车12.设“ int a=12;”,则执行完语句 a+=a*a;后,a的值是(C )。A. 12B. 144。 C. 15 6。D. 28814 .设“ int a=15,b=26;,则 cout vv(a
26、,b);” 的输出结果是(C )。A. 15。B. 2 6,15C. 1 5, 26。D. 2615 .设x是一个bool型的逻辑量,y的值为10,则表达式x &y的值为(CA. 1o B. 0C.与x值相同D.与X值相反.x0 &xv = 10的相反表达式为(A )。A. x 1 0。B. x 10C. x=0 I | x0 & x 1016 . x0 | | y= = 5的相反表达式为(B )oA. x = 0 11 y! =5。 B . x0 | y ! = 5D. x 0 & y= = 5.设x和y均为bool量,则x&y为真的条件是(A )。A.它们均为真。 B.其中一个为真C.它们
27、均为假。D.其中一个为假18 .设x和y均为bool量,则x | y为假的条件是(C )。A,它们均为真。 B.其中一个为真C.它们均为假。, D.其中一个为假2 0 .字符串 a+b= 1 2n”的长度为(B )。A. 6。o B. 7C. 8。o D.9 21.假定下列x和y均为i n t型变量,则不对的的赋值为(B )。 int c2,c3,c 5;c2= c 3= c 5 =0;for( i nt i = l: i=M; i +) i f(i% 2 = 0 ) c2+ + :if(i%3=0) c 3+ + ;i f( i %5 = = 0 ) c5+ + ;)cou t c 2 c
28、3 c5 e ndl; )1 0 . #incl u dev oid m a i n ()i n t i,j ;for(i = 0; i 5 : i+)fo r (j = i; j v 5 ; j+ + ) c o ut* *: cout e ndl:)11 .ttin c I u devo i d ma i n()(fo r ( i nt i = 1 s=0: i 2 0;i +) if(i%2 = = 0 11 i%3=0) contin u e coutVvivv;s+= ic outsco nst int T=6;v oid main()int i J;f or(i = l; i v=
29、T;i +=2)for(j =2;j=T: j +=2) if(i+j vT) coutvV,+,;e Is e c out* *:)1 3.#inc 1 ud e void m a in()(i nt a, b,c=0;f o r ( a =1; a l;b- = 2) c+=a*b; c end 1 ;c+=a*b; c end 1 ;if ( a +b)%2 = = 0) c+=a + b; elseif( b =2) couta, b 14.#in c 1 u d econst i nt B=2;void main ()(int p= 1 ,s=l:wh i 1 e(s50) p*=B
30、;s+=P;)cout s = s endl;)1 5 . #includevoid main()int x =24, y = 8 8 ;int i = 2zp = l;d o w h ile(x%i=0 &y%i =0) P *=i;x/=i:y/=i;?i +;while ( x = i & y=i);c out p * x*ye nd I ;const int N = 3;void m a i n()intaNN = 7,-5,3,2,8,-6, ( 1,-4,-2:int bN N=3,6, -9, 2, -8,3, 5-2-7;int i,j, c NN;fo r(i=0;iN;i+
31、)计算矩阵 Cf o r(j= 0 ;jN;j + + )ci UJ =a ij+bij;f o r ( i =0;iN; i + + ) /输出矩阵 Cf or(j=0: j N; j + + )coutsetw (5) c i j;coute n d 1 ;)1 7 . # i n clud e i nt a= 5 :void mai n () int b= a +20;i n t a =10;c outabendl; in t a =0,b=0;for( i n t i= 1 ; i 6; i+ + )a + = i; b+=a;)co uta b e n dl;COU t a b en
32、d 1 ;1 8 . #i n c I u deint f l(int x, i n t y )(x= x +y; y=x+y;cout x=x , y =yend 1 ;return x+y;vo i d mai n ()(int x=5,y=8;int z=f I (x,y);cou t x= x , y= y;co utz z=ze n dl:.#i ncludevo i d f2 (in t & x, in t & y)(int z=x; x =y; y =z;)v o id f3 (i nt* x, i nt* y)n t z= * x ; *x = *y; *y=z;v o id
33、m a i n ()i n t x=10zy=2 6 :c ou t xz y =x/ yen d I;f2(x,y);cout x , y= x , yendl;f3(&x,&y);cout * x, y=x/ yen d 1 :x+ + ; y ;f2(y, x);co u t x,y=x, y endl;)20.# i ncludevoid f4 (in t a, int n, int& s )s=0:for( i nt i =0; in; i + + ) s+=a i;)void ma i n()i nt b8 = 4,8, 6,9,2, 10,7,12);i n t x ; f 4(
34、 b ,5 x);co u t x in t y; f4(b+3, 4,y);cou t y:cout x +yendl;五,指出程序或函数的功能# i ncl u d evoid ma i n ()(in t i , s= 0 ;for(i = 2;i = 30; i + = 2) s+ = i*i;c o uts= s endl;4. #includ ed o ubl e fl( i nt n) d o u b 1 e si g n= 1 , s=l;f o r (i n t i= 2 ; i a;coutfl(a)en d 1 ;).d o ubl e fl(dou b 1 e az d
35、 o uble bz ch a r o p) s w i t ch( o p) case : re t u r n a +b;cas e re t urn a -b;ca s e *: r e t u rn a *b;c ase T : i f (b=0) cou t di v i d ed by 0 ! e n d I ;e x it( 1 );el s e r e t u rn a/ b ;def ault: cou t o perato r erro r !en d I:e xi t (1);)5 .#include#inclu d evo i d ma i n ()(int xzy;c
36、 i nx;y=i n t (sqrt(x); /sqrt(x)为求 x 的算术平方根f o r( i nt i = l; i =y;i + + )if(x%i = = O) coutM x= i * * x/iendl;). #i n cludevoid ma i n()(int izp=l,s= 0 ;i nt N;coutvv”输入一个正整数:”;cinN:for(i=l; i = N; i+) p * =i;s + = p:)couts e n dl;)i n t Sl(i n t n )(nt x;i f( n = = 1 ) x= 1 ;e 1 se x=sl(n-l) + n*n
37、:r e t urn x;)1 1. tem plate bool fun8 ( T a口, i n t nz T key)(f o r(int i=0;in; i +)i f (ai = = k e y ) ret u rn tru e ;return false ;12.void f2( d o able a, i nt n)d OU b Ie S u m=0:fo r (i=0: in; i+) s um + = a i ;sum/=n:for (i=0; i =sum) co uta i,,;c out e n d 1 :)15. int fu n 6(in t m, int nr i
38、 n t b = 2 )(if(mb & nb) return m*n;e Ise if(m% b =0 & n%b = = 0) r e turn b *fu n 6(m/b. n / b, b );else retu r n fun6 (m,n,+ b );23. char * f ( c ha r * s ) i n t n=strle n (s);ch a r* r= n ew ch ar n+1;f o r (i n t i=0; i = a &si B. x+ +=y+ +C. x= +y o D. +x=+y22.下列的符号常量定义中,错误的定义是(C )。静态变量定义时就要赋值
39、A. c onst M = 10;。B. c onst int M=20;C. co n st char ch;。 D. c o nst bool mark= t rue;23 .循环语句 “ f o r (int i =0: in; i +) co u t i*i,中循环体执行的次数为(C )oA. 1 ooo c, B. n-1C. nD. n+ 12 4 .在下面循环语句中循环体执行的次数为(B )。fo r (int i=0; i n/2) break;A. n/2。 B. n/2+1C. n/2-1ooo D. n-12 5 .在下面循环语句中内层循环体S语句的执行总次数为(D )。
40、for (int i=0; in; i + + )for(in t j= i ; j n ; j + + ) S;A. n2。B. (n+ 1 )/2C. n(n-l)/2 D. n(n+l) /226.在下面循环语句中循环体执行的次数为(C )。int i= 0 ,s=0; while(s20) + ; s+= i ;A. 4。 B. 5C. 6 o D. 72 7 .在下面循环语句中循环体执行的次数为(A )。int i=0; do i+ + ; while(i*i10);A . 4O O a B. 328.当解决特定问题时的循环次数已知时,通常采用(A )来解决。A. for循环 。B.while循环C. do循环D,switch语句2 9 .循环体至