|
离线考核
& G# m. z5 n7 s: o9 A5 J5 T+ s% f《C++程序设计》
; C. N! E; ^$ \4 _! N. p9 {3 I, k# d+ ]$ x) e; D; J
更多资料下载:谋学网(www.mouxue.com)100分9 h. }4 p: t% U* D) y
一、更多资料下载:谋学网(www.mouxue.com)(更多资料下载:谋学网(www.mouxue.com)10分,共40分。)- ]. j+ t* h5 x$ l \% _0 }5 R n
1.什么是类?什么是对象?对象与类的关系是什么?: ^5 D% \( ^5 b. f
2.什么是多态性?请举例说明。# n) W7 e5 i# X& m% k% B
3.虚函数是否一定要有virtual关键字?什么叫纯虚函数和抽象类?多态调用需要满足怎样的条件?
% Y" o- K3 l' S; u+ H4.简述结构化的程序设计、面向对象的程序设计的基本思想。. W q3 o1 Q, o: ?4 L
二、程序分析题(更多资料下载:谋学网(www.mouxue.com)10分,共40分。)* r4 L0 W) I0 w6 o$ D
1. 指出下列程序中的1处错误,并说明为什么。
# d0 J4 e" C* T% Q' Mclass Location {
! d- A% ]0 v2 E2 F& X. b$ n int X,Y=20;6 K- \0 O8 E0 {9 n/ d$ ~
protected:
; H- l, @1 L/ V% Z1 k! ? int zeroX,zeroY;- B* ]8 {+ c' G
int SetZero(int ZeroX,int ZeroY);1 c8 S {$ d2 ?+ {) \. T3 L
private:
! x! g8 s* u$ s int length,height;
( C# V8 c8 B) G6 S1 npublic:
9 Z) d. W) l Q, Z4 M0 E0 A void init(int initX,int initY);
; |8 E, I# a5 t3 G( `8 C int GetX( );
; w# b/ Y6 M% P/ G int GetY( );0 c4 E: S5 h# D7 u( c
};' w' q8 U' R3 n
答:
5 e9 g9 j) Y4 r! a4 {9 H# I* j2 w4 ?& T8 ^! w; y* g
2.指出下列程序中的1处错误,并说明为什么。
; G+ \7 O2 _+ P5 {5 o5 h3 C #include<iostream.h>
% `- u# G) r' `$ c6 Q. U# A #include<stdlib.h># ]+ S6 w" _. H( @9 J0 p+ B0 g3 b
class CTest{! |) r) M; m$ b' v1 b
public:
9 v6 H F% R" C p8 T const int y2;1 H6 U% ]9 N# ?4 d( v
CTest(int i1, int i2,int i3):y1(i1),y2(i2)
8 q4 L; ~- a) w6 g6 t0 t { x=i3; }) o/ G8 O' ?/ B; h" L
int show() const{cout<<"y1="<<y1<<"\ny2="<<y2<<"\nx="<<x<<endl;}
- V* T A3 ~* t3 n8 ]( s1 U //…1 Z6 P4 b4 E5 a9 R9 w" f
private:' k2 n0 s% k, S* a! ]
int x;0 M3 |7 k' B3 @( i- P" l% l
const int y1;
4 n3 ~% \, k, |6 @. `" { };
! g! N( o6 u3 E5 m void main()
& X, p! E9 ]$ m4 X- _! B$ B- f {
" y) R9 y" V( G/ M m CTest c(1,2,3);
% a/ K$ s3 s" | c.show();7 A1 Z: L. H% m9 L
c.y2 = -2;
0 u& o9 b1 {$ V' T8 e% N c.show();
: ?4 p" a" R# [1 b }; v" F% p$ L0 s6 j& T( L4 r4 K
答:
3 r8 ]0 F6 a& @$ I
$ I O; o+ _+ T+ ~+ ^3.写出下面程序的输出结果。# q9 _8 o: L6 i: X! J1 ]5 i
#include <iostream.h>! r9 o! r! O2 x$ B F; j
class B
2 E3 D# x4 L8 _3 J { int b;
# o* P& Z% I9 I3 u! s public:
; E/ n/ k9 j+ _# |% W8 x [, V; x B(int i) {b=i;}
: L8 I c% i; p6 s virtual void virfun() {cout<< "B::b: "<<b<<" , ";}
: [6 ^$ {, ]8 a7 T$ p };
( N- g/ v L& J) E class D: public B
" K F, P9 l3 ]% h# F, v { public:
. g! K( f" x* f D(int i,int j): B(i) {d=j;}
2 _. O3 l) l# `. b: r3 |0 X. M( E void virfun() {B::virfun(); cout<<"D::d: "<<d<<endl;}* c9 O# K9 Q9 `& l
private: int d;
: i7 A' j( q5 O9 \& } };
) K3 } ~, f d. q' @ void fun(B *objp) { objp->virfun(); }
0 d+ W2 Z8 y5 R# s void main() { D *pd=new D(3,5) ; fun(pd);}) [1 s$ H* k$ A/ i, N
答:! k- A& c" f( w) y. \
4 }" m, Y1 \9 U- t) G2 U
4. 写出下面程序的运行结果。, m# {; h! K. z+ m6 K
#include<iostream.h>
# n4 l1 @, ~; ~class example
+ c, t: D7 u) E I) {/ N% C{
- L( N% ^6 \" U0 C! q5 Bpublic:5 t* X( D) P0 T2 r+ O0 y, @+ s
example(int n)
8 D9 W9 [+ [- K/ j& v% z) m {
1 s6 T+ x# O7 n0 ~( I- [ i=n;3 H4 h; G( `% D
cout<<"Constructing\n";* C' q7 M2 ?" \- g$ @
}
$ E, y& M2 O3 H ~example()
- A, O3 W- P0 ]( ? { cout<<"Destructing\n"; }. ?9 x! X6 U. B
int get_i()
" W6 s W0 T9 U! `+ n/ M, T { return i; }( B' E0 m1 |1 r3 V
private :1 b: i9 B7 L3 |
int i;$ J, G* a7 h- Q" Z* ~6 b2 o$ S
};7 c' \6 Z; @2 M4 V3 i/ u$ H: |+ C2 A
int sqr_it(example o): o+ l9 R4 t2 z$ b( @* v% {
{ return o.get_i()*o.get_i(); }
' g9 ^% B p; T# `main ()( s8 i( T( }- Q8 J
{
# g# b- [& d- ^. [% A! L, `. ?& l! \ example x(10);
* \8 Q2 y9 s/ V' m cout<<x.get_i()<<endl;# o. R( J3 q( E# Q0 ~* w
cout<<sqr_it(x)<<endl;, q+ M1 z4 U" W" `! D1 @4 a) ?( @
return 0;
( Z! V5 \/ G, G4 ^$ ]}
5 C. N+ }3 L# b1 h4 b0 H5 T答:
( J4 ]9 x" w" d7 ^; j
8 u# z' c' l4 a' E4 x6 K, ?# F三、完成程序题(更多资料下载:谋学网(www.mouxue.com)10分,共20分。)0 J& j; x( B$ n1 p- F* h* d |
0 F0 C* f* c6 c1.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。' v# t4 a. f. @/ W7 V5 u
#include<iostream.h>
# D2 I, f X% o" T& T& } class Integer
; X2 ]) j. O+ U9 m6 o, }* Y8 V {
6 J3 C0 K' N5 r4 u2 a) k5 g( P4 y int x;5 y4 Z* N% _# V: O1 g
public:
. i: [4 W+ z, d+ m Integer(int a=0){x=a;}
3 m! n( x0 H1 ~( S; O+ u void display( ){cout<<x<<endl;}
( H% @, N/ l8 V& G& W ① ;* Z. i6 j2 [& r# @6 |
};
- e7 d/ |, Q9 `6 p3 D Integer Max(Integer a,Integer b)1 T% ]2 G0 P& ^5 z
{3 n2 e% o2 Y! w/ Z$ k
if(② )/ ^! V/ c7 ]5 X+ U3 ~7 V7 _
return a;8 k$ K. R$ n. k" d c% I$ p; Y
return b;# z7 [( w6 D% r" ?9 z
}+ f+ ?0 a5 i: f. J6 H( q
void main( ) [6 I6 q- R4 v% u. i
{- y2 n* i( y1 Y8 ~: m% M8 @ F
Integer a(3),b(5),c;
, W2 z) N, j1 [ c=Max(a,b);
4 T4 f( J( |$ H6 g c.display( );
, f2 V# c5 C S }8 k7 M p8 T3 U |- F( l) ~
+ U1 S; O9 H/ m2 }+ S2. 设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实现求两个三角形对象的面积之和。
9 ?7 ?/ v$ T3 X/ r0 ~4 H
@$ N, S. p& r- r& `' [ k" g |
|