下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
- y) ]6 r7 x) u一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
2 t& t/ o7 P. G) o" ~提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
' h' B: O5 W; r2 `% r8 N$ Y    if ( n == 0 )" x/ @8 C' t, I* [3 x6 u/ M' G
    if ( n != 0 )
, k% X/ d1 x1 z2 i+ J% H5 G以此类推。  R/ P  Q) c! @0 s3 f1 M
请写出 BOOL  flag 与“零值”比较的 if 语句:
7 o  u% N( p. k4 e2 a
3 R/ G  n4 _8 k7 i: I请写出 float  x 与“零值”比较的 if 语句:
; w& w/ U+ p3 I. {, j$ ]+ y' ?0 R9 |, t* @: a2 @3 k# c
请写出 char  *p 与“零值”比较的 if 语句:' F" d' S# Q, d6 Y; J. d
! [$ [2 l3 K6 w
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分); F' C. ~* `3 j5 }7 S
char  str[] = “Hello” ; 2 l8 l; u- d; ]: c& l$ p( u3 ?) Z
char   *p = str ;. X7 V" y0 q- A5 N% i
int     n = 10;, Q: }, G& ^3 G2 \) d% X
请计算, p4 C9 h0 \3 h' }/ _
sizeof (str ) =                 
0 A* V- }! d& ~. H5 ]& c, Osizeof ( p ) =                 
) W4 u. g2 ^+ s; esizeof ( n ) =
9 ~2 G) i! M+ R! svoid Func ( char str[100])
+ O! @1 C' H" }, z) B{# h0 |# ]7 U* v" d" O
请计算
( k$ w0 p$ ]- H; A% w5 V0 ssizeof( str ) =   
9 C+ u5 p9 P. X" H6 t, F. r}2 }- _  X0 i8 t$ Z7 ?
void *p = malloc( 100 );0 y- p6 U& Y8 ]
请计算& Z8 Y0 M" {1 k
sizeof ( p ) =
" n7 F2 {1 L9 H' o9 P8 W8 i三、简答题(25分)
; T& b/ f! {' [2 W6 V# ^1、头文件中的 ifndef/define/endif 干什么用?0 t, o5 L4 i# S
2、#include     和  #include  “filename.h” 有什么区别?* q! q" ^; L+ \7 j
3、const 有什么用途?(请至少说明两种)4 f; |3 ]8 b3 Q8 S+ Q
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?' }* o, L# q1 U* R: \+ x  C
四、有关内存的思考题(20分)/ ~4 q( h  }! q# N+ U
void GetMemory(char *p)5 l2 D2 s1 u3 V- E
{
; t5 j. D( u8 l- ^p = (char *)malloc(100);9 X1 F+ u4 q  U7 k! W( [# G* |
}4 b. ~9 }6 L" [. m
void Test(void) , e; G- v! ?2 V( z$ y7 g
{5 [; M5 i7 e* A; I, P6 p# C" A& ~% d$ O
char *str = NULL;
' _4 Y2 a2 y$ o1 L8 H# f! CGetMemory(str); " [& U; C* q3 M4 D- i7 W7 {
strcpy(str, "hello world");1 k# S: h9 M8 h8 ?# V+ s: y) a8 b% t
printf(str);) x8 s! I2 h- A! i4 G$ I+ G
}) Z3 D0 W1 w( W4 i6 z% p
请问运行Test函数会有什么样的结果?% l0 w4 D: }) k1 I: ~  r+ V
答:
; u5 n. I$ o/ X9 u7 z: f
; v0 u7 p7 \5 C/ z- vVoid GetMemory2(char **p, int num)
- Z2 c( v  l) y5 R7 c2 X* y3 I& Z{
7 S/ g+ ]! s" R0 g*p = (char *)malloc(num);4 V1 r! n: l6 E" q  x
}
- [: s3 s0 L- Svoid Test(void)
0 [9 u# p, n+ K% \{, L, m# y$ Y2 G/ B
char *str = NULL;# b' I  ^+ @) e3 v. o
GetMemory(&str, 100);% x6 H# E0 W& t4 t  ]
strcpy(str, "hello");
# t& B/ ~& V' F+ o( Xprintf(str); " @8 K3 T/ Y/ {! U" }2 z
}7 x# c: q2 R* S  F
请问运行Test函数会有什么样的结果?, P( }. u* V! a/ |9 P. x" d, V
答:6 @, u8 ?7 G8 ]% z6 }: r1 u  v6 j5 k2 r' ~
char *GetMemory(void)
, t* d( Y$ F, T0 H{ 3 q& x6 m7 ~, [( a  }% O2 g6 H
char p[] = "hello world";
$ l6 j) W, t0 |, ~7 sreturn p;
/ }, u8 k: g! P. l6 o}
! _  }/ f$ f/ F1 Xvoid Test(void)
% D8 F0 X6 `% H) Q  R* V{1 A6 |' J* P: m5 p9 D1 P7 W
char *str = NULL;/ H0 a) a! h3 Y& c' `$ h  s- a! p
str = GetMemory();
/ L3 W0 M4 N) l* v# u; k. s printf(str);
# D) [, q( F- |+ \$ a/ n}( Y, n3 R1 P4 `* G6 |
请问运行Test函数会有什么样的结果?+ ?6 ^: P& y; t. b# Y. I& e1 ~9 D
答:
5 n* `9 K6 [' c  p8 O! `0 s
( I6 y5 C' w0 F7 t/ V3 pvoid Test(void)
( o& h  `6 ?& u3 ~{; f% i" ]$ V( J8 l9 @
char *str = (char *) malloc(100);, J: G2 _# Q/ B0 z8 u5 Q
strcpy(str, “hello”);
8 {7 q$ s4 d3 Jfree(str);     0 c/ F8 @/ s2 I3 e( K& s5 ?
if(str != NULL) 8 X& F8 o0 g$ O! q, q; C
{
, E8 Z' G7 ?1 Y strcpy(str, “world”);
1 z5 u, N& k8 r  Z* hprintf(str);5 v6 \) z0 ?& r) t
}
3 M* Y' z  x/ a$ y/ P4 {4 w( S}
# u8 n- ?1 T# Q. j5 A; V. l请问运行Test函数会有什么样的结果?
- w, e5 M  V! g; N& g答:
$ L: `. s# ?( G4 I9 z0 }; k8 s$ ?, Y+ P$ v7 Q7 b) B
五、编写strcpy函数(10分)# l$ K9 C% U9 B; _
已知strcpy函数的原型是) U8 p1 P+ d5 a
char *strcpy(char *strDest, const char *strSrc);
& R# G$ W$ l+ H! E! X 其中strDest是目的字符串,strSrc是源字符串。+ g+ t" v+ _! i/ l- L
(1)不调用C++/C的字符串库函数,请编写函数 strcpy; {* o' F1 ^/ z" i0 [7 |3 @4 p, d' Z
7 |0 B* T6 W' X$ m. T3 I; ?& Y
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?" [2 [- S: R: w" u( g

. M3 G% Q4 ^# E% N- ?- }六、编写类String的构造函数、析构函数和赋值函数(25分)$ i' d2 r, W# @7 b
已知类String的原型为:
- v# T) N9 z# P( v, e: U, J. ~ class String  P3 z6 J7 M* ~" T
{
5 Z1 ?5 y) P4 q+ @. S3 G0 h# J2 ]   public:
$ x8 B5 X! V2 b/ m* S  String(const char *str = NULL); // 普通构造函数
! ~; a7 L& p* U  String(const String &other);     // 拷贝构造函数7 {6 H/ p; ^  e! y
  ~ String(void);         // 析构函数
, x! C( }5 m; A; U  String & operate =(const String &other); // 赋值函数% ]* T0 `, A1 v' f0 n
   private:
4 _+ \) u/ q. {  char   *m_data;    // 用于保存字符串2 @; g( a5 N3 Y  e7 A" t; Z" y/ a% Q
};& p% |. |% @: m) b2 p$ a# N
请编写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的发言:* F- `% b6 l8 P6 U2 ~* C * u, P/ N' p J

软考的?

+ h, r9 F( N2 p# x

其实都是很基本的题目阿

5 l/ h0 w- x2 |& u m+ z& ] * O( `+ k9 S+ D* ?: n0 h( A9 i5 ~) z % u* w. ?. d0 A kC有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的发言: g8 P6 I, q. F# p, \3 Q$ \7 s- Q5 _) L. z) c

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

    " q3 q: F( g# ?! l5 i

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

    + U. l& R* ?: ^+ c5 b( g6 ]( Q " c0 I( l8 s+ p& |! ~& e: ^; Q) R- z2 @. ]" } I) {1 Y yes you are all right % C3 J8 y. ?* b: d7 n- q+ g6 d& G6 V楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) - L8 z0 E1 k. j) T( s1、头文件中的 ifndef/define/endif 干什么用? 3 o( U5 u- a& e* M' o5 [起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……: U* }& T* A% N" v #define xxx yyy 就是把之后出现的yyy用xxx替换3 V1 j2 C- m: a9 G #endif 与#if系列配合使用: d, `- W j: l. F c& \ 2、#include 和 #include “filename.h” 有什么区别? ; j/ g Q% N9 D; \+ Z0 E这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 ( ]( t4 m) S3 Q* q% p: A7 u/ t3 Q 3、const 有什么用途?(请至少说明两种) 7 ~' \7 T2 `) A# @. {6 u限制变量不被修改,保证函数不修改变量 & E5 B, a: j0 Z( h! l, h. D s4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?3 K& k$ U% ?% f) A. ]3 z 指编译的时候使用C风格的函数名; H1 ~1 b0 @& X9 V1 s9 i ! z. G1 r0 k9 J! ^四、有关内存的思考题(20分)7 @7 [- |7 J6 I+ s0 ]' i. _ void GetMemory(char *p) Z& B2 r# @, k- \9 }3 y0 y { ]6 z7 K& F: V: `p = (char *)malloc(100); ; p6 Z8 Q! O, D" e$ Q3 h} $ y' r' ~- c5 K: c7 [void Test(void) # e# t) m" P, S. z3 \+ K7 ^3 W% e5 Z, {{ ( N& Y) W- C/ t9 X9 ~char *str = NULL; 8 |% _# l( k) u+ ?GetMemory(str); 7 p. g2 c. r0 A4 q/ { strcpy(str, "hello world");# w+ I2 S, h, L! S A# W7 p& { printf(str);0 k4 S* |1 d6 o `# o }! |. I" K6 G% w) O 请问运行Test函数会有什么样的结果? 9 |1 V6 D1 p5 Z% K d答:错误,str没有正确指向申请的内存地址- ^8 Y0 o% c/ v4 @, S) O, Y# Q7 ^; a, X" g Void GetMemory2(char **p, int num)4 U4 ~% d4 i9 y, J+ | {. ^9 i8 X ?8 u# d& ]; w" M8 K *p = (char *)malloc(num);( q% B" ^1 g, z; h. Q9 j: I; j } K4 d; Y9 z) m/ v& x! J void Test(void) + E/ Y+ A9 l5 K5 b/ A{/ Z, I5 c! j0 c& Z char *str = NULL; / a& c, ^( H1 n6 V3 \- eGetMemory(&str, 100);8 P/ R+ H1 j- a7 ~( g strcpy(str, "hello"); 8 U. O8 @# _/ z+ l printf(str); 8 v$ A v' [) `# S# t}9 W- Q8 Z9 q) y# O K" ^ 请问运行Test函数会有什么样的结果?7 b2 Y- p' {- H 答:正确执行,打印出“Hello” 9 @4 E) j0 a" Fchar *GetMemory(void) * T' R1 ~+ Y& T. K$ r) C1 Y4 K{ 6 Q% O/ _* j$ X1 Y0 f char p[] = "hello world"; + ^6 m+ E, o% R6 treturn p; $ D1 { F* B, |, }& e, R} ! o' Y1 K" `/ w h& Pvoid Test(void)6 T9 j3 g5 d5 [) R. m {$ q4 v4 v8 R3 n7 O7 q char *str = NULL;9 U, E- y7 e6 L& [% D. y str = GetMemory(); 0 d& a" ^& I, C) g. Eprintf(str); ' D& P. y& B, R8 i2 m" ]+ b} & S M) v* o8 \" I ~请问运行Test函数会有什么样的结果? 2 o/ q, v. @' r, h4 b# O; d答:错误,str指向的内存地址已经被系统释放( O$ E* F- ]# x" m' o+ h* f j( S$ G void Test(void) $ R, K7 W1 x e! `+ w- Z" h{4 a/ T0 i; b" R7 ?6 G char *str = (char *) malloc(100);; b) S5 j. V+ i, {5 L; k strcpy(str, “hello”); 8 h/ D# h; H* ?- @' S) Z& gfree(str); % F6 s% D$ _9 C6 K if(str != NULL) ) d% Z& j/ W3 v: U$ b' {{ / r. m- z6 f* D& Jstrcpy(str, “world”); / Q8 Q/ B7 S- _% H* \ printf(str);, k$ D3 @- n" l5 q+ J( Y9 D } - {( F$ }: ?! N- J! y, y} 0 R6 _6 V3 B% R! {& ~请问运行Test函数会有什么样的结果?0 G9 j7 U3 `3 U# x1 \! E9 ?1 L 答:错误,free函数不负责将str置0,故strcpy无法正确工作 ' d# s Q1 j/ r* m6 M( L 0 f- D1 k x# D9 d% W+ i( N五、编写strcpy函数(10分) # [9 [. F. K/ V1 {- ~已知strcpy函数的原型是4 j- u, _ X' [7 f& I+ x1 }0 z char *strcpy(char *strDest, const char *strSrc); + ~, p+ t1 @, b) E& A$ ]. n2 C1 P: N其中strDest是目的字符串,strSrc是源字符串。 1 y6 w+ E2 H5 c! Q( z6 {(1)不调用C++/C的字符串库函数,请编写函数 strcpy # ]/ G9 b: t$ ~1 w- m2 t" uchar *strcpy(char *strDest, const char *strSrc) 8 ]& `& a6 ?5 \ X, i# p& H8 Y{ 8 l6 }4 c: j) b3 o$ N4 e if(strDest == NULL || strSrc == NULL) return 0;5 h- E, ~3 m3 _9 X8 _1 k4 m2 r for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);( l! q! n9 x+ V$ m return strDest; 3 ?9 f* h' s& S4 w} ^5 O: S+ R ]' M3 {. \, V6 s 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 2 D, Q: y" m) G' m这个倒真不知道,大概是利于编程 4 k2 @ N8 K& ]$ h, W8 ]% f六、编写类String的构造函数、析构函数和赋值函数(25分) / r* ~. ]) H5 U) q已知类String的原型为: . e( m( B& h4 j+ nclass String ; ^8 _0 e( ^( h, Q, A- t+ Q! [) }{. M: P% R3 M- L- a! H* X. V public: % P$ ?! x, G9 [7 { String(const char *str = NULL) // 普通构造函数 q. f) q4 v0 d% S$ i{ # k7 k2 ~5 L9 _3 Y" L5 z" ?2 [* ^ if(str==NULL){ $ X+ c5 W' o# V7 O8 X3 S5 k m_data = new char[1];" Z8 d1 c# {, e+ V! K# ? m_data[0] = 0; ( l: N/ b& p& E) g0 L0 {1 E& o } ; r+ j4 j' q" u+ ~ else4 X3 K5 n( C# w( I$ l8 O: E { 7 I1 S, @3 Y" _ m_data = new char[strlen(str) + 1];% G& w6 l, R: J strcpy(m_data,str); 8 r% D' Q4 q6 v( M3 D/ c9 E8 q }5 j d- [8 @& Z& Z9 z8 U0 O }: H- K* ~8 ]6 Z3 y String(const String &other) // 拷贝构造函数 ( _8 y: T6 B" [% d4 m9 C{ " b9 p1 F# u4 i *this = other; 9 j0 _ s- e- W- [}2 q" Q( p& X' E! C ~ String(void) // 析构函数; l3 W8 {. K5 a; ? { 5 Q4 }' c% t: ^' h. Q delete [] m_data; . ]0 m+ ?" {' X& F6 m) S}: h( s9 f! t9 G* P* Q String & operate =(const String &other) // 赋值函数6 t4 [# B) f1 }& Y& J% ^7 D$ y {0 u* D; s$ f( {) f m+ [ m_data = new char[strlen(other.m_data) + 1]; 2 s: }3 X% j" [5 n: d2 y strcpy(m_data,str); 6 ]9 j) O- T* m* U( F return *this;$ _0 P+ P2 o- C; G5 E8 N9 k- Q }+ a0 {! [" }% }3 q+ g' B ]7 F9 A# o private: - [+ Q: \4 b0 I. `1 ?( p char *m_data; // 用于保存字符串 , R% g* Y: O/ F' f4 e}; - F8 b+ X8 r& R/ [+ q# V" e请编写String的上述4个函数。2 E' |2 n+ d0 b
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    1 e7 R$ ~! H% k: X0 @1 g! J# s
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?/ ]5 _. v3 Z/ V. ^, [4 A 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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