|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
l0 M" T% \( c6 h2 \一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)5 ?5 m4 ~2 u5 s8 ^9 E
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
0 d7 W% J9 S' x3 }9 f! z* q! _ if ( n == 0 )
/ A E8 J6 ^& b9 ^ if ( n != 0 )2 F- l# m0 C- p, A3 y* y' Z
以此类推。+ Z6 I7 G' I* |- J1 k
请写出 BOOL flag 与“零值”比较的 if 语句:
& k2 X# X2 _6 S' k% t
) K# w6 w# q% v请写出 float x 与“零值”比较的 if 语句:8 ]. F9 x6 y0 B; d% Z/ g
1 u B; y' e, p* ?# I请写出 char *p 与“零值”比较的 if 语句:- Y, ~ s& P' @# t0 ~
# Y; p6 o: }! }9 U3 b二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
$ q6 A' E" r8 a, h" n0 l7 ]3 schar str[] = “Hello” ;
; U* F) V+ z3 R- _& L9 G+ Gchar *p = str ;
; m& ~0 F" i$ g8 Q6 `+ e& zint n = 10;
' `8 ?/ @# [& h2 ]请计算 ~. Q( l5 h! k! {# L9 o2 T! T9 x
sizeof (str ) =
: N" y5 `; G3 s a% I, Y- w" E3 Ssizeof ( p ) = 1 [* b* o+ a" Z
sizeof ( n ) =% ]. i2 Q) R" d. M# g5 r
void Func ( char str[100])$ o' |; d% y* _! W K
{# Y6 q& B- X: y2 k- U$ X' Y. N
请计算
% J, g r$ Y& V) h7 A/ { Bsizeof( str ) =
Q2 s+ o: D4 s( U( x}
: W) b9 ~: H H+ ?) t+ Evoid *p = malloc( 100 );
1 X4 C) ~, v9 B请计算
, ? Z! v( ~ ?/ [sizeof ( p ) =
/ n) O2 j' P, f: ~, N3 n7 @ _三、简答题(25分)2 S+ O6 D# G3 n1 i. \
1、头文件中的 ifndef/define/endif 干什么用?7 A! H2 v$ d, t* S% v. S
2、#include 和 #include “filename.h” 有什么区别?
( q4 Q6 n. d: [! a* C3 b; b3、const 有什么用途?(请至少说明两种)
' t3 K7 `, i$ i1 ^7 z4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
8 `* G6 x, Z; U6 t" O, R四、有关内存的思考题(20分)
, {6 B4 A) R9 R5 `3 U) @, ~void GetMemory(char *p)
( q- V# L/ F1 u4 w0 n+ }{
0 V! v8 ]6 O0 k/ pp = (char *)malloc(100);
7 P/ k" U: D) U9 p1 E: h# T}
: u( f- r+ g" j. M3 |void Test(void)
+ H' g; M( @& F+ W- @2 R{
9 }1 s& x; i. Ochar *str = NULL;
?7 x% p9 j' `" @$ d, P+ S( D4 XGetMemory(str); " A- W$ i/ P% Q
strcpy(str, "hello world");
+ {' h' `, @" D# s# N" ]/ F" Aprintf(str);
7 Q. Q4 e7 M' O' i}% o9 n) d0 \+ c
请问运行Test函数会有什么样的结果?! S: j E. m( D
答:
3 k- a3 ?6 }2 r- c1 R" g
5 U9 p! n) Z, a* k( d% iVoid GetMemory2(char **p, int num)/ E* F! k; L: `, P2 z2 M' N3 ~; E
{" C* q. \ M- ?1 P% S
*p = (char *)malloc(num);9 B. f: n! D v1 |& @1 r
}4 J9 C; p1 P3 X0 F. l, s5 d/ H
void Test(void)5 J$ E5 Y4 Y7 _9 E( _
{
9 z7 G! x8 K* Z, r8 a! Q" hchar *str = NULL;7 U" `! \! O% z. B7 `
GetMemory(&str, 100);0 R% S7 m4 U" T; r! J
strcpy(str, "hello"); 7 X; _$ V4 Z0 l8 y7 w0 a: X( {: C) r
printf(str); ) F* ]) L# b! k) W$ A7 o" _( l5 u. E# t. v
}
/ g6 [3 Z; p4 v4 v! Q/ }* Q o请问运行Test函数会有什么样的结果?0 O, @5 N1 [. q j
答:, c5 v4 I- n; O: i8 t& `2 t* |
char *GetMemory(void)
) e3 i" L5 |) W# M{ ; G- D' x, e; h
char p[] = "hello world";
' M/ m, a" S8 m& t n1 \! ]1 Z+ t, ereturn p;
' r% ^7 b; @7 d# k4 a) ^}; K7 ~! G8 c. P0 p$ e0 |5 s4 O6 y
void Test(void)2 I8 S9 `% y7 c" F0 U* E5 E$ C
{. m& }( T6 S% g1 l
char *str = NULL;9 u& S0 D- s5 w% }2 p7 } [
str = GetMemory();6 Z7 x3 r p+ z3 M
printf(str);
/ j$ ^9 J& X. i; Q; E/ S}
/ B$ K: k0 B" b l d8 i; `请问运行Test函数会有什么样的结果?
- x" y; h# u5 s6 ?+ N T答:: Y4 I+ _) N# Z7 I
# c' L6 U) e j- F2 w, {void Test(void)" ?6 X: X% C1 v4 r/ f& d% u0 Z3 X
{
, Z2 f$ c& w' q' d- I7 q6 N: R0 `char *str = (char *) malloc(100);
0 [# e- ]" F. `& D( pstrcpy(str, “hello”); 1 N2 s4 s6 C x- X$ r/ }; b; |* y9 A
free(str);
; e9 n: ~; r+ L4 A8 _( lif(str != NULL) 8 b& q" F, n1 H
{2 d4 a, T! O5 N# X5 k5 G
strcpy(str, “world”);
" U# ?5 v4 F8 c0 E+ ?printf(str);
" u7 W* S/ n& ?. u/ v}, ^+ s$ U9 |8 ~9 F" ]" p
}
$ {. y X1 {6 r1 E( G+ |请问运行Test函数会有什么样的结果?
) G- x7 `+ D o/ |$ Z! K- N答: s7 [4 ~: F# d: B
; d# C; r& _8 C* J! A; `% q7 E
五、编写strcpy函数(10分)
' p J7 g1 ~7 J已知strcpy函数的原型是+ |$ I+ p) V# C
char *strcpy(char *strDest, const char *strSrc);1 o1 R2 S' U$ @/ S+ Q/ |
其中strDest是目的字符串,strSrc是源字符串。! f# s$ @9 p' \' E9 O
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
( A$ z7 l3 Z$ p- A1 `) D
. s: U. z, v' m. K# V2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?$ B, _. v, K3 |8 O7 K
6 S3 y5 w5 o5 r4 l4 ~% v. w( |六、编写类String的构造函数、析构函数和赋值函数(25分)
2 N( A- _9 i9 Y/ ]0 P已知类String的原型为:
6 F- Z) I# T, B6 t3 [$ m M! R class String$ `/ Y. h1 c) G( h
{
; S0 L6 N, ~" I8 b- m public:+ \+ J$ u; ^, b' |( ?) G. l
String(const char *str = NULL); // 普通构造函数6 R4 L" g7 m, s8 i) z' {
String(const String &other); // 拷贝构造函数
/ `3 E8 c& r( G" { ~ String(void); // 析构函数
' O3 \9 Z4 ~ \# N) P( \3 N2 x String & operate =(const String &other); // 赋值函数0 _) w/ \( T, G/ D. U6 K
private:
5 Q" y1 Q7 k' f' f char *m_data; // 用于保存字符串9 B H7 _3 ~# ]
};
3 i3 v+ i6 z& {- E* y2 P% L. V 请编写String的上述4个函数。 |
|