|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
8 [2 s( a+ s h* H0 {4 |; p/ B- I一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)1 K" I$ Y" z7 h
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:( X) {% ]* }- m& J! S
if ( n == 0 )
" i' l4 T& W V0 C5 v' M m _ if ( n != 0 )
2 s( x* w# P7 y& U( b: R8 c7 p以此类推。8 y( O, D4 L+ u/ r( i
请写出 BOOL flag 与“零值”比较的 if 语句:* G3 c9 e. Y& s9 a) [
: U6 R, Z2 n4 A1 l* r9 V
请写出 float x 与“零值”比较的 if 语句:
^. x2 v9 f# m: r# K7 h4 Z9 L/ i3 |' V+ `, {
请写出 char *p 与“零值”比较的 if 语句:
' p6 |- n! n$ H( u3 I0 A+ }
( G9 K- y! w2 v+ I& _1 k% i二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
2 N" Q4 s, k2 \char str[] = “Hello” ;
% ?- h, H& s! Tchar *p = str ;) x! q$ l% D( X/ U: O, w
int n = 10;
7 Q ~+ ~. ~6 {5 Q: D请计算
0 d. B, x6 w3 u) @3 b4 H- i, ~5 |sizeof (str ) =
' E% m- K0 z2 K2 C5 w, h0 _4 vsizeof ( p ) =
/ s! k7 S) ]. `: k# Z4 p; Wsizeof ( n ) =8 \! O; ~8 s% l; v, k
void Func ( char str[100])
. v ]2 d! i5 m8 Z3 J9 H) w{- Z. z' y1 R7 z( a
请计算 # {1 G; i( s0 }/ J
sizeof( str ) =
. `$ X) C U; L$ Y) [}% g c- u1 _7 S% m: T; D
void *p = malloc( 100 );
1 E2 A) r% L$ o& f# ^) ~请计算; T/ L; q. Q$ y: P, k
sizeof ( p ) =
# A! K( s1 B9 a/ v% K: E, G1 z1 h三、简答题(25分)
7 v: m: O- _4 q1 W+ d1、头文件中的 ifndef/define/endif 干什么用?/ |9 B& Z, I! T5 j* U% f F( N% l
2、#include 和 #include “filename.h” 有什么区别?
/ e7 |6 G# i* f+ e8 r8 y: W6 W3、const 有什么用途?(请至少说明两种)
# m2 [( Y8 _# e) v. D: u4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?, G! J# J$ W# m8 T, ^
四、有关内存的思考题(20分)
/ `3 a# V4 D* r+ Cvoid GetMemory(char *p)
: {4 j* }5 u a W( N0 i* o{3 x. w w2 y- g* ]( |
p = (char *)malloc(100);+ }- `/ k' W3 W: s& K
}
6 h# l" S2 q. r( ^% ^void Test(void) ) Z3 i% ~0 h( P: k
{+ k( C% v( A/ y6 U# F S
char *str = NULL;
& K, a! q. |1 m, v! s% u* z/ r5 DGetMemory(str);
3 f2 _& f6 S4 D* Ostrcpy(str, "hello world");
; R, u+ I( p0 ^9 y& z, tprintf(str);
* k; r1 g+ x V' r9 s2 d}
( G5 v% J; L+ r( D2 Y# J请问运行Test函数会有什么样的结果?
' u* N- \# Z; c% w) G答:. u8 w; a( ~* A" k
$ J8 F' q t' p7 xVoid GetMemory2(char **p, int num)& A, W: G$ R t, N* C
{" y; f! u4 L* Q3 Q2 l: i/ G8 d
*p = (char *)malloc(num);
3 L+ e4 ^6 X* k3 L# G}
# u3 z& I# ~2 S B3 a! [void Test(void)- `7 E3 ?- E" g. I# {
{
7 c- K/ N; H" |% [* lchar *str = NULL; Z( {% Q) ?5 k; j+ Q
GetMemory(&str, 100);" I6 p5 ]& G; B7 i
strcpy(str, "hello");
6 R& K: N, q! Nprintf(str);
* e1 i( ~& L l}
4 u% n( Z1 Q3 T- [请问运行Test函数会有什么样的结果?
0 n. w1 y* Y# d, y6 b d答:
: E7 T4 _8 @+ j: Z0 h# f, z% Pchar *GetMemory(void)) ?( Z* b' i9 z; S' B: q
{ # f2 X' z- c! s9 X
char p[] = "hello world";) l5 M! c: a; _$ H
return p;
6 Y# i$ x4 O' E' t0 E& L}9 g c- X) Y& O# r
void Test(void)0 C. b4 k+ |, Y- S: b ]
{
5 F k! t; m2 z, e7 wchar *str = NULL;
) q# ]$ G' h+ e' ?6 F/ o2 r z# t4 pstr = GetMemory();
4 x5 v, a! X V- t( p printf(str);
( c' L l6 D9 g2 j6 w0 |) y}5 [% _0 a2 B6 J/ o8 l
请问运行Test函数会有什么样的结果?9 O( H8 O! C5 B6 t N9 _7 M
答:
# U3 V) w4 `3 E* t; }4 L
9 `1 f3 X, i; ~: i1 Xvoid Test(void)6 R9 q) G/ Z6 y) F5 o
{/ Y' z+ G' v, _2 X2 G
char *str = (char *) malloc(100);
6 y% S) f" h. o2 Qstrcpy(str, “hello”);
|9 N- n7 }* Q# w' J! t0 Xfree(str);
1 T+ q, I" n( ~" b5 wif(str != NULL)
- I) @! x' y% ]* h{
6 L& e" R; g7 T3 U( v% |1 a3 S& k0 l strcpy(str, “world”);
' k2 I, n6 B" fprintf(str);+ q& {9 |5 }/ m! V/ V, R
}
) ]$ y8 j# |" t" y. y. W- g}
" O; Z4 o1 f8 Z6 u. @5 C请问运行Test函数会有什么样的结果?
W( v! D- F R1 Q答:
1 q8 M6 H9 ~2 b3 _) _
& r% H8 l5 Q X! v# y/ r% _6 U五、编写strcpy函数(10分)$ R/ H- D+ i. q# b' f
已知strcpy函数的原型是
$ L8 d1 v$ G$ W+ d) S+ M" p$ z char *strcpy(char *strDest, const char *strSrc);
' N) z) U+ \$ I P 其中strDest是目的字符串,strSrc是源字符串。
+ R6 d% u5 A$ s# ]$ ^6 w5 [(1)不调用C++/C的字符串库函数,请编写函数 strcpy
! x( `1 M$ l3 O3 Q8 c( h/ W* G* y1 T E2 T6 G. U4 w: M
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
1 O4 o1 M0 b7 B5 }6 g& A9 }' I: c& |, ^
六、编写类String的构造函数、析构函数和赋值函数(25分)% m& x$ w8 }$ i6 n
已知类String的原型为:( P8 H3 U% |1 E- c
class String( m& ~+ O9 A a2 q# b. B
{
: A$ C! F; z1 {( d$ z4 p public:
+ b( j/ I4 N" N0 E ` String(const char *str = NULL); // 普通构造函数$ e5 V) a1 B& x# Y) k, [0 R
String(const String &other); // 拷贝构造函数
: d4 y, Y+ N) o4 O. x ~ String(void); // 析构函数0 u$ b3 U) _; Q
String & operate =(const String &other); // 赋值函数6 F {( C: \5 ]& e
private:+ b+ ]( X! ~; _( @
char *m_data; // 用于保存字符串
( F \6 k" E; \) T };/ N: f7 ~$ H( M
请编写String的上述4个函数。 |
|