该用户从未签到
|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案3 r9 ^) O- t& ^# A0 L
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)3 F" w6 u3 w G, a/ G
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:9 c# L4 n' y% t$ s
if ( n == 0 )" x% R% g. O0 ]
if ( n != 0 )4 V- Y& G8 F) J2 L
以此类推。, I' x7 @* w6 [, h! }: e* P* w
请写出 BOOL flag 与“零值”比较的 if 语句:* N5 J( |) B' @$ T
$ u0 S) ]; X8 B4 }请写出 float x 与“零值”比较的 if 语句:
, j/ Z# J. ?. y% D* `2 X4 m7 Y0 D( r# _1 M/ Z p
请写出 char *p 与“零值”比较的 if 语句:* z8 i; N- H$ F2 B7 U$ q g; U* ^
0 o6 |6 @, ?6 L1 D& U7 X二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
- m1 _, E/ ]9 U6 [/ ^char str[] = “Hello” ;
& p. U0 B% L1 d7 ~. O% mchar *p = str ;
0 k5 t3 C- A R7 uint n = 10;
0 a9 P. A0 v0 t T8 a请计算
$ ~! L/ i- I* E7 x% [sizeof (str ) = . Q/ { m) ]( f& ^! v3 M# n
sizeof ( p ) =
: |: b+ K3 d Y) q9 Vsizeof ( n ) =
; c9 p6 R# w- A s3 N7 h: ^void Func ( char str[100])& c1 e/ f& K0 u0 u* O
{
& ]/ l1 r/ n- e, z请计算
4 K$ a7 w6 v) \1 usizeof( str ) = - O6 M. Y. c5 |% s
}
* S. B1 r7 B3 s. Vvoid *p = malloc( 100 );* r0 g+ p! ?+ |( w$ i
请计算* @) p9 Y4 k( s( r% y
sizeof ( p ) =
6 W# ?8 Y/ y4 W三、简答题(25分)- D# s y1 ~6 V' r, e# \6 B
1、头文件中的 ifndef/define/endif 干什么用?5 o1 g0 J& E# L' Z
2、#include 和 #include “filename.h” 有什么区别?
" q( E# M9 v$ D. g! A) y3、const 有什么用途?(请至少说明两种); z% Y. P' u9 k( ^
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?1 F' I$ [. w Y, l2 ^' F1 X4 W9 J
四、有关内存的思考题(20分)
) _/ j8 b$ {% ]9 V' Rvoid GetMemory(char *p) d, k; `* G; ]& [, u4 d% W1 w
{6 c' l4 p- L6 Q& l4 G1 r
p = (char *)malloc(100);5 @6 s l# w, B/ H" C; d
}' L5 W3 w. Z; {, a: k/ c9 E
void Test(void) % {2 e( n1 c* h
{
+ A: b3 V+ W$ I3 y2 Ychar *str = NULL;
9 q9 d# z. O5 k y5 y1 k& D( AGetMemory(str); 1 {2 K/ r( ?' H
strcpy(str, "hello world");* c3 d# t! V8 u- N; r7 W8 g/ r! W
printf(str);2 U0 u) o2 K/ T Q( @
}
) _2 D' ^3 O$ `( o, a请问运行Test函数会有什么样的结果?
0 h9 ]! w$ I1 ?& O% m1 D% {+ s) Z答:
' v4 z9 @. {0 H* v- G e5 o
; S0 [: w7 }7 R5 B( _( U- B6 jVoid GetMemory2(char **p, int num)+ p" k7 L e" V$ Z9 V! v
{# i1 ^: k+ P, G6 u) G
*p = (char *)malloc(num);. M# ~+ a) {. g: o3 Z
}" l3 u) X0 S1 y
void Test(void)
: o+ F+ Z# G9 Z+ |# y{4 u/ D; J3 O9 x
char *str = NULL;, {6 f. b. x- G) _& g
GetMemory(&str, 100); C- J6 k2 {6 G i8 t
strcpy(str, "hello"); , q+ x3 i9 X4 g8 ^9 Q
printf(str);
s1 O7 i l1 K6 M/ z! o& K+ d3 S5 N}5 L7 J' P5 W# e& r5 R! x: R/ L/ Y
请问运行Test函数会有什么样的结果?9 f# F. a3 j7 h h! ^7 R5 c
答:
, }5 v' Y I) ]* s/ K/ Q2 z7 a& R+ Rchar *GetMemory(void)0 H, }/ y" u- S' [! ?. x' S
{
: a4 u9 Y' Q/ W* V5 lchar p[] = "hello world";
1 a' `2 b0 p' T9 ^8 K6 w. ureturn p;' M4 P3 e$ W) ]! h& `+ G
}2 g5 O/ R* T- l+ u
void Test(void)
- ^. a0 M. m( F{
! O/ n4 V$ P! n- ], zchar *str = NULL;: @% x8 A! R2 [. F* V: W
str = GetMemory();( [; I& f$ I. y+ }" f
printf(str);' ]0 a' v7 a) o2 ?
}* ] [7 T+ p) h, A; j5 w
请问运行Test函数会有什么样的结果?0 ~4 o+ r$ v" N( ?
答:1 I( S, n1 m+ C! ^
( O+ v7 O. i. P) @7 O; t9 u8 z$ z$ y
void Test(void)
& u# e5 B; h9 l8 K% ]/ I1 o$ P{& ~1 U5 n+ i ^4 E# Y
char *str = (char *) malloc(100);
* m' O1 u7 O" y1 _6 o# `strcpy(str, “hello”); : [' V* N) U/ N
free(str); , z# R# v4 \ A5 p. u/ {
if(str != NULL)
* B. F. f/ U* U# j; f6 H+ T& F{* z4 t& `4 t: B! M, W
strcpy(str, “world”);
& U, w; ]. Z* C3 ^9 Wprintf(str);
$ J8 d( _( @1 |3 K. ^9 h}
! \- ?& B9 c2 R, Q: H2 F}
) i4 O) |- M2 D5 y& Y请问运行Test函数会有什么样的结果?
L1 q9 y; I$ w# [/ ^答:
& s3 B( D, h! V- N7 v2 G, Q' Y$ I! p% H4 ?- ~9 O
五、编写strcpy函数(10分); C4 H! X0 e3 p- ^
已知strcpy函数的原型是- I& F, {3 q2 ]; ?$ n7 T1 K1 e. @
char *strcpy(char *strDest, const char *strSrc);8 G' R$ z2 E; W% l/ u5 o
其中strDest是目的字符串,strSrc是源字符串。3 }' P$ k9 p$ S5 W6 f3 i" R
(1)不调用C++/C的字符串库函数,请编写函数 strcpy: L+ _! ~* v' d, h. g# ?; G- @
* {0 f3 ?+ z6 _1 C( d% X/ f2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
: O% Y/ W4 B9 l9 e8 v; c( g2 P3 o6 |3 V9 j4 y9 N: C
六、编写类String的构造函数、析构函数和赋值函数(25分)
r9 ^% f3 Y; h2 G已知类String的原型为:; T' h- t4 {8 Q8 I( ^, l
class String
9 c- R2 h6 b2 G2 R& J8 |" t {
9 P3 Z7 Q$ l9 }8 { public:5 h/ J; l; [: |8 k) B6 z
String(const char *str = NULL); // 普通构造函数
: r; x! W2 }5 \& f( T( I# X String(const String &other); // 拷贝构造函数, l! l3 q3 A, Q$ l
~ String(void); // 析构函数
/ K2 a- ?" M) e% y% C String & operate =(const String &other); // 赋值函数1 p% Y3 d8 p, u+ f8 V( ~# k$ y
private:
* w/ l, T- S' I; `! O) ]+ ?0 q* ? char *m_data; // 用于保存字符串
' M5 ~4 {2 \) E# x k };) B- D' `# A; N) \
请编写String的上述4个函数。 |
|