|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
3 v! W. S! _' |: T8 q一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)' D6 `7 W b$ k# B0 C5 H ]" C
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
( V# m1 w" d* [0 a+ t1 N+ K6 h1 V if ( n == 0 )! p, U, u: \) @* n) r) U
if ( n != 0 ); T2 F1 p% F( }. N' ]7 j8 R" v
以此类推。0 u9 j. P+ U' M; r
请写出 BOOL flag 与“零值”比较的 if 语句:
& D5 ^8 ^& u% Y# k, E, ?2 I9 k: Z; i
请写出 float x 与“零值”比较的 if 语句:( t4 w7 q" ^* i& t9 P9 S# _
( t! Z/ }) L! J" C) l% D请写出 char *p 与“零值”比较的 if 语句:7 u3 @/ X) O7 f: e2 v8 e: H# Z; \
' ?. b2 q7 U% k* ~/ b1 J7 Z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)8 _7 I- E4 i8 k1 I
char str[] = “Hello” ; 8 J7 k" l3 l& l: {, U
char *p = str ;
, G, p5 \5 g/ X, M5 j9 U9 ^: T+ h0 Iint n = 10;+ F& H* E1 z% h
请计算
% R% ^$ t, t, a8 Psizeof (str ) =
# d- t: v8 d# q0 i4 n' D h& \! Hsizeof ( p ) = 0 D- S& O8 B# r2 _; w& R: F& j0 q
sizeof ( n ) =3 d) [3 v7 _' c, Q- f2 k) h e' m
void Func ( char str[100])3 r. k9 Y5 T3 c$ M
{7 O: ^. K: h, ?" S7 w6 J
请计算
0 f* S! q/ W- E2 U' C, qsizeof( str ) =
( R8 v+ U. C3 O3 R* E2 {- b: M}
+ v+ s4 e7 \. z G7 Bvoid *p = malloc( 100 );) Z; h) r3 F5 ]0 `
请计算
- F- H5 U8 k# q$ Q; Q7 [sizeof ( p ) =8 L. x6 `; `0 Z& m( d/ o
三、简答题(25分)
. ?9 @: S: U5 \4 r. m1、头文件中的 ifndef/define/endif 干什么用?& X. x$ _( }: f
2、#include 和 #include “filename.h” 有什么区别?* H: b( r8 | H' a0 {4 ~! ^1 o
3、const 有什么用途?(请至少说明两种)" Y w9 {/ f" T+ C5 M3 ]7 p
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?7 ~7 N7 I7 P5 k
四、有关内存的思考题(20分)
! w' M+ T+ e. _! hvoid GetMemory(char *p)
7 \2 Q- r- g! O. ~5 J4 a{
8 G0 ?5 {2 u9 D: t I+ `p = (char *)malloc(100);
# R5 R2 P; }0 P+ y3 l: z}. O# h: z* X1 p! B- G
void Test(void)
" n( P3 ? `' p{
" }4 j/ c' e O: @- Dchar *str = NULL;/ d- G) K7 x" u0 N
GetMemory(str); 7 `: m' z& P! J9 P
strcpy(str, "hello world");+ l x, j/ \/ i( o0 I2 z6 i
printf(str);' m' O/ K0 T1 F" B; b1 L
}: j- W" m9 A/ A
请问运行Test函数会有什么样的结果?
% Q9 o B9 r! I* t/ r7 x) s; i3 A答:1 {/ n9 K: T2 {) ^& y. @0 |! |
" v, O* U/ m2 z9 ~8 {7 QVoid GetMemory2(char **p, int num)7 F; u; K" |) e- V! B( p% x' o
{5 c& o9 G4 J8 P8 S. D; w+ J
*p = (char *)malloc(num);. h, Z3 n1 t" o0 Z2 K+ L5 d
}
r7 P, }3 l/ j/ m: J, xvoid Test(void)1 \3 a# _7 x% [. s9 |5 @8 `" \
{) S% x( b+ |# n/ ^+ ^: f
char *str = NULL;3 U, F" ~/ |0 p4 G! c9 R
GetMemory(&str, 100);
9 w ~: t+ ?" F4 kstrcpy(str, "hello"); ) W0 |2 O O5 t* X
printf(str); 9 x2 L ` s! ]0 G; C
}( k8 B. ]; v# g4 H3 a- u% l
请问运行Test函数会有什么样的结果?3 W. \7 F% b; E4 k9 p0 v ]
答:( j! i7 k7 s& z2 Y q( p
char *GetMemory(void)9 X k ]- \ Z5 A/ q
{ 7 J/ V( _3 q" A0 k4 @
char p[] = "hello world";
& |: L( @# w4 k+ ]' G- Xreturn p;
/ P' D! a& f; G" o2 {}* B& _( e1 s7 H, x3 K
void Test(void)
& S- Q3 y, m+ }{
; n6 w4 v6 h' hchar *str = NULL;
l' X, [6 f& ]/ Bstr = GetMemory();
; |0 {; S9 }* F. U% S. H- X printf(str);6 r- a9 Q+ g2 g* e& V1 n
}
. R+ J! x# d. b' b7 {请问运行Test函数会有什么样的结果?0 V9 @1 q z i" \ W3 `! I
答:
0 X3 n! @8 `" W5 |) e: g8 K' p8 {
: s- u h+ G, l1 b8 Ovoid Test(void)
0 V. ^2 S! h! q! V& C, b{7 T. i" e# j$ T0 M# K, `; i* e
char *str = (char *) malloc(100);
4 x; k( Z6 V* S9 [strcpy(str, “hello”); 4 ^- F9 ]; J5 z% i) t' T/ i
free(str);
7 @6 t6 s" f2 Gif(str != NULL) 8 j2 B9 X) ]& i* ^8 l2 M
{
5 N6 W; J( [/ {+ r) @4 h9 J strcpy(str, “world”); 1 h) L0 e# \. }$ R- r; E
printf(str);) U. _3 u$ e, Z( ?6 r
}0 B! v5 I4 R$ ^0 |5 L
}
: _* G7 d4 i6 j2 w7 b$ y请问运行Test函数会有什么样的结果?* M- d, l/ L+ y6 H- y V6 [% p
答:
; [) {' H" ~7 Q. M0 Z( `& ^
+ F3 |2 i$ J8 U/ V五、编写strcpy函数(10分)
1 s5 e/ q3 G- Z, C2 x已知strcpy函数的原型是0 ?: `" S, e9 S
char *strcpy(char *strDest, const char *strSrc);0 h7 ~$ ~: n# o6 v
其中strDest是目的字符串,strSrc是源字符串。
" i- |8 j0 ^. q0 {' u) r' a/ f(1)不调用C++/C的字符串库函数,请编写函数 strcpy/ \$ B+ m3 q; }/ \+ s: m* z6 ~' o
O3 c/ _: [* H" L2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?( ?* ~) C8 M2 Q1 g& ?
. C/ F/ s! v- y1 P* O% q1 f; K8 T
六、编写类String的构造函数、析构函数和赋值函数(25分)
& Y5 d: t: O E* a$ q- P2 ~已知类String的原型为:, A0 J4 E6 q$ N# p1 X6 H" j% n- e) h
class String
$ E( E5 N9 k C {
: h; m9 k$ \ N0 |; [& Y, c. l public:
# C* r! D! n) y$ ^2 K3 J6 ? String(const char *str = NULL); // 普通构造函数6 K k- T- v0 |
String(const String &other); // 拷贝构造函数
$ t+ r4 ^/ [4 k5 e# q8 [ ~ String(void); // 析构函数
5 u* r1 S1 C0 F' }& c% u/ A String & operate =(const String &other); // 赋值函数
+ W/ H; B1 I4 a6 f5 q! q9 p! r1 A private:( H( o# h1 L4 v/ i( K
char *m_data; // 用于保存字符串( a/ k9 Z0 [. `- H( w
};' E1 E& j# U( H8 w3 W) O, O$ r& U
请编写String的上述4个函数。 |
|