下沙论坛

 找回密码
 注册论坛(EC通行证)

用新浪微博连接

一步搞定

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 2383|回复: 8
打印 上一主题 下一主题

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
6 z: D- j- S1 W* {; x# T9 F一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
1 l; ?/ c/ F- V" G提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:/ e- n" i5 P/ ^1 e. X1 m8 Q/ N/ r1 F7 L/ `* ~
    if ( n == 0 ): G: H' {5 p8 {& i
    if ( n != 0 )
4 J2 q5 ~8 }! G) h% P以此类推。
' |( T+ @5 a( r9 w9 T! j请写出 BOOL  flag 与“零值”比较的 if 语句:& z( B. s' X) `1 Y7 _
6 F2 O$ D8 G) ?; N
请写出 float  x 与“零值”比较的 if 语句:: Y8 ^& F) @' C: V

  _; `& Y  c2 s; F# K1 ]0 m请写出 char  *p 与“零值”比较的 if 语句:  @# l  W6 [* [" B

! E: Q8 E. V; m. B9 {8 \3 Y二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
/ I' F6 J. W0 B) J0 M6 vchar  str[] = “Hello” ;
$ j! T, }4 U! A# {* z2 h; ~  Rchar   *p = str ;
$ y3 p. T7 y# L5 O& kint     n = 10;1 Y; e, _4 S) R5 Q, j; G0 y2 C7 Y
请计算
; A* E# Y/ m3 g( `! \8 {sizeof (str ) =                 
+ L; M  o& f3 Ksizeof ( p ) =                 
) R/ C& G5 n* y  i1 ^( F' C7 ]sizeof ( n ) =9 l2 ?5 a: P+ ~" U& V/ }( a
void Func ( char str[100])
1 }4 o7 t! R$ b* ~( s% V3 ^% [{# }) M7 F1 q% |" O9 u" b5 c
请计算
9 [" m$ X5 h1 d, T3 f* f0 Msizeof( str ) =   
' ?/ ~2 d% I8 q* y7 @4 X}
9 ~4 N3 x2 k2 C4 B& ^) ?void *p = malloc( 100 );' S7 f- J, b# _6 s
请计算, U+ J" h4 w0 I
sizeof ( p ) =$ j" @, s# ?' v2 j$ k
三、简答题(25分)
9 m4 T9 E3 w) K% {4 j+ v1、头文件中的 ifndef/define/endif 干什么用?
$ z8 k: [# k7 b# s) w5 G- l& k2、#include     和  #include  “filename.h” 有什么区别?
) _# {: m  _0 A8 C3 I2 S% z7 m* a! Y3、const 有什么用途?(请至少说明两种)
. W* T. ]) ^0 s# M4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?$ ]; p0 `1 M5 J8 M5 p  w
四、有关内存的思考题(20分)
5 G& ~/ y2 t! svoid GetMemory(char *p)
/ l( ~% n0 W( X' q. N3 K: x{6 v: Y3 z8 g% P4 K
p = (char *)malloc(100);
" L1 \! C4 [  T1 ]6 l' n6 A; e}" l- J. i3 C" m/ p/ N& O& u
void Test(void)
$ F1 g0 U, B5 g& N2 }3 t; Q{& M. }+ w* {2 j- }1 P4 L2 Q
char *str = NULL;
8 {: C& ^2 t) jGetMemory(str);
; z8 l' @0 Y, {* r, C# I+ C; W" l; Vstrcpy(str, "hello world");
6 U+ p# i$ D" e: C* c' `printf(str);/ i$ E4 b6 ~; Q+ n
}
5 p2 D5 q8 p  r( M7 v请问运行Test函数会有什么样的结果?8 q$ m5 B) g3 {9 ?+ k+ m+ e8 X7 ^
答:+ X! Q( h( d0 J. N4 V3 V

8 S( |$ x6 z9 ^# E% NVoid GetMemory2(char **p, int num)
* e  ]3 J# _( c; ^{# Q4 O* i' V8 e
*p = (char *)malloc(num);# m& v& h( ^% b5 h' h; M- s
}
, K9 {' ?# _' s1 h  z/ O# bvoid Test(void)' P9 r* q0 p# l/ P! T, i. y) r; [; H0 {
{- P/ u7 a( r: ?& w1 n; k
char *str = NULL;
7 U$ E! u  n$ H% U* x  gGetMemory(&str, 100);
! G3 h/ }$ A% h- w! v, Y% `1 Bstrcpy(str, "hello");
5 X/ }& V' }5 X- V. eprintf(str);
) I0 K% ]# n4 M* t0 R4 R}& B$ v7 i( L: @% s3 s' T
请问运行Test函数会有什么样的结果?
0 x" ^3 A& U1 F+ Z5 d答:
$ Z% y3 M+ m, c$ m& ^/ ichar *GetMemory(void)
. U7 }& W, J4 m{ ) q4 O9 B; h$ j
char p[] = "hello world";
5 C" B; w7 k9 g; o8 G8 }  h  Oreturn p;
: a$ ~$ j0 D# p( a2 c/ c' f' S! O}
( J1 ?/ M8 y2 F# I$ M+ Hvoid Test(void); q0 H' k  P; K, O3 A2 t# |
{- ^: v+ A- K8 P: z( r
char *str = NULL;
" Y- h7 S& ?, r. G0 C& A  B" A4 b  rstr = GetMemory();
' [/ Q9 @. V) ~/ }: r printf(str);
' V( q+ z1 b; f9 e}8 F2 `- v4 [- f+ E' o$ u1 o' h* U
请问运行Test函数会有什么样的结果?
3 O- G. f2 g1 l答:( T! n4 D' h) Q6 b0 {( c
8 `, {1 J& A$ V5 [% {, ]
void Test(void)$ K* o% q! M! Y3 ]* Y) S* u
{  Z6 E: k8 K+ x, x
char *str = (char *) malloc(100);8 G; `0 |" \7 m* n
strcpy(str, “hello”);
" Y( O7 ^, j8 hfree(str);     
2 b5 M2 W( I$ o" I7 ^* lif(str != NULL)
; W+ a& Q; Y: E6 C& ~  c{
9 |! {1 p: i, H4 P' y8 l5 i. W strcpy(str, “world”); : I- F3 e+ @; p9 `9 ^. D6 K- t
printf(str);) N4 }3 v% ?: k6 v1 J) L9 r1 q! J
}+ b4 `) c! w* K: Z8 Q4 o# ?9 j
}
5 N% u4 }; m/ z, J1 C1 o8 o" n请问运行Test函数会有什么样的结果?
4 _# Q( `; G: Z+ [) B! G  L答:
3 o4 ]( n) G. p( {+ Z1 ]: w0 h& J
五、编写strcpy函数(10分)4 I" @4 ]4 F" @2 {1 ]: {7 x4 @4 M
已知strcpy函数的原型是
+ b3 D+ Z( U. \! r- M char *strcpy(char *strDest, const char *strSrc);5 E+ o& B. {# X; G3 v4 n7 p6 Q0 Z. i
其中strDest是目的字符串,strSrc是源字符串。
+ k0 M+ d; M8 J* X/ R9 Q- x$ G2 S(1)不调用C++/C的字符串库函数,请编写函数 strcpy
5 f2 [9 d, ?8 k' n( w! o  x& t; q1 C
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
- M# n& B% a6 U: n9 ~# Z* @& ?% h& b4 I" {
六、编写类String的构造函数、析构函数和赋值函数(25分)
3 ?! h" W* T8 v# E- A( }/ x# I1 b已知类String的原型为:
; e3 s2 K/ u" h# K% h; A class String& o6 Z5 E, T$ l% K5 t0 H, ]% B
{% }% Q7 M; L* d0 f! F$ f1 U
   public:
! E0 s. x* B# E& j# f; G  String(const char *str = NULL); // 普通构造函数
7 {) h; a- j% V1 o% S  String(const String &other);     // 拷贝构造函数4 G. \2 L/ `1 Q5 p- Q
  ~ String(void);         // 析构函数  U/ l6 z( ]& v8 b0 z. ?# L
  String & operate =(const String &other); // 赋值函数
5 A2 p" o4 W3 ?7 T0 ]   private:
# r* s! S! K3 T' M  char   *m_data;    // 用于保存字符串
5 w; l2 t3 a2 y& i* J8 } };7 O+ f& y1 \2 x3 {
请编写String的上述4个函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩 转发到微博

该用户从未签到

2
发表于 2005-6-2 18:59:00 | 只看该作者

软考的?

其实都是很基本的题目阿

该用户从未签到

3
 楼主| 发表于 2005-6-2 21:59:00 | 只看该作者
以下是引用游侠无极限在2005-6-2 18:59:15的发言:) _7 i' J7 t2 J5 i) B , j* a1 O7 c, Y# r* N% ^

软考的?

J; a" K' V1 p1 s& w# u% E

其实都是很基本的题目阿

0 e0 I' Z) R$ t# W' i4 @0 Q ( l+ u5 d' f1 i1 K, Z ) B6 L* ^) R1 O7 B( {! B `C有N年没看了。。大哥给几道答案吧

该用户从未签到

4
发表于 2005-6-3 10:54:00 | 只看该作者

都很简单啊,要比较0值你只要注意它的范围和精度就可以了。

sizeof除了第一个为6,其余的都应该为4,因为它们事实上都是在对指针进行sizeof操作,而不是指针指向的数据区。

  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    5
    发表于 2005-6-3 15:04:00 | 只看该作者
    以下是引用Eagle在2005-6-3 10:54:17的发言: ( ~& @0 k7 }3 e6 [1 H! m 6 p- v9 J% S- X( O. S5 G/ t4 q- Y, K

    都很简单啊,要比较0值你只要注意它的范围和精度就可以了。

    ) g2 @0 G6 X, N7 p

    sizeof除了第一个为6,其余的都应该为4,因为它们事实上都是在对指针进行sizeof操作,而不是指针指向的数据区。

    + l/ _9 ]' T: u: o' ?! k$ l; Z- s8 i2 H' p1 ? 3 c5 m1 V1 D: C$ }3 B yes you are all right r. y1 m. U+ C, m! a; n 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 0 j- R& P/ M3 e: }3 \1、头文件中的 ifndef/define/endif 干什么用? ' [) Y6 s# W9 H5 B& `起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……$ z3 B4 k/ t0 ?! l' U #define xxx yyy 就是把之后出现的yyy用xxx替换 ) x4 b+ D7 |5 J1 k6 J! b2 p( `- ~#endif 与#if系列配合使用 J4 k6 K, [0 N1 P8 b# G5 {4 W" P 2、#include 和 #include “filename.h” 有什么区别? 5 i/ Y8 }4 }' Y这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 $ s/ I: I, i+ E! ^( x# C# J3、const 有什么用途?(请至少说明两种) _% y0 y& b6 X- C* O/ o4 S 限制变量不被修改,保证函数不修改变量/ R8 w; L6 I/ |3 o 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?7 \" u. ?6 W+ _) i 指编译的时候使用C风格的函数名 9 s% }6 G. P$ }& T - r1 y) J# \4 ~1 ^; D, K+ M四、有关内存的思考题(20分)- G) j! X+ A- f4 e0 ]) M void GetMemory(char *p) 7 c3 B3 J! M( J7 S0 q& t( a- \6 |# C{ 9 d4 N# L2 ^9 ep = (char *)malloc(100); . G: [# b5 T9 ], u; X/ T} ) ?5 X2 i1 z# C4 C1 ^void Test(void) " n% j* E" Y* X7 A6 t{: I* r% z* W Y! ~' H: o4 y% Y char *str = NULL; ' e0 b$ U# ^( C UGetMemory(str); - q6 ?8 u) o& _$ X- }. v/ _( a strcpy(str, "hello world"); ( r/ `0 }2 g, K3 nprintf(str); 8 ?% R" U# `1 s} # s( W2 K: i: I$ N- \3 S( ^' G/ m请问运行Test函数会有什么样的结果? / R+ m; R6 A) i# c答:错误,str没有正确指向申请的内存地址/ e: R' ^" T! _- ?( z* w' x7 p Void GetMemory2(char **p, int num)- }8 q: r6 f5 N' D* e' U" ^% Z3 F { 1 e5 H7 f5 P6 w! J# _) P% @4 O" b*p = (char *)malloc(num); 1 _# m* g8 j. t/ X% E1 K7 k}( y7 P7 N9 E1 |# G, z k( q1 i void Test(void)& s* q+ }8 |) H- k: | { ) }* {# ~ S0 T0 Lchar *str = NULL;: t' s/ {( Z/ S' O3 i3 F! V' z GetMemory(&str, 100);; p, p8 e+ {* X3 v! c strcpy(str, "hello"); ) o9 s) _9 E$ K' g3 [+ x+ M2 }( S printf(str); " F7 G) m) P; c! }}* P# i% K$ m' z3 S9 z6 @1 l 请问运行Test函数会有什么样的结果?, Y+ P- X! v/ {' Z5 N; [ 答:正确执行,打印出“Hello” # @* b1 ], [! c6 n2 hchar *GetMemory(void)+ F, I$ P5 N# T) s { ! f0 D" | _. |/ U+ v% wchar p[] = "hello world"; ( n1 N' W9 D. s* r% J) g! v& lreturn p;; c8 q1 [" D8 u/ \6 U } ; K( W- X$ Q! c$ Q6 e& `2 b& qvoid Test(void)% P Q- y) t) q5 [7 ?1 j. r4 d {8 B+ o3 a% A( f3 x, o, n- o% c. e char *str = NULL;+ b# G; F- G8 m$ ^+ u2 o h' Q ]% ] str = GetMemory(); & F0 ^5 W: @# k8 I. Pprintf(str); + A0 _4 }& ^4 }, B4 H}/ @3 s& ~; m" t& |' `% |$ @, h" v' }: ? 请问运行Test函数会有什么样的结果? _ f9 f5 L, p2 r" g+ l" D+ Q 答:错误,str指向的内存地址已经被系统释放 % {# n' m* |. Q/ Bvoid Test(void) ; Y% u8 X6 u" {{5 q5 p% e8 u- v. D2 W; [5 p6 g+ { char *str = (char *) malloc(100);* A5 a% L+ U3 g strcpy(str, “hello”); 3 j/ `; m( g% ^, q& O free(str); - {# T& ~/ q0 t6 K" sif(str != NULL) I2 p" }/ q, {: ^3 t {+ G' f9 j$ v; K strcpy(str, “world”); 0 z) a+ X! j) K. |. D- l* q printf(str); ; Q& A! l* x% a1 h}4 O% N$ d/ N# b6 W! Y% _ }9 p6 e4 T" q3 Q! v% A; m7 A 请问运行Test函数会有什么样的结果?, C7 y8 o8 k! k6 k% D/ J- M) X 答:错误,free函数不负责将str置0,故strcpy无法正确工作 , O$ M2 I. h' E2 H3 I5 ^; Y4 O& @) r9 K) y3 j 五、编写strcpy函数(10分): V0 t" Q- ]# Q1 ~! W) D5 O" F) Q 已知strcpy函数的原型是 5 F5 x4 i! r4 Mchar *strcpy(char *strDest, const char *strSrc);* v" Y! r4 G; Y" p" J 其中strDest是目的字符串,strSrc是源字符串。 4 L) t+ q( Z4 x9 U( i3 q(1)不调用C++/C的字符串库函数,请编写函数 strcpy : b) k; H, w6 g! a/ @char *strcpy(char *strDest, const char *strSrc) / M- {2 Y V$ z' p9 Y4 D{8 e/ ?* R7 w" y1 x. [# ~ if(strDest == NULL || strSrc == NULL) return 0; ; e7 k& w w' S6 t for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); 9 B$ h# a) n- N7 l, Q* i return strDest;: u6 j7 m4 d# y, [3 e% L r6 q9 p- U }* O2 w- e* Q, `$ A+ J g 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? $ X' b" H. B4 g" m2 J) s* _( }3 i这个倒真不知道,大概是利于编程" Y r+ r8 X8 [3 Q+ H5 j 六、编写类String的构造函数、析构函数和赋值函数(25分); w0 K. N1 r3 v" d) @' E2 p 已知类String的原型为: F" B/ g5 L) n$ y1 O4 O6 mclass String + _; J3 j) _& g/ K{ : P8 T$ H8 e# K( T- E public: 7 M, R& J2 F. J! U7 v: x+ A* g% X8 A String(const char *str = NULL) // 普通构造函数5 `, [$ T8 A$ v7 P9 N/ E& j! g { 0 r& Y4 m' H$ }3 ?9 A if(str==NULL){ ' @- A* N/ f$ L- X/ T m_data = new char[1];& m4 b% e# I2 P: f m_data[0] = 0;; M% E5 a( J0 A# T# p }. I( X* K* c, Q: l else % t- Q$ Y. S- b* b- S$ w% F4 S. C/ f { , s6 ^9 E' c. e/ ?# ~4 q7 I( o m_data = new char[strlen(str) + 1];7 `7 x& \& \4 U* L strcpy(m_data,str);# ^! [& p& `5 g; _( t } ; s1 n1 }$ d% x m8 x3 ^$ l0 ^} ) k; A3 _) I+ X! b r String(const String &other) // 拷贝构造函数) v. p% F& E" Z8 M3 r, N7 c {: V5 |2 ?' N' X# V5 q y0 z7 M *this = other;3 ?2 M# Y* r' C: O: Q+ o }5 E4 ^+ ~$ t1 C1 | ~ String(void) // 析构函数# l% Y6 k! y- t: b3 n6 q; w. y {- g; P* Z3 @% p# `& ]' k delete [] m_data; |4 I2 U) M2 P8 i6 w; ]8 v; R}! Z4 d* h' H5 f, j String & operate =(const String &other) // 赋值函数3 h, H% p+ H( I z' B8 f: U { + X" z1 B+ e& u m_data = new char[strlen(other.m_data) + 1];8 p, O& P5 P3 q strcpy(m_data,str);/ B* y- p7 r3 h, w- ?0 k6 g, Y+ N8 f- U return *this; ) D3 r7 _' {2 j( `; k5 q! ?} : D% M/ m- A# l! v+ Y# t8 u private: 9 Z7 |; G7 t3 J0 \ char *m_data; // 用于保存字符串- p N% K. ? {7 i }; ; @+ ^$ W, Q& x, d5 K/ P请编写String的上述4个函数。 - B9 P# K1 A7 K- Q8 Z/ P4 Q1 y
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    . p/ z3 o& t; [* F) u$ C: E# e
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    7
    发表于 2005-6-3 22:33:00 | 只看该作者

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?* } i; C L+ }) P) E 这个倒真不知道,大概是利于编程

    返回的是 strDest 指针,如果没有返回这个指针则说明函数执行失败(这个函数也是有可能失败的,比如溢出了,或者指针不可读等等)

    该用户从未签到

    8
    发表于 2005-6-3 23:06:00 | 只看该作者

    不过只要有返回值就可以判断是否执行成功吧,比如bool,BOOL都可以

    该用户从未签到

    9
    发表于 2005-6-4 22:39:00 | 只看该作者
    才初学C++,还没入门,只知道sizeof(p)的值~~

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表