下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
  \, [  x1 ]( K5 X! S( r! ]7 z一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
( ~9 S# e- ~8 |7 o提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
* M+ x8 o3 @' E$ }    if ( n == 0 )
, T+ m1 B/ T3 z. H2 X6 D# ~    if ( n != 0 )
0 T  E) J. v7 z( H1 m- d3 [: q以此类推。
. s& s$ ?3 B3 L- \请写出 BOOL  flag 与“零值”比较的 if 语句:
7 }; F/ H' a. u9 m
4 W. L9 [5 B* H1 R# v  j, H' b请写出 float  x 与“零值”比较的 if 语句:
( Y5 @0 |5 R" u' @) x- J2 k
" ?- `% {% h; `: f% f请写出 char  *p 与“零值”比较的 if 语句:
& k% |  `7 f5 t* I+ H% R+ \
8 p2 H; @: R8 m$ ?& C  \二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)$ X; }" ?3 b) \* F( m# G3 B
char  str[] = “Hello” ; / x4 r% P1 l' Y
char   *p = str ;' N: Q2 N- P) b' L
int     n = 10;
0 C" e" x5 O" i# C9 Y请计算' L( U* c2 @' f" [" x2 J; o/ J
sizeof (str ) =                 - f+ _7 I, `! ~% m: @5 E6 k
sizeof ( p ) =                 ) g7 P0 t. y" Z" R# t
sizeof ( n ) =
3 r7 [5 {- K1 i# C& F# Kvoid Func ( char str[100])/ ?9 C. E; N- v
{& X6 a. s% M( @1 [8 X0 {% \
请计算 9 J7 N( C9 A4 T6 y+ S, C
sizeof( str ) =    - U/ z7 F. i% H7 }
}
3 N+ ?( n- r; t+ `4 zvoid *p = malloc( 100 );
: _( _( ?) f7 y8 f请计算2 g7 ^4 x! Y0 |" h5 ~
sizeof ( p ) =: E9 Z: m0 ^5 J% U# S
三、简答题(25分), ?8 R5 \1 N/ G( Q
1、头文件中的 ifndef/define/endif 干什么用?
$ c1 Z/ t# X/ Z2、#include     和  #include  “filename.h” 有什么区别?( V; D3 v* j9 I* H  z) Z* `) c
3、const 有什么用途?(请至少说明两种)3 }( X& Y" A" W& u
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
+ S. t$ A: N& G" F四、有关内存的思考题(20分)! i" Q. e' e% g4 x4 ~( A9 B' j
void GetMemory(char *p)
& P8 \) }/ ?  O) @{: t) \; M2 k8 g) \7 R; W
p = (char *)malloc(100);
! K2 P* W; S' D& M2 m}
3 Z& _. i% |5 t. `; {! o, H8 pvoid Test(void) 2 m8 D- }% v( f8 c2 r4 \" ]+ t4 f
{
  y. B* J, J% t& D8 L- fchar *str = NULL;
6 k' g( s8 G+ F5 dGetMemory(str); 6 R+ K9 L0 i6 G8 f1 @4 _7 V+ e
strcpy(str, "hello world");" T3 {7 y; j% m  m( I* @
printf(str);* A3 u0 k- A1 h2 Y! |/ g8 y
}$ C% v9 {) l/ l& c* Z% e7 a, M
请问运行Test函数会有什么样的结果?( p* H+ ?  x) X% z$ d
答:" ?+ R5 v$ {  G, Q. K4 W/ ?
/ q- b' q1 @  g4 D+ U4 O; z( k
Void GetMemory2(char **p, int num)5 g& R) D, _# U9 ?3 A$ g, R2 U
{! e( A+ m+ ]/ q6 O! w+ K" K% R: L+ N
*p = (char *)malloc(num);
0 ~9 |2 g8 }5 Z7 ^( M}4 E2 ^; ^  p" F5 M/ B- O
void Test(void)
7 `1 s! j9 N" W& ^7 x{, A/ }: Z# }8 k, Y9 h3 q2 S; ^7 Y% I
char *str = NULL;1 Z) L% W' U( I& T
GetMemory(&str, 100);
, v5 d( G: K( \1 ]strcpy(str, "hello");
) h9 @: s: D9 H( r( _printf(str); ) y8 j( g1 z  `# ^' \( {1 P( O
}; O$ z+ j) W  T; X9 K
请问运行Test函数会有什么样的结果?
7 }' {% V8 p5 x/ m1 ~答:9 Y+ q, t' q( }4 f) i4 b& z
char *GetMemory(void)7 D  |/ L0 h( p3 A
{
8 F: `  r5 S! ~; t. J% `char p[] = "hello world";
/ `' m8 z( j, k  Wreturn p;
9 b1 F- @/ ^! f: A}  }  S4 F$ u4 {( L$ }+ Y. P7 }. R
void Test(void)
  z4 {1 {5 K$ A* B& j{
7 @! s& a1 X. ~: V+ Z5 e) fchar *str = NULL;: ?3 J* T  q# g! w+ L
str = GetMemory();9 ]# d* K% C9 p" u% j. |1 L. P
printf(str);
  F3 F+ A8 |7 g, u7 _1 ?% g}
4 ]: \! P. j8 Q) B: K4 [请问运行Test函数会有什么样的结果?
  D* T. _/ S9 L' W答:6 u) |0 s% ~8 j6 g  F

$ ^/ z9 L: I7 T8 m2 v/ Lvoid Test(void)
+ v1 V8 a! }& f, m{
! U( O! ^1 C+ _7 Schar *str = (char *) malloc(100);+ P9 `- A' x3 f2 \" _$ r
strcpy(str, “hello”);
" r5 t! o  r0 j/ C6 O1 S6 ifree(str);     ! G. @7 a! u. c3 R- b$ v8 D/ @
if(str != NULL)
& K' M1 f2 o- ~$ R# q2 o- s4 Z& R{  J3 i! A5 r0 z/ [( `7 ^
strcpy(str, “world”);
" }' B& l0 M& Yprintf(str);* Q+ h, T5 s' j6 ^: t' Z
}9 y2 r6 i( m) w# N$ ]
}
9 D* X! E9 J0 ]请问运行Test函数会有什么样的结果?3 |' d+ E( a+ X/ p/ h7 J
答:8 l" m' E) L$ q* x8 z
& U; s. e; j8 o8 `6 i
五、编写strcpy函数(10分)( U$ X  G* ^- Z: @% p
已知strcpy函数的原型是
3 |3 p3 X- l) u. a char *strcpy(char *strDest, const char *strSrc);# m% V& J* M& B+ T) T2 q
其中strDest是目的字符串,strSrc是源字符串。
$ i9 A# D+ b* o(1)不调用C++/C的字符串库函数,请编写函数 strcpy& x  U' ?7 T+ F/ `! @

& G! V1 C  q- e; V$ N4 p4 a2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?0 B$ \) A9 x) D% G
0 p: R& S( F/ M+ d5 @' t1 j
六、编写类String的构造函数、析构函数和赋值函数(25分)0 k$ ]# C. z0 _9 E: X
已知类String的原型为:
) x' N6 m5 z3 \! s class String9 ^+ X3 [8 ~2 t; t4 `6 E) ]
{( Y0 [& ]/ h9 j+ b
   public:
8 T8 c: Z( x4 K$ @1 J: Z: `2 b, @  String(const char *str = NULL); // 普通构造函数
) X! E$ H# d; O7 W/ B. @' f# `  String(const String &other);     // 拷贝构造函数
, h" }/ N8 a2 j" J; X2 {( C8 C4 M4 E  ~ String(void);         // 析构函数: q; H$ e5 T  f/ M+ W! Y% ]5 j
  String & operate =(const String &other); // 赋值函数7 w+ s/ @; d. _1 g* s/ w
   private:
( ?# \+ \* e& W* E* {  char   *m_data;    // 用于保存字符串6 H2 \- ]1 ^+ |
};& x8 n+ E0 U/ G
请编写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的发言:& p5 K" ^2 d/ B6 \ 6 x) h6 b: M7 t$ x0 u3 g

软考的?

3 U3 M8 v3 ~0 p

其实都是很基本的题目阿

( z! ^- k" D' V+ B * n/ v0 u/ C* j1 \! A0 \! C/ l) i) N; T/ @. z) u7 q 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的发言:9 ^9 w/ S* l+ ` ) M& w2 p3 M4 U" P" N s4 ^

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

    ' Q& G! {$ H# z% s+ }6 P `

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

    - ]: a( m" C6 X( n# J- G9 X M8 B ?. P1 u( S+ M3 k1 k0 p9 f% R$ ?0 v! ?6 X/ m yes you are all right ( v2 l N$ V# U# z& x楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 1 [, t& r) {( v: ^ ?7 Q1、头文件中的 ifndef/define/endif 干什么用? ' x' b2 d" t5 L7 s7 g, W: D- J起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… I! d7 ?* f7 N #define xxx yyy 就是把之后出现的yyy用xxx替换 0 v. R+ d& F. x8 Q/ [3 f#endif 与#if系列配合使用 " P; h; r8 X5 `4 B: g7 f2、#include 和 #include “filename.h” 有什么区别? 5 M6 F) p' k$ ^' q) Z; U这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 5 }+ k: Q1 j1 b/ l3、const 有什么用途?(请至少说明两种) 9 d# p5 k% p; ^+ p限制变量不被修改,保证函数不修改变量9 Z1 b9 f C+ I% ~ 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?- \) Q$ b+ f( X 指编译的时候使用C风格的函数名 % _' ]2 j6 F$ {% b1 b3 }1 g+ t x! F- k' f% A: `四、有关内存的思考题(20分)0 J# w0 P% v+ a, l3 a void GetMemory(char *p) o7 ^. M5 T& \9 i: a. X \/ ` { ; |, m$ P; z. I, B! [6 ~5 pp = (char *)malloc(100); A( \2 q8 [: @9 O: z } ' s6 m# T7 P4 s& ivoid Test(void) # m, m+ |) t) R7 f9 y0 U* g { ' ]/ m5 M& ?# k Mchar *str = NULL;/ g1 n) L9 U x/ ?1 G GetMemory(str); ) `0 G( P" T8 K: s9 ?0 ^ strcpy(str, "hello world"); + Y2 R' a" h5 z( h7 vprintf(str);( g3 R* O* u5 C( f, O# f }7 _" z. Q' ~$ B1 H3 Q- R3 a 请问运行Test函数会有什么样的结果? 5 _6 j9 @* x0 X# C答:错误,str没有正确指向申请的内存地址 8 ^* D, Z. M, k; @( ~/ W- WVoid GetMemory2(char **p, int num) . l; `6 P* c3 p2 h# ]+ o6 ]{ 3 W( L! M3 x/ n0 t# y5 D, R*p = (char *)malloc(num);0 [" Z8 I, f/ V: ~6 i+ u }2 q' P; i$ P- ?: O8 S% Y, O) n void Test(void)1 Y* F, d: A) P2 z- N0 E4 `8 T { $ Q% q1 F! q; C9 T+ k7 k0 vchar *str = NULL; # x5 q n! I- P, D+ LGetMemory(&str, 100); * q8 p0 u' L& |6 _; b4 U* [$ {4 [* q/ Estrcpy(str, "hello"); : o, ?4 t7 o, s! w% _5 m# e/ Gprintf(str); . x' X& I" x- y1 a p; F5 f- ~9 B } 6 N! r5 S1 m3 b/ b6 X' q/ P请问运行Test函数会有什么样的结果?0 O: g, Q$ o, K( ]( k/ r 答:正确执行,打印出“Hello”4 W3 |) }) }1 ?( a" G! F6 d. _ char *GetMemory(void) ! f2 N3 Z: O% ^8 c2 U{ ) F j3 U' D8 B D! B9 s0 W char p[] = "hello world"; {1 P# z0 H' breturn p;3 y4 m- D" e/ j' J! k' w }# r- B# ^+ p3 n2 u2 E5 N; { void Test(void) Y/ U7 A, O1 t7 Q- s5 s/ l {. A+ m. V+ Z4 H+ C% S; @' c char *str = NULL; 0 e" V1 t9 t- u3 e8 z, H; astr = GetMemory();* O) U6 |( b- j: |% V' _+ z printf(str); 3 Y. n' m2 \( L9 c% I6 C0 G6 Z} ; N$ r( u v8 e. y/ q ?% p9 y请问运行Test函数会有什么样的结果? o, [: n: |/ w2 M6 U+ }+ S' P答:错误,str指向的内存地址已经被系统释放 " l- t0 i$ f2 } d# Qvoid Test(void) 4 C& T% I( m9 \( o6 R w; \! s{ 2 p4 g; O& L7 g& zchar *str = (char *) malloc(100); ! Q5 t7 t" [/ Z' L" ]strcpy(str, “hello”); 7 Y7 n S# w1 S2 W. G5 Qfree(str); * W! v% B ~# m4 M if(str != NULL) 9 J' W. ?( d d( Y{1 d: C/ K$ }0 m/ f* b0 ] strcpy(str, “world”); 4 y% c% d8 p$ H2 X/ j* c7 Wprintf(str);( K* h4 G$ z, c5 L4 M0 P }! w7 |, U! U( K- F" ^' m1 Z! Y" r } 4 L, G% S: n Q' i6 S请问运行Test函数会有什么样的结果? 7 g# B0 y6 `! _9 P答:错误,free函数不负责将str置0,故strcpy无法正确工作 4 ?& A, A r) X* [0 M8 V - M' s& p* A8 i( Q五、编写strcpy函数(10分), R! ~; ?) K3 H; ^/ @+ X$ T 已知strcpy函数的原型是 3 D& a. L# q: W1 l1 vchar *strcpy(char *strDest, const char *strSrc);! M$ _' \1 z3 c3 q$ C& G$ \, a 其中strDest是目的字符串,strSrc是源字符串。/ E+ M7 e* J; ]* T+ H- E (1)不调用C++/C的字符串库函数,请编写函数 strcpy ' J, Z7 I- b/ j2 }- L. fchar *strcpy(char *strDest, const char *strSrc) 5 R3 a# S* l; S T, A. E7 A{8 I6 ^4 V! B( v0 @& l+ `$ Y if(strDest == NULL || strSrc == NULL) return 0;, n0 M* p c* I# u" m for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);, ?2 W' r ?4 u9 E% _ return strDest;( k0 o$ u/ V* U3 l } % y; H( q8 S9 j8 o2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?9 ?. b1 W1 T2 s# z& N- w 这个倒真不知道,大概是利于编程 # `! Z" s: i/ M( J ]5 Q六、编写类String的构造函数、析构函数和赋值函数(25分)) S3 G& o- L% D6 C9 n2 p 已知类String的原型为: ) I D- ]! o. vclass String 6 U L0 U# n4 H, K3 ^0 m& k) O; d7 C{ n+ ~6 q9 r& ~6 _8 A E8 c" M public: ' {$ e( S( T4 K# y" [) M' K6 { String(const char *str = NULL) // 普通构造函数 j. r% L: U% @ { * E5 W4 x' [/ W& P( Y& P: J" n if(str==NULL){ 1 H) H0 y) m9 L0 f, c m_data = new char[1]; * |( |1 z7 ]6 R% |( [4 x& l m_data[0] = 0;9 n* j1 x' v' E! \- @) g! j }. `3 ]2 R5 y" u else" Q4 H' V5 d& g" S! }. ]7 x {# `5 B8 o7 T+ b7 w( d1 Q7 ]( k3 b m_data = new char[strlen(str) + 1]; 3 A1 R7 D( p$ \5 q, e7 ^ strcpy(m_data,str);4 u4 K9 C# I1 c [ } ( g# O4 R# s1 j5 d3 a, D! w}/ w4 t0 @, B0 b1 J! Z ^" B String(const String &other) // 拷贝构造函数# E! b# a9 d% n" g- x5 `, Z {7 t6 A6 K5 E# y *this = other;+ \# L7 a2 `" n4 D& E } % H: D: [+ u# i @4 N ~ String(void) // 析构函数 % F9 O; E) j) D; _: ]- Y0 c4 C{& i' r' s& K; V: l ^) x5 Z' } delete [] m_data;" U1 `: |0 B. @, l9 b( _6 @ }: k- }9 x9 C+ \# x( ?1 K# l String & operate =(const String &other) // 赋值函数 . Q6 R7 D; c8 d/ P. s/ j, P% {{! M/ b9 [0 a9 ]/ R m_data = new char[strlen(other.m_data) + 1]; 0 U, J% N4 w! ?' @& R j! N strcpy(m_data,str); 4 {$ A! l3 v4 Z5 B" a$ J/ E+ }0 G( \ return *this;: ^1 ]/ G+ V0 s( } } $ ~0 i1 H$ q6 w) G$ ^$ A private:; J8 X9 |- ~6 H- n8 {; v* N char *m_data; // 用于保存字符串5 V3 l6 x) G, V0 I2 p };& }3 L8 N- K# d; ~) U0 e 请编写String的上述4个函数。 ) r' A$ M& z& S: ?0 v* [
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    : D; W$ ~: Z- O2 g! y2 l/ B
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?. u+ m# }: E) J& _. z9 k! m, u* } 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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