该用户从未签到
|
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
2 ]" y- m( V2 _$ ?5 \, R一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)! x2 H6 s* `$ {+ M- |! n
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:' J# I* i# u0 @6 g" a
if ( n == 0 )
3 ~: X" |2 [' _9 x7 O3 j3 I if ( n != 0 )1 s% ^6 A$ t' e7 P
以此类推。! W. u$ ?4 s V' b% w6 d5 d
请写出 BOOL flag 与“零值”比较的 if 语句:
6 B' [/ k6 V* Q) m/ L/ w3 P8 n& Q4 m! E6 i+ k) q: q( R
请写出 float x 与“零值”比较的 if 语句:
7 m- B, R( @, D2 h# {. s: q$ [# V: {) T+ I+ j3 M) E+ s0 S, W
请写出 char *p 与“零值”比较的 if 语句:
w% s# u* o0 T" `& m6 u: D/ V) ~. y3 v+ A; z4 M& Q) z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
8 Q: w8 ^0 r( @3 q. Hchar str[] = “Hello” ; + {) h. U \8 [8 l1 G
char *p = str ;
" w+ k; `2 R7 a9 S; |int n = 10;& h: ~$ E3 e C. L9 @
请计算
1 ]2 M( [" ]% H( n" E. C2 msizeof (str ) =
2 n1 Y- [) S5 r) _sizeof ( p ) =
2 [/ V' C' a6 |0 V7 a& @sizeof ( n ) =$ r( e" J. T9 N6 u2 X7 @
void Func ( char str[100])7 C- c" B5 A" O: Y4 {% d
{
' g3 o2 M1 Z. a请计算
6 |5 { s3 \ y7 d. esizeof( str ) = 0 P, Q2 s; g$ k0 P' C K
}3 H& `6 Q6 z+ r- u' @: k' t! l9 L) h* C
void *p = malloc( 100 );
* M0 M& E* E8 N! r! N5 S; D请计算
% ^" T( a- ^$ rsizeof ( p ) =. S# T0 w4 X/ P( G5 q
三、简答题(25分)4 q8 N: {4 o) y `1 z1 f
1、头文件中的 ifndef/define/endif 干什么用?
7 f5 H5 t X3 H: K; J0 F! Z2、#include 和 #include “filename.h” 有什么区别?- x9 x) H. W# B. U1 ]: E- ]) G
3、const 有什么用途?(请至少说明两种)* d/ U6 v& b+ [- P
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?$ K6 i- `9 G1 ~" M& {
四、有关内存的思考题(20分)( b! d, S# }+ [( h( [' x1 F, h
void GetMemory(char *p)
1 D. Z2 q8 ]$ _5 q/ z4 m{
% C2 F5 J# Y# l7 o) fp = (char *)malloc(100);
2 M* T5 Y( Z- M5 R/ x' n' o}$ G' P' l4 U1 D! l6 Z; Q
void Test(void)
) y, n+ z1 t( b: N: Z2 s( U{7 E; |1 G m" \& b; A4 v- B
char *str = NULL;3 J: s, v3 n$ G% S
GetMemory(str);
5 k- ]$ B- K, P* E# Q9 M% Lstrcpy(str, "hello world");
" {, G1 H }& J# c' Aprintf(str);8 p6 r2 u; ~5 T, u$ `" u
}
5 b, ^2 c$ p+ y/ J3 `请问运行Test函数会有什么样的结果?
; m1 [. ~+ [- M; [' L答:" l/ j3 Q. L! c# }+ z, _% \4 r
% s! J$ v5 f0 Y$ _0 YVoid GetMemory2(char **p, int num)9 {: k; A# k) k
{' h1 v, s# g& F1 N- L; ^; n5 c
*p = (char *)malloc(num);
, P8 B# w7 Y2 s6 g} L7 v+ P+ E8 f
void Test(void)3 L/ ?2 Q& z7 v, q: y! R1 W& N
{, d. K/ _& e% v- O
char *str = NULL;
. k4 \, y, f3 b2 P7 h( z' jGetMemory(&str, 100);
- b" \3 @& Y0 _# Dstrcpy(str, "hello");
& l R M% t* M T3 R/ C0 ]printf(str); . }8 g* \' M+ g0 ~9 }/ q
}- W7 M/ j2 c; h/ s; H" }
请问运行Test函数会有什么样的结果?3 O( E1 N- r. C7 `3 R
答:
7 y- [7 u! x/ q. |char *GetMemory(void)
& m# l$ b" M$ b{ ; H* v& U9 N, {. [, [& e) O
char p[] = "hello world";4 e- b& ~* ~4 Y- l& U. a/ w4 M* ]
return p;
: b: U3 J! T+ y ^1 [9 f( y' @}
z0 e0 o, u( ovoid Test(void)% k% P9 j! p5 w- {7 W
{0 j. c a: Y9 U# K* c, \' y
char *str = NULL;
1 u7 M/ y$ c I7 jstr = GetMemory();
* V% k$ L, m3 w7 G3 ? printf(str);* O9 }7 W- k. X8 l! c
}8 O" h9 q& L J
请问运行Test函数会有什么样的结果?+ B! g k! t! `1 R
答:8 @; w" J5 Q9 R8 _+ M" G
' C+ Y: x4 g" m! p& \/ N1 W" D Vvoid Test(void)
2 i) a% R, J: K% }# Z{* M* R7 P% K, C. m8 N1 W- ^
char *str = (char *) malloc(100);; J& U" k n. q- S" J* }; p
strcpy(str, “hello”);
' u2 h/ u& o: k$ kfree(str); - D P) r/ ?6 R6 v
if(str != NULL)
+ ^9 M& i- X5 A9 @- f0 Q8 U! j: d" D{
' X C t0 z6 W6 {+ | strcpy(str, “world”); ! a, u) M' |3 i2 O' h' C' x% c' W C
printf(str);* t. Q1 G6 V" g8 n: v# Q6 d5 j+ d3 ]
}
- @ o% Q8 N) y) F8 h$ Y, k}2 ^0 A e6 n% `+ `. l
请问运行Test函数会有什么样的结果?+ M3 v* }7 q2 l3 B% ?$ d0 j
答:- Y$ Z) s6 I2 Q4 i" ]% N: G3 s
4 a$ j7 k" \ i* v1 W4 a
五、编写strcpy函数(10分)
% `0 X; p# y* d, c0 j已知strcpy函数的原型是' D' f& E9 @& v
char *strcpy(char *strDest, const char *strSrc);; ~' M% m, p8 x' M- ]! k' x. {0 [
其中strDest是目的字符串,strSrc是源字符串。$ n# A3 Z! c# G$ N" f; k( u9 J
(1)不调用C++/C的字符串库函数,请编写函数 strcpy# v8 f9 ?0 E! c( B
# `1 O( s$ r) N' L7 H/ D
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?3 o* y! Z) \ |9 U" S
5 Q' U) f8 N4 Q A, i9 a6 n六、编写类String的构造函数、析构函数和赋值函数(25分)
1 ]# A3 [& z" K' a) D- `+ H已知类String的原型为:
8 U$ m4 V7 K' X7 O" u! N T- s class String1 s6 R( C0 S* ~9 w% z
{& |7 K/ E+ X; c7 w
public:
' H/ m, C0 O R String(const char *str = NULL); // 普通构造函数
. j! x4 q1 x* v' n" s String(const String &other); // 拷贝构造函数6 F: q! }% ?6 ~0 I3 h3 R: P
~ String(void); // 析构函数
7 ]" Q6 M$ v" O: d String & operate =(const String &other); // 赋值函数
2 S, Y8 F" z: N: T$ G private:
, K6 U' ^3 w5 c0 }( ^, m4 {# O1 t char *m_data; // 用于保存字符串
9 M5 w: ?% Y" m i; o: \ };8 k# A8 X5 V# V$ H
请编写String的上述4个函数。 |
|