|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案. v3 M+ U! y; w9 I2 G7 y
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)# s4 \* j, g( y6 x" [2 G
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:" b- N/ t. W5 ?5 c0 f
if ( n == 0 )
( E* W s8 j, @ E2 g) G if ( n != 0 )9 [4 q5 @, o8 s& D
以此类推。
8 D2 m# A% b/ }! j* ^+ {请写出 BOOL flag 与“零值”比较的 if 语句:( F0 T) U" J2 R
, p/ b4 r- e/ O
请写出 float x 与“零值”比较的 if 语句:
^ p+ O4 |1 G$ M1 J; I1 u& [7 W
5 i1 Y# U+ \7 h; Q' h8 _请写出 char *p 与“零值”比较的 if 语句:
3 x) ~5 y b. i$ I- w/ e: A& M% J. A- K+ Z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
/ k0 E( t# e# s- [& Z7 Q: L$ r# L Echar str[] = “Hello” ; 8 N* }+ A# Q+ v5 o# @+ m7 R/ u/ s7 X
char *p = str ;, \# U( p* ~4 M& o6 W: j2 b6 c) x. D$ l
int n = 10;
3 B6 ]' e2 A1 i& e请计算9 b% H- t- Y P/ I( ^ ^% c
sizeof (str ) =
1 V# ~1 |/ ^: u7 _$ Y- n1 Dsizeof ( p ) = ; X1 [5 u4 k: i8 s7 U. A) I
sizeof ( n ) =
; J( g! g3 N# B3 P) jvoid Func ( char str[100])7 ? K2 x3 ?0 a) v
{7 l9 z5 v/ c5 X% c: D
请计算 - |) C. z) n5 S- N1 T
sizeof( str ) = 5 k) _6 ~# T6 y
}
- A: I: Z$ Y# {: b7 \$ Kvoid *p = malloc( 100 );' E c( `; y/ f; l
请计算8 x, q! ?8 L# L. d0 H& T
sizeof ( p ) =
" v5 ?# i1 V- w8 M. P$ @三、简答题(25分)
0 X9 ^. ~& x+ |4 L1、头文件中的 ifndef/define/endif 干什么用?
; m: w3 d: j; c, J& K2、#include 和 #include “filename.h” 有什么区别?
' w3 E: J6 s, i3、const 有什么用途?(请至少说明两种)
$ e! _( @, U: X5 x; p$ m% J4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
3 T* C- F+ ]: y: C' b" Z* d3 t四、有关内存的思考题(20分)
, S5 T( L6 }2 S- h( qvoid GetMemory(char *p)9 O* j: s% q( [( a0 _+ }
{* t2 ^" E$ A2 j! b" w
p = (char *)malloc(100);( x8 |: ^$ Y2 J N2 u. v0 y6 o
}
$ o- y) l( D5 }/ R4 c; Z4 Wvoid Test(void)
. D# c" G6 Z# y' S% x{
6 i, T2 c: s0 H1 Gchar *str = NULL;
4 q; E! W0 ~7 c: DGetMemory(str);
+ f; d$ @4 y2 a( }4 istrcpy(str, "hello world");# Y( v9 C* L6 w6 x2 p6 J
printf(str);- n% w9 _6 T, ~
}& q" N% [4 W+ c1 O% ^% R: h8 \
请问运行Test函数会有什么样的结果?
2 Z' X; W7 r5 U# c% _答:" X2 J" ?3 \7 W' t8 i- `$ N3 K
7 ^# A1 C- z+ W# IVoid GetMemory2(char **p, int num)
. a u% d+ Z6 k1 I( _4 G1 g4 ~% d{* O: n O8 z* W; s
*p = (char *)malloc(num);
0 A; {: W Z5 c) R. G: w) x}
4 j; j, |* k% N3 hvoid Test(void). z- k+ P& B* w1 G- G% X
{
2 F, X. {/ W9 @# x. hchar *str = NULL;
3 @8 o |% B: N, }GetMemory(&str, 100);
/ Y+ W7 m, n& G0 L# E/ _1 u$ }% Ystrcpy(str, "hello"); : _( D7 X5 ]2 Z. M
printf(str); / S+ k9 c4 C: S
}
; D$ s1 H' T8 P1 N. D, w请问运行Test函数会有什么样的结果?
! r: k7 ~& I& T# R# E+ N答:
6 Q$ q3 K1 q* P) [$ X" H. }. wchar *GetMemory(void). ~9 T O6 u$ b1 e1 M1 }
{
! R4 e x: Z4 {; x* nchar p[] = "hello world";
# n# l1 A1 C; u( b, i7 Rreturn p;
6 w0 g- F3 [8 j* W1 w: t}5 [! m D! N, J) B" v
void Test(void)
; v3 Q& W# |/ F{$ u4 E; _$ M- Q+ J! f5 S t
char *str = NULL;
' w; H( o. K1 B+ Ystr = GetMemory();' U. D# _+ t" c9 r; W2 U
printf(str);) R T+ [1 V) N. e
}
$ t7 Y: G0 p+ {请问运行Test函数会有什么样的结果?
: v; k! V+ w2 t4 K* A$ K答:
: |3 r' Q9 S, ?5 V0 i, ~4 u0 i: V
void Test(void)
) X, |4 U2 l0 H; b$ o{
. {0 U5 ?% X! }, xchar *str = (char *) malloc(100);1 V+ b: e; b/ f; H2 h5 z
strcpy(str, “hello”);
/ f8 q/ n+ o' i& Z0 Z) ]- \# b Ofree(str);
7 D9 \' e' D0 o, z" Q- H- P$ Iif(str != NULL) . D% m d# r7 B& J% b. U% k. I: F0 H
{1 I& ?; D! z/ Z. j2 X" F
strcpy(str, “world”);
Y' A, D0 L* t" Rprintf(str); @2 ]3 {% s* g; S6 O# O1 ]
}
' o% y/ s+ f$ g8 Y* |1 f}; N: v6 p4 ]; k- e, e
请问运行Test函数会有什么样的结果?! ^% Z M* c5 i) ]) n9 E Y
答:
3 Q$ k! r$ k0 L$ i7 E, T( {; x1 o; I+ ?
五、编写strcpy函数(10分)
3 E; }1 Q; k0 ]: c已知strcpy函数的原型是
& x" d% I1 W8 R) d0 p+ v7 ]. A9 o char *strcpy(char *strDest, const char *strSrc);" e1 t' q0 e( \" @, U* {
其中strDest是目的字符串,strSrc是源字符串。
6 Q7 q* t: D, p' x(1)不调用C++/C的字符串库函数,请编写函数 strcpy
' h1 w; h% D/ u7 A! J" i
. v4 e4 v7 F2 s! U2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?# N5 D( ~( j6 G$ K
" P, i+ O4 c; b& z7 \3 x% ^0 c7 p7 E- j
六、编写类String的构造函数、析构函数和赋值函数(25分)4 S/ F* {, N# J
已知类String的原型为:7 u9 {" c1 u9 _8 E& g. P
class String
5 H) Q# c( A% \1 Q$ H {
7 w) v6 p; L% h T# @ public:( W- s9 a1 W; U( M. M2 p7 Z: s' A
String(const char *str = NULL); // 普通构造函数6 M) k. s0 C; N; }1 Y
String(const String &other); // 拷贝构造函数
* V) E* T- i j* N4 n ~ String(void); // 析构函数
1 I: D4 }+ E) b5 j }6 @8 g, G& N String & operate =(const String &other); // 赋值函数
# d: x+ j$ L" E1 Q3 n4 `' s: i private:
4 D% t V( I0 K8 g. v char *m_data; // 用于保存字符串
6 j, @4 ?+ P* h' Z };
4 H! Y8 k' K m# j5 @ 请编写String的上述4个函数。 |
|