|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
' U- k0 c8 L* G( g2 H0 o一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)" C0 d8 \9 Z/ P* g
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
. j% u; n/ c/ V2 |7 |) M! V if ( n == 0 )
* \- @ D- Z$ O' r" H' N if ( n != 0 )
. g& p* D: `% p; |% `6 A9 L以此类推。
# c w. p% | x5 v; p0 E1 \请写出 BOOL flag 与“零值”比较的 if 语句:
1 \; a- a, \1 ^0 S
$ K! Q _: o0 \. Q+ B% ~6 F4 O请写出 float x 与“零值”比较的 if 语句:6 x+ r; Z* U' Q/ z
# G! i: M, N- M S, |& s' `
请写出 char *p 与“零值”比较的 if 语句:
9 o4 z- e$ s& n, J9 @
) W0 b4 ]' l( P二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)% f% _! F. Y, }& ?1 y
char str[] = “Hello” ;
, @) ?7 \" G+ f7 ychar *p = str ;/ m( s0 C+ V/ E. w5 w5 A7 A
int n = 10;- o* k; n7 z0 a2 C4 B; X1 M
请计算
7 ?% V7 F! l- g* B% Asizeof (str ) = " e7 |3 L. i& r# b8 e9 J) q
sizeof ( p ) = R4 Y( r0 @* D+ S5 @
sizeof ( n ) =
$ T+ a' L$ z, Cvoid Func ( char str[100])
6 r$ ^; K3 N9 O3 c1 t+ x{
$ u& j! I, N v- O! O, s" u请计算 & I5 X7 x8 U2 c% c6 s
sizeof( str ) =
7 s0 ?* H; K* L$ a8 b}
% ]9 F% G0 Y. k$ ]. K* svoid *p = malloc( 100 );
* I1 F1 s- E9 V7 K请计算
1 @7 y6 D5 P0 Q& _sizeof ( p ) =9 l, f8 t0 x y0 f: W
三、简答题(25分)
5 C' y6 Y: l. E" J1、头文件中的 ifndef/define/endif 干什么用?$ z3 G R9 q* E; e Y- M" E
2、#include 和 #include “filename.h” 有什么区别?% f" F/ A4 S1 _. C/ Q5 w: G8 m9 g6 X4 f
3、const 有什么用途?(请至少说明两种): _7 p& ^+ p2 O+ X+ Q) R& R
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?: D2 z% b! F( k5 n& Y1 f2 E
四、有关内存的思考题(20分)# t2 ~# e6 O- _
void GetMemory(char *p)
" R1 z% c" R$ l! K! ?{
" T6 c3 v/ V0 G9 Q0 F& E8 Qp = (char *)malloc(100);
" h& C# z1 A! y3 e3 y0 n1 l}
/ E, m3 e7 H- V6 ?void Test(void) 2 u4 X2 w# T- Z* d( r% o3 }/ P
{
, n- |3 Y/ x+ Ichar *str = NULL;
0 F6 G4 G8 [2 x4 {% i. AGetMemory(str);
5 A8 L. G+ s! P# @' }# e. {1 qstrcpy(str, "hello world");3 w" ~+ D! S' [9 d
printf(str);
2 `2 f, Q% _0 \: e. @. n# |}+ n$ { k6 x! J: n
请问运行Test函数会有什么样的结果?
: s. z+ i% j" _# l' w; r答: B5 \4 M% C" K" H# e# m6 I
! v( u h; p6 d- w3 K+ h1 XVoid GetMemory2(char **p, int num)
8 @# |: ?5 U* V( Y3 G# o{# m0 M! k+ H8 S2 d
*p = (char *)malloc(num);; _6 f T/ l# W! g( O
}0 M: L, L8 w' I0 J% j) w
void Test(void)# a, B. X8 z/ z! F
{
! W% p5 V8 ^7 F. N5 fchar *str = NULL;
' |% D( r" J& i0 \ r$ e: BGetMemory(&str, 100);9 P! T) m1 K; @9 D8 O; c
strcpy(str, "hello"); " V, c$ m, ~3 G( n+ [
printf(str);
' K5 s& G6 ~ J9 t" v# i}1 r* K4 P8 i5 b7 U7 c, V8 y0 Q
请问运行Test函数会有什么样的结果?4 K; C4 L5 [ Z9 Y; R( |; [% v
答:$ e$ C Q' S7 {9 E: v. e$ c
char *GetMemory(void)
: C' ], ^- X5 ~; {% I{ ; D* b& ^& s3 X6 ?8 G. K
char p[] = "hello world";+ U# u9 `2 x: g5 a3 _7 }7 D, _. U
return p;
8 J+ [) ?4 y% F9 n}
& M3 U( X" M# i7 q( _void Test(void); O8 K d/ q8 _# y+ O: x
{
" S2 f* x! U7 ychar *str = NULL;" c& c5 \. R7 g, n5 |! J, |
str = GetMemory();/ `5 p3 H! A- E/ ^9 h
printf(str);
7 N8 v; s: w7 s5 V( w! D}
3 X3 H1 N5 B9 Z, u9 [请问运行Test函数会有什么样的结果?
6 S: X8 d8 S! t; |答:0 P1 i) I0 ]5 t: b! Q
- _3 A( v& j; X; g
void Test(void)2 H* j7 [3 ~: b. L' m0 E
{
* c1 c3 w6 E, [# x% b0 K7 Cchar *str = (char *) malloc(100);
5 M9 q6 ~2 T1 e7 R. H. |strcpy(str, “hello”); ! |* D' O8 k5 s x& ~0 U$ ~
free(str); ( M# G! d& j/ u7 [+ {
if(str != NULL)
9 I9 Y6 e1 p1 ]: M$ w) h3 ]: @{
r, y' b# ]; c; t: I strcpy(str, “world”); # y. L! X! v- N! [7 y' O5 b
printf(str);3 A# L* f; C+ d. }% ~$ K; {6 t& P
}" u, z9 P& z9 Z# X* B7 V3 b2 {
}3 @8 `- P! u' K9 q0 i6 g2 f
请问运行Test函数会有什么样的结果?5 e1 S: B2 Q& l O& V! T
答:
}) D7 v' w9 U1 m
" F9 u) [5 b9 ]0 `( s五、编写strcpy函数(10分)
& z9 J4 i- E# @4 f; A6 h$ ]已知strcpy函数的原型是- C5 f) T& U* [& R0 L1 |9 W/ G
char *strcpy(char *strDest, const char *strSrc);
3 J3 v: k" v, x9 X& }. l/ a+ U 其中strDest是目的字符串,strSrc是源字符串。3 L6 n) y, H' l- A
(1)不调用C++/C的字符串库函数,请编写函数 strcpy3 f8 N, s* Q5 i( e1 k/ }
, Q7 e0 z3 \1 [$ V" F2 d. H
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?! X. @$ \! m" y/ y% E4 o
' o$ r) R1 y# i1 A
六、编写类String的构造函数、析构函数和赋值函数(25分)3 q& N4 e2 |5 w5 M5 I) V# U$ g( J
已知类String的原型为:
5 U% B# x! o6 N class String
& k5 k4 t+ M# Q9 A* R, z3 E. O1 s3 v {
* X& d# k% L$ T9 t public:
5 X9 d$ e4 i- Q- w0 [9 p String(const char *str = NULL); // 普通构造函数0 @3 K: A: a1 d/ y0 Y# o- D, U' t
String(const String &other); // 拷贝构造函数 R) s: a+ f6 o
~ String(void); // 析构函数
8 t! ^+ j& m) u& ] X; W' u& Y3 J String & operate =(const String &other); // 赋值函数
* \* ?. S, m8 U: g private:# N1 O' d( ?+ h9 k: e9 V
char *m_data; // 用于保存字符串% k9 d" N) ?; V
};
* x7 c" t" M' D$ Q+ C" j( g 请编写String的上述4个函数。 |
|