该用户从未签到
|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案6 t3 m: m, u" E- T0 R/ Y
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)4 J' }! f: v# T1 N, q& `
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
$ m% {+ n# [' [7 c1 e if ( n == 0 )! v. n+ \: t& n) w! y
if ( n != 0 )
: @, G$ g- r& k0 F' H( ~- a以此类推。- f+ K6 v( o/ f9 E- k/ a
请写出 BOOL flag 与“零值”比较的 if 语句:
! j& P4 ]0 k9 K4 h4 j
7 v* P# _/ U% h请写出 float x 与“零值”比较的 if 语句:2 j- E& i# l- X
& y' z. Y0 n9 O' f& j- s请写出 char *p 与“零值”比较的 if 语句:
+ q- ]! n: S% X" M2 o1 {$ j8 Y% Q8 D/ _) O+ V$ D5 I
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
$ G# [: X7 `. Z. U' p. H5 L" I, cchar str[] = “Hello” ;
# a t) E" y- xchar *p = str ;3 G9 _) k, s4 p- g
int n = 10;) v$ L+ u8 h, K1 e9 J
请计算
* _# n" ?2 N1 R. hsizeof (str ) = 9 r5 u9 f7 E) h
sizeof ( p ) =
# x! J8 X" c7 }* {sizeof ( n ) =/ W# I) M' {: O$ d B
void Func ( char str[100]): r% w& j2 U. ]! W5 @
{& S- V) k/ X& o2 e
请计算 _; K6 X4 x. e6 Q
sizeof( str ) = : F' ^. H$ c& @
}
: u4 R' K: Y# S7 K3 K" x- Avoid *p = malloc( 100 );7 K4 ?, X3 `& v, E+ r
请计算
i8 v' I1 f" }" `2 H- n( Dsizeof ( p ) =/ b& k! A" c# Z( k
三、简答题(25分)! ?9 ^3 m" ]7 t$ s* [3 t
1、头文件中的 ifndef/define/endif 干什么用?
9 n5 g, z }+ r6 x, f# T* b0 b# I& U2、#include 和 #include “filename.h” 有什么区别?
, V5 Q# L& v" F. L( Q. d5 x3、const 有什么用途?(请至少说明两种)
/ S0 B) v8 c4 R; k. z; t& C4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
7 \+ Z( q0 B, S2 n5 d四、有关内存的思考题(20分)4 `, l# J2 M% H9 c) m1 o M
void GetMemory(char *p)
6 T: }" s7 t/ Q4 K1 _0 F; J( K0 E{
3 Z; Z8 k* V( z y# E/ Fp = (char *)malloc(100);5 l/ H8 r! v& U
}
' l4 B) ~- G9 r/ Z& ]/ o. Hvoid Test(void)
- _$ c7 e; d; E, H. f! f2 `{
1 r7 y. X2 Z$ V+ O1 D. \: |char *str = NULL;* T0 @4 Y& ?+ q) q ]
GetMemory(str); 0 Z/ o- }" d& P9 _" {8 z8 a- f( d; r
strcpy(str, "hello world");: ]. @# s+ Z- u7 M
printf(str);
( i2 A& A5 D$ |2 F: U- j}1 z( @, ^, J4 Q5 X
请问运行Test函数会有什么样的结果?, x1 e+ n& k+ a+ L- N3 s% f) B
答:( v# T! `8 F) I, \. R7 u! G$ `
, V# _" j- a( v2 Z
Void GetMemory2(char **p, int num)
' F- H# C: ]' a. E6 f/ w{. ^. \1 {6 H; w- [ K& f3 K
*p = (char *)malloc(num);
7 A Y. T S: T* w}7 H0 C! u1 O) O3 L! k/ B: R S# Q
void Test(void)
5 f5 D% v# Q2 V; [5 l2 o{ I0 r% K2 s( o, X4 Z
char *str = NULL;
$ W8 s$ k3 u' J) }7 I5 w* d3 fGetMemory(&str, 100);& Z3 ~* Q7 k8 k. {0 ?. A. L
strcpy(str, "hello"); 0 x v3 ~2 F: h$ f& d
printf(str); 9 w. Y, `6 [+ R! Q( f0 B
}0 {+ U% U& |; S! u
请问运行Test函数会有什么样的结果?
* p' U; | |$ I: ]1 x答:9 }2 s/ c! @1 t! O9 V, p6 `
char *GetMemory(void)
! p0 C; ^. q4 j. B" q: \{ 3 C$ |3 J+ \/ `3 f
char p[] = "hello world";2 `, c' M* T) B1 b4 Q3 U/ @7 V
return p;% }1 n3 i* B) G
}
# ]3 ~# |. S) L1 \3 \void Test(void)5 y' f2 m* i0 b! I& n6 q
{
9 V$ E' `( \8 t( w$ \5 I8 pchar *str = NULL;# s8 f9 R2 u: m+ }" B u
str = GetMemory();' k! F3 o; D6 V8 m8 M3 z
printf(str);
) k- T! F( _! T; z}
6 z, ~" s. C$ z* u" [请问运行Test函数会有什么样的结果?& u$ ~9 n+ I. Y" p1 i* U9 y6 U* Z
答:, z) h4 }; D0 S6 X- G
! Z4 B9 \" A9 z' h& E* svoid Test(void)9 v& B$ F3 H. c% u* c. |+ D" `& p- s
{. D$ J2 y% N) |! g: e5 r
char *str = (char *) malloc(100);6 t# S! ~- |% Z
strcpy(str, “hello”);
) I+ H8 z/ ^& g4 }3 G' I) B2 Nfree(str);
/ g9 t% \2 ?9 p% D& C8 g5 fif(str != NULL) 6 l5 ]3 i; s0 a
{
2 @1 M( P# j" H/ L strcpy(str, “world”);
8 E) O+ N) d1 D! Y$ t( pprintf(str);8 Q: w7 o: L" `8 a: ]
}3 r9 S8 D/ `& F9 o( i- L1 J! N6 s
}( V- o# W! { {
请问运行Test函数会有什么样的结果?
) e4 [. O8 ^' m7 T答:5 N$ \' }6 _1 N D
5 U% v+ W, n* ] u/ w, w9 |5 H
五、编写strcpy函数(10分)6 }. z) z, _' K5 f9 g0 J
已知strcpy函数的原型是# R8 i/ A' R# m) o7 N1 [! S
char *strcpy(char *strDest, const char *strSrc);/ s& {% } G1 l& a
其中strDest是目的字符串,strSrc是源字符串。8 P* I2 ]8 H: d
(1)不调用C++/C的字符串库函数,请编写函数 strcpy5 R i# C0 N/ E# F. B
" n+ P" f D+ }! i
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?& R" K, k2 N6 @) V0 g
$ `7 @( k0 b$ P4 c1 y7 j8 J7 L% w" w1 s六、编写类String的构造函数、析构函数和赋值函数(25分)
- f8 N8 I }# L) P% A) t) H; Y已知类String的原型为:
8 F4 H, Z4 |" L1 T# n class String; L% Y B- G2 l: ?+ @& z# H: V4 q1 u
{
`7 g4 z7 M* w# N public:
1 {+ U3 S9 ?6 B/ q String(const char *str = NULL); // 普通构造函数
3 B- t/ K' O) o4 g* f: ~* z String(const String &other); // 拷贝构造函数
. d3 k" h! l3 L) N8 w3 l8 i0 O ~ String(void); // 析构函数/ E& {; M' z2 [
String & operate =(const String &other); // 赋值函数
1 c# p" P( ~5 O$ Q% ^9 V4 Z3 u private:
/ Y& ^5 O# r: P0 c char *m_data; // 用于保存字符串
$ H# C) W% a' }" `0 A" O };
7 j- P) l2 L+ ?) B8 ]# V1 c* N9 g 请编写String的上述4个函数。 |
|