|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
8 |. f+ ]! z" n/ A; ~+ ~一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
/ T! V% ^9 P% S提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
7 g! N, E& u1 Z' k9 y. L2 e if ( n == 0 )' B7 R' H1 Z1 C2 F7 `
if ( n != 0 )5 e1 n% e) F$ @: R$ l3 ]' A: J
以此类推。
3 v. W1 t% x% ]2 o, a2 P' ~请写出 BOOL flag 与“零值”比较的 if 语句:: T* W9 V9 [1 G, E; |
% q% l( h, Z& F5 ~* K+ r! q, X3 n
请写出 float x 与“零值”比较的 if 语句:/ `% |& }) W8 y2 y0 H
( w7 J& }; b- v$ p, Q- y+ _请写出 char *p 与“零值”比较的 if 语句:1 g' R+ B& B8 @, A: ] D
$ A" X( H8 {, N二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
) ?3 t& M. {+ S( q0 y/ ychar str[] = “Hello” ; 5 N7 D8 i9 \" Q/ W7 |
char *p = str ;2 S& D0 C C+ [ y( \
int n = 10;8 Z! m! T+ ^7 y
请计算; B& a$ e X: O4 [& ]6 p! ?8 C( D2 ?
sizeof (str ) = 6 w3 p9 `/ g, `4 ]+ I4 |7 j
sizeof ( p ) =
, P) j! i) n# _8 t& Esizeof ( n ) =; w) g( T/ _6 J
void Func ( char str[100])! n( u" {6 J- D- J/ |
{8 F8 s) }( C% p, x/ A
请计算 - W; N9 W- ~9 g7 J
sizeof( str ) =
7 y, t2 a% V& E% _0 W* K5 R}! T6 O# A n8 G
void *p = malloc( 100 );
$ B5 T- p& b1 |' v请计算- T' B, C8 ?7 R, J1 H6 j$ G2 L& W
sizeof ( p ) =( O# W2 e- v0 y/ w! w- f# ~9 h8 Y
三、简答题(25分)
5 {; x' t6 V7 h* r& P4 `" U8 R- Z1、头文件中的 ifndef/define/endif 干什么用?- R$ ]/ w) ?$ J
2、#include 和 #include “filename.h” 有什么区别?$ p' I& o9 ~9 K1 C% x( ~, n- _
3、const 有什么用途?(请至少说明两种)
5 B2 p1 q4 j3 F- i4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
: P4 o. j0 u/ E% N" y1 ?四、有关内存的思考题(20分)* F: u: J4 K+ o6 F' M$ ~- D
void GetMemory(char *p)
! q4 H/ h+ [2 g& F2 l{
* x1 @5 ~% ~9 I5 hp = (char *)malloc(100);
* k- H# O, e* Z+ x1 k}( V) F& @1 ]% H9 L; F
void Test(void) # q" P3 e0 q, d% X8 K; h" ] A# b
{$ K$ g3 N y- b" z; Q3 G
char *str = NULL;
% P" n1 J! n I) y/ KGetMemory(str);
/ p7 Q0 Y; Y/ w3 l; I$ ]strcpy(str, "hello world");% r+ Z% s6 t; g% s7 U3 `8 U3 q
printf(str);
& U/ S }+ L6 O}- ]- M, n$ O% L/ m
请问运行Test函数会有什么样的结果?5 `" }% I6 ^. y/ g+ s* \! g% A
答:
$ U3 \* R4 `' {: K" Z& p/ C7 [: n6 d8 P' e
Void GetMemory2(char **p, int num)
: O6 r3 ~- H( P' c( q{* g" Y8 P5 S. k5 x: [9 j0 v
*p = (char *)malloc(num);
+ ~4 ?; e) h0 a# o}
R3 z# F. ] D- e9 K2 i& uvoid Test(void)
3 m' o- c& i2 X/ `7 C/ r{
/ ^$ T3 q/ h6 D3 o& u1 Ychar *str = NULL;: _. T$ F3 n8 o0 a
GetMemory(&str, 100);
9 ~" V( [/ C5 d8 u' Z0 \7 }) f8 Astrcpy(str, "hello");
8 N* a+ q7 t. Z& V. rprintf(str); 8 u P: r: c6 z
}8 }9 b% B4 |3 l2 H3 F
请问运行Test函数会有什么样的结果?5 h6 b- x# @/ }5 i' J
答:
! k1 w" q/ ~) ^, ochar *GetMemory(void)
2 Y4 w# ~) j5 r/ g{ 9 L7 ^/ T9 J) {: F4 h# F) ^
char p[] = "hello world";, i- F2 C6 F# l# t( ^* `. R
return p;6 Y' t9 a$ K ~% S" G7 w
}
# l! W8 h/ o- g# E1 B$ M+ S8 g4 Mvoid Test(void)
" x: F! Z' v: {; |, U. |: A{
2 V' F& j5 D8 _9 O( Jchar *str = NULL;3 O& ]+ n4 Q* |7 N; d
str = GetMemory();- r; q& r; {; j9 i
printf(str);7 S) ]9 N1 N) j; v! Y; T
}( ]3 }" {, Y! {2 \
请问运行Test函数会有什么样的结果?& ~2 d' S8 k2 p/ _) ], m
答:
: {1 e. S9 O- o# t/ \5 B- A
$ S% h' [1 `: Fvoid Test(void)$ ]/ C6 B; @& U
{; W$ H9 r/ \/ v7 A% ^1 Y2 e% ?
char *str = (char *) malloc(100);
3 k7 h3 p+ _- pstrcpy(str, “hello”); / w2 ^) K5 R9 k- a% u. A8 ~
free(str);
$ \% i( `2 X) Eif(str != NULL)
) O# G1 D+ `! X" ^2 y; z{, T" W$ }( g+ X, A. g8 `
strcpy(str, “world”);
7 b# b! Q8 Q" k3 Y# x: Y$ z2 U; jprintf(str);
1 {3 R% w1 K8 _0 f) H}
- F& O8 e r3 N9 T, H$ C6 i/ Y}5 m. v% o$ X. p7 d" H/ Y6 F
请问运行Test函数会有什么样的结果?6 K+ [4 H$ f$ d
答:
. }7 ^0 s: _9 m
5 i. x. x5 y5 f$ Y6 `) p0 _五、编写strcpy函数(10分)
* }. ~, W/ t- y* z7 N/ {" b+ N% m+ q已知strcpy函数的原型是2 f0 _; Y9 L d' s# L9 c4 O
char *strcpy(char *strDest, const char *strSrc);
7 O4 @+ b1 G9 m4 ~4 b9 p0 i 其中strDest是目的字符串,strSrc是源字符串。" U/ e- @( Q9 @+ l- m- g) r0 P$ G
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
, f' m Y; @) _& p+ N" t: \7 B- V% F0 {+ z) J
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
5 l, {6 ^' a5 h2 { ?5 W0 @. i U+ I
六、编写类String的构造函数、析构函数和赋值函数(25分)' f5 w: U/ U! |, `7 l; i
已知类String的原型为:
& Q7 D2 [: ~3 p" a8 Z4 e/ x# Y+ G1 I class String
9 y4 B( o& b2 s2 w! f {+ B' G/ V1 c/ Y6 O6 M4 }
public:
, b0 b0 X) P. y( {8 y String(const char *str = NULL); // 普通构造函数" }# ~- f7 G8 e' x
String(const String &other); // 拷贝构造函数
; T$ }: F. u a/ M( b2 V+ ` ~ String(void); // 析构函数8 [- A3 |" C; C9 t
String & operate =(const String &other); // 赋值函数' L1 U6 M1 y3 }5 E# M6 L. w& {
private:
9 e$ `8 ~8 j: w char *m_data; // 用于保存字符串
1 h2 ^5 f3 u; l) |3 x9 j' y };- V0 W! t! ~/ K: P) D
请编写String的上述4个函数。 |
|