下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案3 r9 ^) O- t& ^# A0 L
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)3 F" w6 u3 w  G, a/ G
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:9 c# L4 n' y% t$ s
    if ( n == 0 )" x% R% g. O0 ]
    if ( n != 0 )4 V- Y& G8 F) J2 L
以此类推。, I' x7 @* w6 [, h! }: e* P* w
请写出 BOOL  flag 与“零值”比较的 if 语句:* N5 J( |) B' @$ T

$ u0 S) ]; X8 B4 }请写出 float  x 与“零值”比较的 if 语句:
, j/ Z# J. ?. y% D* `2 X4 m7 Y0 D( r# _1 M/ Z  p
请写出 char  *p 与“零值”比较的 if 语句:* z8 i; N- H$ F2 B7 U$ q  g; U* ^

0 o6 |6 @, ?6 L1 D& U7 X二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
- m1 _, E/ ]9 U6 [/ ^char  str[] = “Hello” ;
& p. U0 B% L1 d7 ~. O% mchar   *p = str ;
0 k5 t3 C- A  R7 uint     n = 10;
0 a9 P. A0 v0 t  T8 a请计算
$ ~! L/ i- I* E7 x% [sizeof (str ) =                 . Q/ {  m) ]( f& ^! v3 M# n
sizeof ( p ) =                 
: |: b+ K3 d  Y) q9 Vsizeof ( n ) =
; c9 p6 R# w- A  s3 N7 h: ^void Func ( char str[100])& c1 e/ f& K0 u0 u* O
{
& ]/ l1 r/ n- e, z请计算
4 K$ a7 w6 v) \1 usizeof( str ) =    - O6 M. Y. c5 |% s
}
* S. B1 r7 B3 s. Vvoid *p = malloc( 100 );* r0 g+ p! ?+ |( w$ i
请计算* @) p9 Y4 k( s( r% y
sizeof ( p ) =
6 W# ?8 Y/ y4 W三、简答题(25分)- D# s  y1 ~6 V' r, e# \6 B
1、头文件中的 ifndef/define/endif 干什么用?5 o1 g0 J& E# L' Z
2、#include     和  #include  “filename.h” 有什么区别?
" q( E# M9 v$ D. g! A) y3、const 有什么用途?(请至少说明两种); z% Y. P' u9 k( ^
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?1 F' I$ [. w  Y, l2 ^' F1 X4 W9 J
四、有关内存的思考题(20分)
) _/ j8 b$ {% ]9 V' Rvoid GetMemory(char *p)  d, k; `* G; ]& [, u4 d% W1 w
{6 c' l4 p- L6 Q& l4 G1 r
p = (char *)malloc(100);5 @6 s  l# w, B/ H" C; d
}' L5 W3 w. Z; {, a: k/ c9 E
void Test(void) % {2 e( n1 c* h
{
+ A: b3 V+ W$ I3 y2 Ychar *str = NULL;
9 q9 d# z. O5 k  y5 y1 k& D( AGetMemory(str); 1 {2 K/ r( ?' H
strcpy(str, "hello world");* c3 d# t! V8 u- N; r7 W8 g/ r! W
printf(str);2 U0 u) o2 K/ T  Q( @
}
) _2 D' ^3 O$ `( o, a请问运行Test函数会有什么样的结果?
0 h9 ]! w$ I1 ?& O% m1 D% {+ s) Z答:
' v4 z9 @. {0 H* v- G  e5 o
; S0 [: w7 }7 R5 B( _( U- B6 jVoid GetMemory2(char **p, int num)+ p" k7 L  e" V$ Z9 V! v
{# i1 ^: k+ P, G6 u) G
*p = (char *)malloc(num);. M# ~+ a) {. g: o3 Z
}" l3 u) X0 S1 y
void Test(void)
: o+ F+ Z# G9 Z+ |# y{4 u/ D; J3 O9 x
char *str = NULL;, {6 f. b. x- G) _& g
GetMemory(&str, 100);  C- J6 k2 {6 G  i8 t
strcpy(str, "hello"); , q+ x3 i9 X4 g8 ^9 Q
printf(str);
  s1 O7 i  l1 K6 M/ z! o& K+ d3 S5 N}5 L7 J' P5 W# e& r5 R! x: R/ L/ Y
请问运行Test函数会有什么样的结果?9 f# F. a3 j7 h  h! ^7 R5 c
答:
, }5 v' Y  I) ]* s/ K/ Q2 z7 a& R+ Rchar *GetMemory(void)0 H, }/ y" u- S' [! ?. x' S
{
: a4 u9 Y' Q/ W* V5 lchar p[] = "hello world";
1 a' `2 b0 p' T9 ^8 K6 w. ureturn p;' M4 P3 e$ W) ]! h& `+ G
}2 g5 O/ R* T- l+ u
void Test(void)
- ^. a0 M. m( F{
! O/ n4 V$ P! n- ], zchar *str = NULL;: @% x8 A! R2 [. F* V: W
str = GetMemory();( [; I& f$ I. y+ }" f
printf(str);' ]0 a' v7 a) o2 ?
}* ]  [7 T+ p) h, A; j5 w
请问运行Test函数会有什么样的结果?0 ~4 o+ r$ v" N( ?
答:1 I( S, n1 m+ C! ^
( O+ v7 O. i. P) @7 O; t9 u8 z$ z$ y
void Test(void)
& u# e5 B; h9 l8 K% ]/ I1 o$ P{& ~1 U5 n+ i  ^4 E# Y
char *str = (char *) malloc(100);
* m' O1 u7 O" y1 _6 o# `strcpy(str, “hello”); : [' V* N) U/ N
free(str);     , z# R# v4 \  A5 p. u/ {
if(str != NULL)
* B. F. f/ U* U# j; f6 H+ T& F{* z4 t& `4 t: B! M, W
strcpy(str, “world”);
& U, w; ]. Z* C3 ^9 Wprintf(str);
$ J8 d( _( @1 |3 K. ^9 h}
! \- ?& B9 c2 R, Q: H2 F}
) i4 O) |- M2 D5 y& Y请问运行Test函数会有什么样的结果?
  L1 q9 y; I$ w# [/ ^答:
& s3 B( D, h! V- N7 v2 G, Q' Y$ I! p% H4 ?- ~9 O
五、编写strcpy函数(10分); C4 H! X0 e3 p- ^
已知strcpy函数的原型是- I& F, {3 q2 ]; ?$ n7 T1 K1 e. @
char *strcpy(char *strDest, const char *strSrc);8 G' R$ z2 E; W% l/ u5 o
其中strDest是目的字符串,strSrc是源字符串。3 }' P$ k9 p$ S5 W6 f3 i" R
(1)不调用C++/C的字符串库函数,请编写函数 strcpy: L+ _! ~* v' d, h. g# ?; G- @

* {0 f3 ?+ z6 _1 C( d% X/ f2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
: O% Y/ W4 B9 l9 e8 v; c( g2 P3 o6 |3 V9 j4 y9 N: C
六、编写类String的构造函数、析构函数和赋值函数(25分)
  r9 ^% f3 Y; h2 G已知类String的原型为:; T' h- t4 {8 Q8 I( ^, l
class String
9 c- R2 h6 b2 G2 R& J8 |" t {
9 P3 Z7 Q$ l9 }8 {   public:5 h/ J; l; [: |8 k) B6 z
  String(const char *str = NULL); // 普通构造函数
: r; x! W2 }5 \& f( T( I# X  String(const String &other);     // 拷贝构造函数, l! l3 q3 A, Q$ l
  ~ String(void);         // 析构函数
/ K2 a- ?" M) e% y% C  String & operate =(const String &other); // 赋值函数1 p% Y3 d8 p, u+ f8 V( ~# k$ y
   private:
* w/ l, T- S' I; `! O) ]+ ?0 q* ?  char   *m_data;    // 用于保存字符串
' M5 ~4 {2 \) E# x  k };) B- D' `# 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的发言:1 p0 Q5 Y# B2 d* I; U8 R + \4 l- `4 n3 p$ E+ r" p5 i* u

软考的?

. t* {0 _& ^( o. _4 W0 h

其实都是很基本的题目阿

, w' X; I0 W: ]4 c0 R( ]( G6 d. ~, R2 [5 d" y. Y+ R1 W " Q+ F' I- O' d4 Y+ ~& K2 y+ {7 n 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的发言:+ n" U7 W! O$ [. o/ J4 d( H2 m . U, B4 D* k9 G% v5 O/ b. H% [5 R8 Z- a

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

    ! ~( h, q; k6 O# I, j; F

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

    ; V6 \6 y3 ^% Z& T4 q, y4 D! n5 ~( G7 W# B! Q & u! L$ h, J' `& cyes you are all right ) Y3 e2 M; X* c0 A 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 3 k3 B4 S6 O9 W+ @1、头文件中的 ifndef/define/endif 干什么用? ! w8 q( T' m H1 l4 e& e7 b( a起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……0 m3 I* L& K# n: P: m4 [ #define xxx yyy 就是把之后出现的yyy用xxx替换 2 w. r3 ^* _0 o7 o#endif 与#if系列配合使用 4 `8 n J/ h. @" ~) p7 Q5 S0 B) E8 P2、#include 和 #include “filename.h” 有什么区别? ; n9 _! W3 I3 J1 m7 {4 w7 U这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 * A+ a9 h+ l, P" | 3、const 有什么用途?(请至少说明两种) 8 L \& h3 V1 } |$ B限制变量不被修改,保证函数不修改变量& [& t. R) @; |3 n' S. s% w 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?. i+ z' f& u9 P& K# L 指编译的时候使用C风格的函数名 ; X5 ]+ c& f- z6 q0 p: t& H" E7 X/ ^3 ^ 四、有关内存的思考题(20分) W7 I* b9 Z8 x& Ivoid GetMemory(char *p) * E4 H- |- R" v; N. N$ o7 \7 B{7 L( @* S# r8 F8 E: z, D$ k p = (char *)malloc(100); ! {; E7 M- N3 @+ h2 K/ z) W5 D} ( N/ B. g4 Q8 j' o2 I+ Ovoid Test(void) / W. j9 }; u. M9 B{ : [6 r ]0 s1 \char *str = NULL;0 g" x" e3 l# T% F1 f) ^: C GetMemory(str); , C: i0 O# `1 s4 o7 X. w strcpy(str, "hello world"); $ e& f* O4 c; m; D* @7 K7 dprintf(str); % G- c0 f( p$ R} 5 m8 O, @% v3 ]& V9 N请问运行Test函数会有什么样的结果? 0 [$ U1 _5 e: X1 A% p答:错误,str没有正确指向申请的内存地址 ' ?5 Z7 L- G! X( N3 K/ z0 Q. N; l" z9 MVoid GetMemory2(char **p, int num)/ C( e: F/ J3 i: E) g' w {4 N; b, N2 n+ F# S6 o" p8 ~ *p = (char *)malloc(num);- K, }2 O' @) M& Y3 F } % F$ }: u1 V% e1 a! b' e) o& dvoid Test(void) ( f2 j" W) s% v' _{1 u; h) d; N; }. |0 l: w! {: _ char *str = NULL;$ i6 n8 d e1 w; S GetMemory(&str, 100); # ?5 a1 H3 x) `1 Q+ ^$ n% gstrcpy(str, "hello"); ) Q+ q# `0 G& U/ L9 P2 `printf(str); $ S$ [: q+ m3 L6 L$ H) I( c l}3 D+ [; x1 b: A; ~ 请问运行Test函数会有什么样的结果? 1 @! {9 f& v" }" f; b1 n! C答:正确执行,打印出“Hello”1 b5 A' p0 e) c% ?( X char *GetMemory(void) 0 d# \6 H* `- V0 i{ - q7 ~/ U1 o, D& ^) h. q. ichar p[] = "hello world"; 6 d% m1 g. K7 @/ nreturn p;+ d4 O* K9 W4 z2 p' a } 4 j" B3 Z7 W# k: B1 E/ rvoid Test(void): o1 o0 N' C5 r* Y { 2 W8 s& u. ?5 e( X" z/ v# G! Tchar *str = NULL; - [+ m# f+ B+ K! F, I4 Y( ystr = GetMemory(); 3 V2 d& k1 U# K+ J2 W, T# iprintf(str);3 j! W$ B9 u4 f } & @: S0 k' f' i, a6 O5 l请问运行Test函数会有什么样的结果?8 e! ?' Q! g7 j1 V$ T; ^ 答:错误,str指向的内存地址已经被系统释放+ a' K' y* r+ P) t+ A: [ void Test(void)- O1 X$ @% h* o( i; c {5 T U% l* Q& y+ {! G7 ~ char *str = (char *) malloc(100);9 F; d) r+ g. k Y6 z5 X strcpy(str, “hello”); 2 ?0 X2 l4 R# J( C0 vfree(str); / b' o+ m1 u/ M* o5 dif(str != NULL) . z8 i2 U9 S$ G { 4 N7 H& n; O& N% dstrcpy(str, “world”); + T+ @* g& `) Q2 u% \9 _+ _# `- H* g printf(str); % W. [: p4 a8 `7 `3 Q} 5 T2 C( X' }' o1 i0 \$ T- x# d! ^% ?}8 E6 x' C4 P8 k C! o+ G- ]1 n- f 请问运行Test函数会有什么样的结果? 8 X# f: u& T: n答:错误,free函数不负责将str置0,故strcpy无法正确工作 1 y! V ^9 N8 w! r % F/ V. A6 n8 d* ?' Y; T9 b+ q& E; e五、编写strcpy函数(10分)% D |5 }) C3 F+ B. E; H7 D 已知strcpy函数的原型是 8 _( v6 [* |- O0 d; Ychar *strcpy(char *strDest, const char *strSrc);+ c( f3 p6 h$ B0 K" o 其中strDest是目的字符串,strSrc是源字符串。 8 m% `- o! q7 k) v0 \ ]7 I(1)不调用C++/C的字符串库函数,请编写函数 strcpy g v, |$ n2 ^4 b) M, Y: rchar *strcpy(char *strDest, const char *strSrc)/ e/ L( }" F% K6 ?1 u. E {/ K6 _5 a# c( M# v if(strDest == NULL || strSrc == NULL) return 0;# E' H& N% b T; k: K/ h: p. p for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); ' [3 X+ U4 p3 o: N. g return strDest;: e! i: M, @/ c; O } 1 E) ?& c' R. s% x! ~, s2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? + l5 |& ^1 q- N; Y5 A这个倒真不知道,大概是利于编程% b, p" @ J, k. u9 ]5 i 六、编写类String的构造函数、析构函数和赋值函数(25分)* k, i, W' G' W 已知类String的原型为:/ L1 @) f$ w+ \( N8 U0 K class String* [8 Q7 T: R, }# D2 ^7 i, @3 w% E5 v {! O5 [1 P) h$ `# o3 X+ Q public:6 ]# ]6 N# ]+ y: k% Y5 { String(const char *str = NULL) // 普通构造函数 5 G: c. z2 k) @( Z- q+ @{* U. S2 l M( s( v/ u if(str==NULL){ 3 }5 v4 x% C/ L9 v* H m_data = new char[1];5 }# z0 t; ^0 \) c m_data[0] = 0; ' q8 m* e. ~; C9 i N1 o }% w3 q+ E9 W6 ]1 T2 n* s" | else ( W3 Z& ~: W. G; h# i. B9 I { 8 W4 y- F' k# ] m_data = new char[strlen(str) + 1]; 0 x& V$ ^2 G) n strcpy(m_data,str); & g3 j# y* l& n } ) v7 ^/ e: Y# c$ Z. x} # `3 h! T) l' h/ I$ z+ ? String(const String &other) // 拷贝构造函数: _. j! n9 r* W n& V2 v* {1 q { 8 O0 [- I- G, U( Z *this = other;4 f# Z, n3 h& |* o } " S+ x) ^2 k. l ~ String(void) // 析构函数; b0 D) _* G2 t* y- m1 S { - o+ \8 l6 V7 A% {8 V5 @- g7 z delete [] m_data;, `) j N- `' b/ z; ^) u }2 o" C4 }. h0 F' }- P' G# ~' U7 M String & operate =(const String &other) // 赋值函数0 d% h, x. k% A. d! v/ {$ F6 V { " u" k. p4 v' i/ m& p6 \2 n m_data = new char[strlen(other.m_data) + 1]; ! Q1 @7 ` I* P6 F0 c, R strcpy(m_data,str); " E, L7 L! {3 m b0 | return *this;+ ~7 \, ~; @3 ?6 O } + d3 s5 g# y7 P- W# i# b private: 3 P" }% D B0 I, W char *m_data; // 用于保存字符串 6 v4 T, m h1 i5 r}; # s7 W; J% o2 ~$ `7 S' K* [$ {$ \请编写String的上述4个函数。& C% R7 K0 {/ @. k0 \' z2 T0 e
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    " c1 k1 z) J4 i! k
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?. D. l" j! w" a" h9 g5 } 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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