下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
8 [2 s( a+ s  h* H0 {4 |; p/ B- I一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)1 K" I$ Y" z7 h
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:( X) {% ]* }- m& J! S
    if ( n == 0 )
" i' l4 T& W  V0 C5 v' M  m  _    if ( n != 0 )
2 s( x* w# P7 y& U( b: R8 c7 p以此类推。8 y( O, D4 L+ u/ r( i
请写出 BOOL  flag 与“零值”比较的 if 语句:* G3 c9 e. Y& s9 a) [
: U6 R, Z2 n4 A1 l* r9 V
请写出 float  x 与“零值”比较的 if 语句:
  ^. x2 v9 f# m: r# K7 h4 Z9 L/ i3 |' V+ `, {
请写出 char  *p 与“零值”比较的 if 语句:
' p6 |- n! n$ H( u3 I0 A+ }
( G9 K- y! w2 v+ I& _1 k% i二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
2 N" Q4 s, k2 \char  str[] = “Hello” ;
% ?- h, H& s! Tchar   *p = str ;) x! q$ l% D( X/ U: O, w
int     n = 10;
7 Q  ~+ ~. ~6 {5 Q: D请计算
0 d. B, x6 w3 u) @3 b4 H- i, ~5 |sizeof (str ) =                 
' E% m- K0 z2 K2 C5 w, h0 _4 vsizeof ( p ) =                 
/ s! k7 S) ]. `: k# Z4 p; Wsizeof ( n ) =8 \! O; ~8 s% l; v, k
void Func ( char str[100])
. v  ]2 d! i5 m8 Z3 J9 H) w{- Z. z' y1 R7 z( a
请计算 # {1 G; i( s0 }/ J
sizeof( str ) =   
. `$ X) C  U; L$ Y) [}% g  c- u1 _7 S% m: T; D
void *p = malloc( 100 );
1 E2 A) r% L$ o& f# ^) ~请计算; T/ L; q. Q$ y: P, k
sizeof ( p ) =
# A! K( s1 B9 a/ v% K: E, G1 z1 h三、简答题(25分)
7 v: m: O- _4 q1 W+ d1、头文件中的 ifndef/define/endif 干什么用?/ |9 B& Z, I! T5 j* U% f  F( N% l
2、#include     和  #include  “filename.h” 有什么区别?
/ e7 |6 G# i* f+ e8 r8 y: W6 W3、const 有什么用途?(请至少说明两种)
# m2 [( Y8 _# e) v. D: u4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?, G! J# J$ W# m8 T, ^
四、有关内存的思考题(20分)
/ `3 a# V4 D* r+ Cvoid GetMemory(char *p)
: {4 j* }5 u  a  W( N0 i* o{3 x. w  w2 y- g* ]( |
p = (char *)malloc(100);+ }- `/ k' W3 W: s& K
}
6 h# l" S2 q. r( ^% ^void Test(void) ) Z3 i% ~0 h( P: k
{+ k( C% v( A/ y6 U# F  S
char *str = NULL;
& K, a! q. |1 m, v! s% u* z/ r5 DGetMemory(str);
3 f2 _& f6 S4 D* Ostrcpy(str, "hello world");
; R, u+ I( p0 ^9 y& z, tprintf(str);
* k; r1 g+ x  V' r9 s2 d}
( G5 v% J; L+ r( D2 Y# J请问运行Test函数会有什么样的结果?
' u* N- \# Z; c% w) G答:. u8 w; a( ~* A" k

$ J8 F' q  t' p7 xVoid GetMemory2(char **p, int num)& A, W: G$ R  t, N* C
{" y; f! u4 L* Q3 Q2 l: i/ G8 d
*p = (char *)malloc(num);
3 L+ e4 ^6 X* k3 L# G}
# u3 z& I# ~2 S  B3 a! [void Test(void)- `7 E3 ?- E" g. I# {
{
7 c- K/ N; H" |% [* lchar *str = NULL;  Z( {% Q) ?5 k; j+ Q
GetMemory(&str, 100);" I6 p5 ]& G; B7 i
strcpy(str, "hello");
6 R& K: N, q! Nprintf(str);
* e1 i( ~& L  l}
4 u% n( Z1 Q3 T- [请问运行Test函数会有什么样的结果?
0 n. w1 y* Y# d, y6 b  d答:
: E7 T4 _8 @+ j: Z0 h# f, z% Pchar *GetMemory(void)) ?( Z* b' i9 z; S' B: q
{ # f2 X' z- c! s9 X
char p[] = "hello world";) l5 M! c: a; _$ H
return p;
6 Y# i$ x4 O' E' t0 E& L}9 g  c- X) Y& O# r
void Test(void)0 C. b4 k+ |, Y- S: b  ]
{
5 F  k! t; m2 z, e7 wchar *str = NULL;
) q# ]$ G' h+ e' ?6 F/ o2 r  z# t4 pstr = GetMemory();
4 x5 v, a! X  V- t( p printf(str);
( c' L  l6 D9 g2 j6 w0 |) y}5 [% _0 a2 B6 J/ o8 l
请问运行Test函数会有什么样的结果?9 O( H8 O! C5 B6 t  N9 _7 M
答:
# U3 V) w4 `3 E* t; }4 L
9 `1 f3 X, i; ~: i1 Xvoid Test(void)6 R9 q) G/ Z6 y) F5 o
{/ Y' z+ G' v, _2 X2 G
char *str = (char *) malloc(100);
6 y% S) f" h. o2 Qstrcpy(str, “hello”);
  |9 N- n7 }* Q# w' J! t0 Xfree(str);     
1 T+ q, I" n( ~" b5 wif(str != NULL)
- I) @! x' y% ]* h{
6 L& e" R; g7 T3 U( v% |1 a3 S& k0 l strcpy(str, “world”);
' k2 I, n6 B" fprintf(str);+ q& {9 |5 }/ m! V/ V, R
}
) ]$ y8 j# |" t" y. y. W- g}
" O; Z4 o1 f8 Z6 u. @5 C请问运行Test函数会有什么样的结果?
  W( v! D- F  R1 Q答:
1 q8 M6 H9 ~2 b3 _) _
& r% H8 l5 Q  X! v# y/ r% _6 U五、编写strcpy函数(10分)$ R/ H- D+ i. q# b' f
已知strcpy函数的原型是
$ L8 d1 v$ G$ W+ d) S+ M" p$ z char *strcpy(char *strDest, const char *strSrc);
' N) z) U+ \$ I  P 其中strDest是目的字符串,strSrc是源字符串。
+ R6 d% u5 A$ s# ]$ ^6 w5 [(1)不调用C++/C的字符串库函数,请编写函数 strcpy
! x( `1 M$ l3 O3 Q8 c( h/ W* G* y1 T  E2 T6 G. U4 w: M
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
1 O4 o1 M0 b7 B5 }6 g& A9 }' I: c& |, ^
六、编写类String的构造函数、析构函数和赋值函数(25分)% m& x$ w8 }$ i6 n
已知类String的原型为:( P8 H3 U% |1 E- c
class String( m& ~+ O9 A  a2 q# b. B
{
: A$ C! F; z1 {( d$ z4 p   public:
+ b( j/ I4 N" N0 E  `  String(const char *str = NULL); // 普通构造函数$ e5 V) a1 B& x# Y) k, [0 R
  String(const String &other);     // 拷贝构造函数
: d4 y, Y+ N) o4 O. x  ~ String(void);         // 析构函数0 u$ b3 U) _; Q
  String & operate =(const String &other); // 赋值函数6 F  {( C: \5 ]& e
   private:+ b+ ]( X! ~; _( @
  char   *m_data;    // 用于保存字符串
( F  \6 k" E; \) T };/ N: f7 ~$ H( M
请编写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的发言:; G7 {' g- U4 z; v 1 O B+ G2 H# L. N

软考的?

9 O( v4 W @ k3 \% `, V

其实都是很基本的题目阿

$ w, w2 }3 W6 w) ~& j ( `5 m/ a% h: p: X$ X; } * ^% x5 \* ]) Z2 ~9 c z0 N; R 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的发言:2 C) d' C8 m! q( ~$ ~; n 0 N( {& q, i% Y0 H# R

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

    9 j* T G4 U0 _

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

    ; S+ q( i& F0 G* Z" M a! j5 c7 G% e! l; w1 { A7 t( y$ \) c. R) Nyes you are all right , b9 v5 _8 |: L9 t* u4 i* F$ y2 ?楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)) u: x" f/ p9 T3 C; w 1、头文件中的 ifndef/define/endif 干什么用? % d3 S) B) m" V' @: N起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……$ \& j3 ~: V+ G, W- a #define xxx yyy 就是把之后出现的yyy用xxx替换( P5 i2 O. p8 o #endif 与#if系列配合使用3 @% x9 Y! `8 q3 V/ n 2、#include 和 #include “filename.h” 有什么区别? - D: h, @: |* `4 Z# o1 M这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 " _3 Y* g2 ^2 z. @$ n3、const 有什么用途?(请至少说明两种)% x/ l# o6 z, R: S9 m 限制变量不被修改,保证函数不修改变量- R% G0 C- E, P" X 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 5 B$ z+ q' q7 L. m指编译的时候使用C风格的函数名 4 e. f% e% N3 H" l $ T8 }4 q/ X) m" C6 ~; H四、有关内存的思考题(20分)6 T! Y8 F4 d; O/ u% w4 v5 S7 i/ g void GetMemory(char *p)! S( z4 G$ r& I+ w* E1 y { : A* U) \+ e& Hp = (char *)malloc(100); ' q% f4 }" h+ R% K; x8 c} + I0 J @" b1 d$ v# A& V: }/ wvoid Test(void) 9 h {: `) G3 u9 A8 [ { - K& }' T; y v' s8 jchar *str = NULL;3 L0 O% m; d- Z! h" D) H; \* P GetMemory(str); ) |7 q! q) O2 U: j8 v5 r strcpy(str, "hello world");2 Y# I8 T1 d3 K0 _8 s8 _1 q printf(str); 1 C8 ^/ B0 |% A/ w+ N}: w! o |' o' n/ u 请问运行Test函数会有什么样的结果?( @, U: z/ b: e8 Y. F 答:错误,str没有正确指向申请的内存地址 4 r7 g/ M7 N* L: h6 p' y4 `Void GetMemory2(char **p, int num) 5 z9 X! j& } s* F# l{ ! k0 K$ h$ ~, v4 {# l*p = (char *)malloc(num);( \- X) q) ~3 Y( G& B8 q& ~0 l }8 n9 G3 K, ?1 I void Test(void)% y. ]) z5 \2 [9 x { 3 f$ f4 T/ z3 schar *str = NULL; - k) k0 ?% u6 x4 FGetMemory(&str, 100); y' s9 Q B4 Y0 Z1 ]strcpy(str, "hello"); 2 I- J8 _; Y5 Q2 i5 i; F0 vprintf(str); 6 L+ Y, M, q* d9 F0 U}3 `8 b$ ^3 R( _* t, F' N+ V9 f 请问运行Test函数会有什么样的结果?4 z! K$ v+ y; h( v6 Q 答:正确执行,打印出“Hello”1 ?. m" e# G" R+ o" D g' } i char *GetMemory(void): x( A4 I+ m# I' |3 e+ s { 7 S# P- E$ Y, `0 G1 B/ P8 ? char p[] = "hello world";+ D6 R, U. i8 i return p;# p9 y- [# z1 Q } 8 M2 j* @1 o; d5 j: d9 Hvoid Test(void)( ~1 R/ b0 P! |: A; v3 s { ; @& D5 d6 L3 A' @( kchar *str = NULL;, Z; E& D7 h/ P8 |( k str = GetMemory(); * I4 S$ q0 Z8 I( O, G* E( p/ v; L0 Xprintf(str);9 o9 S+ Q! O. \+ j5 L } ; n& l- j `# X/ r) u* e请问运行Test函数会有什么样的结果? ) e$ e: u6 f6 i& r答:错误,str指向的内存地址已经被系统释放" C) _& d5 t( k- |! k+ h void Test(void); T; e+ ^, P) v. ?1 D6 p {! a8 V2 L0 F: N' u char *str = (char *) malloc(100);3 M4 e, B+ h7 a3 K& O1 }$ {! U6 l! d strcpy(str, “hello”); # y0 V* f- D& M4 x+ _free(str); 1 A j* A3 i0 Q7 _! T0 n if(str != NULL) & y/ }2 m: O( I# G) }{+ q3 x' `( z% R+ m6 p/ I strcpy(str, “world”); ) t+ U# Q: L1 o! T! ]1 T7 J$ ` printf(str);* B% {+ V! Q7 x6 H ~ }6 P, Z( B8 C! I! ~8 y. x }/ S0 t" i& o7 ?+ t 请问运行Test函数会有什么样的结果? S1 n5 F% E% O* ?2 d, {2 Z' C答:错误,free函数不负责将str置0,故strcpy无法正确工作 # E# o: t8 [ U! }$ x6 P+ Q* u2 v 7 Y0 G! u7 D/ T8 i五、编写strcpy函数(10分). ~# _, ~; p- j6 `( J* a 已知strcpy函数的原型是 + S+ B! g* B( g3 O$ Fchar *strcpy(char *strDest, const char *strSrc);& X+ ^ f9 k w( O& \ 其中strDest是目的字符串,strSrc是源字符串。6 h* f: S, J( m) x M4 V (1)不调用C++/C的字符串库函数,请编写函数 strcpy7 w3 [, [: b- z5 B6 b char *strcpy(char *strDest, const char *strSrc); f+ S" G) W# h5 @ { , [- K3 S5 e! G- r/ X$ {: y if(strDest == NULL || strSrc == NULL) return 0; 4 ?3 X$ m& Q' z for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); & ^5 J/ Z$ Q0 c: ] return strDest;* J1 R2 x3 ~2 p }, |: W9 c) N& f( M" d4 A9 q* I 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? / C# k# \6 B1 C. H这个倒真不知道,大概是利于编程 . y( C4 G4 x7 c8 m$ T- M六、编写类String的构造函数、析构函数和赋值函数(25分) - k6 n( q @. B: o9 S已知类String的原型为:3 }2 ^" m1 c* `. u7 b% \4 n class String $ X+ x) E$ m+ U7 X, V3 N{ 8 x. s1 H/ k3 d6 Z) X* A public:# R5 r" y" z/ l String(const char *str = NULL) // 普通构造函数6 {; h0 g- Z( k7 l { 0 Y1 a! {% ~8 v6 h/ D if(str==NULL){ : C }/ [; f& r2 W- I/ ? m_data = new char[1];( ?$ e0 |1 t2 G m_data[0] = 0; / `6 c6 e( n! |7 U } - d: o7 m9 B0 v% U. o% _ else ) k% M2 G0 ]& l: e: N {, a& w+ w0 `% S; ?2 i% h+ e m_data = new char[strlen(str) + 1]; & L) {6 a9 C6 ]# T+ H T5 w( W strcpy(m_data,str);9 c. M" b- u: X* n }4 }: f0 C0 H. I( @+ d* q4 t }8 y! z, n# ~$ C- k( g String(const String &other) // 拷贝构造函数 ! f" {" V, O! w* C{, ~) b2 s( Y" ]4 P" l2 x *this = other; 1 y' [# F9 P9 U: Y} 7 N4 L2 C7 n8 i: X* Q ~ String(void) // 析构函数% B# f, G" K5 z) f- z: v2 O2 }3 ~ { d' a' ^; i( o/ q. A1 b delete [] m_data; 0 P5 a) h* ` R' ]! S2 s}4 e! }3 O3 q" y String & operate =(const String &other) // 赋值函数 ) p; g$ E5 D4 R- Y& t{ ' C0 x' o1 k" L& f+ `9 c m_data = new char[strlen(other.m_data) + 1]; , T; l) u* ~; c/ X3 O$ k& t strcpy(m_data,str); 4 t# u- R5 K5 f( G, l return *this; 1 d& s& s% c6 S v/ z}. W% y8 D) {/ C; B private:" G) Q: y7 ~0 {0 b char *m_data; // 用于保存字符串 ( F* a2 J" O+ ~0 C% I8 l$ ^};7 U- C1 h( z+ B+ j& m" z 请编写String的上述4个函数。 k8 F! W; d% y, g5 Q" ?
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    % r: J2 U d* O
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?( `! a+ k6 n. v: ^* [ 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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