下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
3 v! W. S! _' |: T8 q一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)' D6 `7 W  b$ k# B0 C5 H  ]" C
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
( V# m1 w" d* [0 a+ t1 N+ K6 h1 V    if ( n == 0 )! p, U, u: \) @* n) r) U
    if ( n != 0 ); T2 F1 p% F( }. N' ]7 j8 R" v
以此类推。0 u9 j. P+ U' M; r
请写出 BOOL  flag 与“零值”比较的 if 语句:
& D5 ^8 ^& u% Y# k, E, ?2 I9 k: Z; i
请写出 float  x 与“零值”比较的 if 语句:( t4 w7 q" ^* i& t9 P9 S# _

( t! Z/ }) L! J" C) l% D请写出 char  *p 与“零值”比较的 if 语句:7 u3 @/ X) O7 f: e2 v8 e: H# Z; \
' ?. b2 q7 U% k* ~/ b1 J7 Z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)8 _7 I- E4 i8 k1 I
char  str[] = “Hello” ; 8 J7 k" l3 l& l: {, U
char   *p = str ;
, G, p5 \5 g/ X, M5 j9 U9 ^: T+ h0 Iint     n = 10;+ F& H* E1 z% h
请计算
% R% ^$ t, t, a8 Psizeof (str ) =                 
# d- t: v8 d# q0 i4 n' D  h& \! Hsizeof ( p ) =                 0 D- S& O8 B# r2 _; w& R: F& j0 q
sizeof ( n ) =3 d) [3 v7 _' c, Q- f2 k) h  e' m
void Func ( char str[100])3 r. k9 Y5 T3 c$ M
{7 O: ^. K: h, ?" S7 w6 J
请计算
0 f* S! q/ W- E2 U' C, qsizeof( str ) =   
( R8 v+ U. C3 O3 R* E2 {- b: M}
+ v+ s4 e7 \. z  G7 Bvoid *p = malloc( 100 );) Z; h) r3 F5 ]0 `
请计算
- F- H5 U8 k# q$ Q; Q7 [sizeof ( p ) =8 L. x6 `; `0 Z& m( d/ o
三、简答题(25分)
. ?9 @: S: U5 \4 r. m1、头文件中的 ifndef/define/endif 干什么用?& X. x$ _( }: f
2、#include     和  #include  “filename.h” 有什么区别?* H: b( r8 |  H' a0 {4 ~! ^1 o
3、const 有什么用途?(请至少说明两种)" Y  w9 {/ f" T+ C5 M3 ]7 p
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?7 ~7 N7 I7 P5 k
四、有关内存的思考题(20分)
! w' M+ T+ e. _! hvoid GetMemory(char *p)
7 \2 Q- r- g! O. ~5 J4 a{
8 G0 ?5 {2 u9 D: t  I+ `p = (char *)malloc(100);
# R5 R2 P; }0 P+ y3 l: z}. O# h: z* X1 p! B- G
void Test(void)
" n( P3 ?  `' p{
" }4 j/ c' e  O: @- Dchar *str = NULL;/ d- G) K7 x" u0 N
GetMemory(str); 7 `: m' z& P! J9 P
strcpy(str, "hello world");+ l  x, j/ \/ i( o0 I2 z6 i
printf(str);' m' O/ K0 T1 F" B; b1 L
}: j- W" m9 A/ A
请问运行Test函数会有什么样的结果?
% Q9 o  B9 r! I* t/ r7 x) s; i3 A答:1 {/ n9 K: T2 {) ^& y. @0 |! |

" v, O* U/ m2 z9 ~8 {7 QVoid GetMemory2(char **p, int num)7 F; u; K" |) e- V! B( p% x' o
{5 c& o9 G4 J8 P8 S. D; w+ J
*p = (char *)malloc(num);. h, Z3 n1 t" o0 Z2 K+ L5 d
}
  r7 P, }3 l/ j/ m: J, xvoid Test(void)1 \3 a# _7 x% [. s9 |5 @8 `" \
{) S% x( b+ |# n/ ^+ ^: f
char *str = NULL;3 U, F" ~/ |0 p4 G! c9 R
GetMemory(&str, 100);
9 w  ~: t+ ?" F4 kstrcpy(str, "hello"); ) W0 |2 O  O5 t* X
printf(str); 9 x2 L  `  s! ]0 G; C
}( k8 B. ]; v# g4 H3 a- u% l
请问运行Test函数会有什么样的结果?3 W. \7 F% b; E4 k9 p0 v  ]
答:( j! i7 k7 s& z2 Y  q( p
char *GetMemory(void)9 X  k  ]- \  Z5 A/ q
{ 7 J/ V( _3 q" A0 k4 @
char p[] = "hello world";
& |: L( @# w4 k+ ]' G- Xreturn p;
/ P' D! a& f; G" o2 {}* B& _( e1 s7 H, x3 K
void Test(void)
& S- Q3 y, m+ }{
; n6 w4 v6 h' hchar *str = NULL;
  l' X, [6 f& ]/ Bstr = GetMemory();
; |0 {; S9 }* F. U% S. H- X printf(str);6 r- a9 Q+ g2 g* e& V1 n
}
. R+ J! x# d. b' b7 {请问运行Test函数会有什么样的结果?0 V9 @1 q  z  i" \  W3 `! I
答:
0 X3 n! @8 `" W5 |) e: g8 K' p8 {
: s- u  h+ G, l1 b8 Ovoid Test(void)
0 V. ^2 S! h! q! V& C, b{7 T. i" e# j$ T0 M# K, `; i* e
char *str = (char *) malloc(100);
4 x; k( Z6 V* S9 [strcpy(str, “hello”); 4 ^- F9 ]; J5 z% i) t' T/ i
free(str);     
7 @6 t6 s" f2 Gif(str != NULL) 8 j2 B9 X) ]& i* ^8 l2 M
{
5 N6 W; J( [/ {+ r) @4 h9 J strcpy(str, “world”); 1 h) L0 e# \. }$ R- r; E
printf(str);) U. _3 u$ e, Z( ?6 r
}0 B! v5 I4 R$ ^0 |5 L
}
: _* G7 d4 i6 j2 w7 b$ y请问运行Test函数会有什么样的结果?* M- d, l/ L+ y6 H- y  V6 [% p
答:
; [) {' H" ~7 Q. M0 Z( `& ^
+ F3 |2 i$ J8 U/ V五、编写strcpy函数(10分)
1 s5 e/ q3 G- Z, C2 x已知strcpy函数的原型是0 ?: `" S, e9 S
char *strcpy(char *strDest, const char *strSrc);0 h7 ~$ ~: n# o6 v
其中strDest是目的字符串,strSrc是源字符串。
" i- |8 j0 ^. q0 {' u) r' a/ f(1)不调用C++/C的字符串库函数,请编写函数 strcpy/ \$ B+ m3 q; }/ \+ s: m* z6 ~' o

  O3 c/ _: [* H" L2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?( ?* ~) C8 M2 Q1 g& ?
. C/ F/ s! v- y1 P* O% q1 f; K8 T
六、编写类String的构造函数、析构函数和赋值函数(25分)
& Y5 d: t: O  E* a$ q- P2 ~已知类String的原型为:, A0 J4 E6 q$ N# p1 X6 H" j% n- e) h
class String
$ E( E5 N9 k  C {
: h; m9 k$ \  N0 |; [& Y, c. l   public:
# C* r! D! n) y$ ^2 K3 J6 ?  String(const char *str = NULL); // 普通构造函数6 K  k- T- v0 |
  String(const String &other);     // 拷贝构造函数
$ t+ r4 ^/ [4 k5 e# q8 [  ~ String(void);         // 析构函数
5 u* r1 S1 C0 F' }& c% u/ A  String & operate =(const String &other); // 赋值函数
+ W/ H; B1 I4 a6 f5 q! q9 p! r1 A   private:( H( o# h1 L4 v/ i( K
  char   *m_data;    // 用于保存字符串( a/ k9 Z0 [. `- H( w
};' E1 E& j# U( H8 w3 W) O, O$ r& U
请编写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的发言:/ C; r6 k o, Z0 Y * U4 {- a. Q: U

软考的?

2 f I* Z8 Q3 i+ a

其实都是很基本的题目阿

- k+ C& }4 N% p# F1 a- |6 c) I6 V% z& r- [6 P* U V+ M: n8 n: c6 f 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% W, t N' N : Z% P, N- S* B7 B0 r

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

    ; x4 `$ v" l% m3 ]4 W

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

    ! b- I: Z/ s) {6 j5 U. c) L5 p. Z& P6 B. Y; G 5 I/ r) Y# i5 X7 k% hyes you are all right 4 G6 s% o5 @! g楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 2 v! Q& p& j7 r) U1、头文件中的 ifndef/define/endif 干什么用? 0 E @& P6 ~0 `" Q起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……8 g3 O; | l6 _# v7 C; h4 V #define xxx yyy 就是把之后出现的yyy用xxx替换 ( N, ~9 m [/ q# s6 T% [: K% v#endif 与#if系列配合使用 0 O' q' `' m- A( ]' `+ E2、#include 和 #include “filename.h” 有什么区别? 8 n! h9 D0 E# R- Z这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 . a z( ?4 O. \/ y* x: s* ?9 R 3、const 有什么用途?(请至少说明两种)4 D* I& b5 A1 Y( u; i- n7 j 限制变量不被修改,保证函数不修改变量/ I; n, ]# b0 O 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? & t/ o; K; `4 W: R+ C+ k指编译的时候使用C风格的函数名 ' l8 t3 _. K+ W: P) `& k- B & @ T" y& {8 ]: _( g/ h% [( }四、有关内存的思考题(20分)0 ?6 O& b, K1 C& M$ m0 _; ~" A void GetMemory(char *p) / I- S9 f. z0 Q" y5 U# F{ $ G0 t' f" p2 ^/ D) j$ a# Lp = (char *)malloc(100); & M8 ~2 D# `! a0 l% Z} : @3 Y0 t. U4 m Uvoid Test(void) 4 L6 z9 g) Z; h6 f8 @* A9 M{: F: Q9 ]1 O6 O/ k( X$ P char *str = NULL;. y% q8 ] I" t& ^$ I8 j/ M GetMemory(str); 6 Q( K1 w- |' ?+ Qstrcpy(str, "hello world"); A( L) [2 g j/ y8 L# D2 e printf(str);3 G& {6 C! u! W# u) Z# X, Q } % n+ Z# x' Z& r2 i8 x. Q请问运行Test函数会有什么样的结果?) z2 D4 b0 v& D2 j, k4 f" e 答:错误,str没有正确指向申请的内存地址& f3 W4 e$ S% ?( V) y) G Void GetMemory2(char **p, int num) ' z0 h4 @' R1 P, m+ {{ 0 W2 \ |- o$ @- S8 J4 a*p = (char *)malloc(num);, ?8 r" Q- O1 d S5 g } + n* T- o2 K i' u5 Yvoid Test(void)' w. f. q: ]- U6 X/ o& @8 [7 g { * p" ` q5 V1 _' d% echar *str = NULL;5 C0 L" s7 T$ K9 L) @; u9 m) W* q( k ] GetMemory(&str, 100);$ a1 m- Z+ }& y) Q8 A; m/ }% L strcpy(str, "hello"); 1 V; K7 L4 w }+ dprintf(str); 9 h1 U# ]6 f! x V% m }7 R$ g) c4 v/ ]1 u6 I6 [9 g& t 请问运行Test函数会有什么样的结果? |( t5 ^ p9 x1 N: m 答:正确执行,打印出“Hello” 0 }6 [, e' y6 \5 G8 J: Lchar *GetMemory(void) 9 K) z: f& T' _8 k7 d( t% C0 B5 o) w{ ' r- s o0 J( o j* I" C6 y; _ C char p[] = "hello world"; / ]( Y* t% O) s6 E- m( kreturn p;; K+ Z2 b7 H' {' ?3 G& E } : g3 ?! ^0 p( w- |) z1 svoid Test(void)3 Z, z( I" K+ d Y { 8 q! y5 d, c1 f' j! _9 X0 bchar *str = NULL; 2 n7 S N- J( O; C) E2 Zstr = GetMemory(); & N% u( A/ M' x1 E! d; Cprintf(str);7 C+ p5 x# o5 `' b- | }( ^. _* g$ R1 S% N 请问运行Test函数会有什么样的结果? ; v7 B9 X7 w: a1 ?. S$ n答:错误,str指向的内存地址已经被系统释放 2 L! X. B8 ]5 w7 Tvoid Test(void) 7 n2 Y) K* u/ ]7 M{/ M/ n* f# J: B- s char *str = (char *) malloc(100);# E! }' ^( i) D, D: e8 X strcpy(str, “hello”); * ?; q# o' h0 r( K( Ffree(str); : [4 F4 k- c* wif(str != NULL) * F* N6 P9 N& N z{ $ g6 S1 n+ X n- z( S" z* F# \7 i4 A3 mstrcpy(str, “world”); ) n8 c" P; Y0 f8 {0 `& ~ printf(str);% T- p5 u1 A- l) M4 M7 h( S% C }+ X: t5 l* i- ] }- R; t$ P& u: i0 p0 ~ 请问运行Test函数会有什么样的结果?' u9 a" i, g" W# M& Y 答:错误,free函数不负责将str置0,故strcpy无法正确工作4 y. @" ~4 \3 G# Q" h" m5 ? 9 W% ^1 F1 e+ g6 J) W ~7 b( h& ]五、编写strcpy函数(10分)' Z& F4 U0 w- m' X' F( g3 r 已知strcpy函数的原型是 + N4 x( P$ t% Tchar *strcpy(char *strDest, const char *strSrc); % Z( H' W. \' k; K, {" R6 C4 l其中strDest是目的字符串,strSrc是源字符串。7 B' z6 W3 ]3 B5 X- ?) n (1)不调用C++/C的字符串库函数,请编写函数 strcpy# Y6 v6 y: L7 l8 M. M) R) `- M char *strcpy(char *strDest, const char *strSrc) 7 `1 o- [$ W4 d. l; g{ ' v) O/ U! K t if(strDest == NULL || strSrc == NULL) return 0;9 b6 K9 a/ ]6 O5 l+ q for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);1 c+ v. H9 P- X; }# `$ B4 o return strDest; " ~; ]7 T" Z) g' c2 \4 R+ m}1 Y8 f' R8 d5 l, A) ^; X3 g. }7 v 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?! T( {4 p. h3 s/ U7 P/ { 这个倒真不知道,大概是利于编程6 L) L8 j5 G4 T) H/ Q; e 六、编写类String的构造函数、析构函数和赋值函数(25分) d7 }5 ~: ?8 P/ g! _6 r# B" e% V 已知类String的原型为:3 j% L) C5 K3 X4 N class String 4 e' h! }. }6 e8 @6 @{ 1 D4 X6 K. a. _! v7 y; j( D public:: M) S& [2 E- z ^# ~ String(const char *str = NULL) // 普通构造函数 % M* t2 W" U* |: A+ |4 e{ 9 P" l4 [& g# w5 |4 b5 H1 M. @ if(str==NULL){ : @& B* P8 H0 m* E6 \ m_data = new char[1];; B+ r; B) X0 w5 k& x m m_data[0] = 0;* x9 z) d }. o6 S6 @3 t } $ _9 x& m$ [ R/ Q$ J else ( O1 m, z8 G( B- e4 H3 q {" S1 ?0 i5 Q8 l9 l/ k; z" }* K m_data = new char[strlen(str) + 1]; $ E) j# j; a3 y9 e& \8 W5 } strcpy(m_data,str); ; j: G% T a/ [3 ]& H5 z+ r }* u- {0 b2 `! E }2 t) y% [4 e: B+ M/ S } String(const String &other) // 拷贝构造函数 3 W1 z8 r2 A4 U" h3 I1 { D{ + U( q2 X7 P0 F8 D8 ^6 \ *this = other;% _; Q }6 k m- d4 S: f } ! v# y! h; v/ G$ ~ V4 K/ U ~ String(void) // 析构函数 4 z6 ^" v$ d' F' i: ~* B6 F{' i5 z E9 I1 i% i* _3 W1 k delete [] m_data; ) T, ~( I' o9 {0 ?}# ^( [% d2 s& Z q String & operate =(const String &other) // 赋值函数 3 x h' S: n/ l: v1 A8 ~{ 8 X6 M+ V1 v2 z5 B9 B3 X m_data = new char[strlen(other.m_data) + 1];9 C( E# [* G. \0 D. n3 r) R( Y strcpy(m_data,str);% ~3 M/ s7 E, y/ } return *this; " y. b n3 e, M* \, D* Y* C' m}6 t" t+ M4 e! F& I" r/ S private: 5 q0 {+ x/ r. R3 F- Z char *m_data; // 用于保存字符串" u$ y- \9 q/ e( c }; 5 Y, O0 T, J1 e! ?请编写String的上述4个函数。 & N$ ~# C2 h0 W& g6 O2 g; E: v) y/ d
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    1 b) g$ [* ^8 e' o2 H ^, I
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? % j s" `! A( t. A3 b" w6 D这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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