下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
  l0 M" T% \( c6 h2 \一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)5 ?5 m4 ~2 u5 s8 ^9 E
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
0 d7 W% J9 S' x3 }9 f! z* q! _    if ( n == 0 )
/ A  E8 J6 ^& b9 ^    if ( n != 0 )2 F- l# m0 C- p, A3 y* y' Z
以此类推。+ Z6 I7 G' I* |- J1 k
请写出 BOOL  flag 与“零值”比较的 if 语句:
& k2 X# X2 _6 S' k% t
) K# w6 w# q% v请写出 float  x 与“零值”比较的 if 语句:8 ]. F9 x6 y0 B; d% Z/ g

1 u  B; y' e, p* ?# I请写出 char  *p 与“零值”比较的 if 语句:- Y, ~  s& P' @# t0 ~

# Y; p6 o: }! }9 U3 b二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
$ q6 A' E" r8 a, h" n0 l7 ]3 schar  str[] = “Hello” ;
; U* F) V+ z3 R- _& L9 G+ Gchar   *p = str ;
; m& ~0 F" i$ g8 Q6 `+ e& zint     n = 10;
' `8 ?/ @# [& h2 ]请计算  ~. Q( l5 h! k! {# L9 o2 T! T9 x
sizeof (str ) =                 
: N" y5 `; G3 s  a% I, Y- w" E3 Ssizeof ( p ) =                 1 [* b* o+ a" Z
sizeof ( n ) =% ]. i2 Q) R" d. M# g5 r
void Func ( char str[100])$ o' |; d% y* _! W  K
{# Y6 q& B- X: y2 k- U$ X' Y. N
请计算
% J, g  r$ Y& V) h7 A/ {  Bsizeof( str ) =   
  Q2 s+ o: D4 s( U( x}
: W) b9 ~: H  H+ ?) t+ Evoid *p = malloc( 100 );
1 X4 C) ~, v9 B请计算
, ?  Z! v( ~  ?/ [sizeof ( p ) =
/ n) O2 j' P, f: ~, N3 n7 @  _三、简答题(25分)2 S+ O6 D# G3 n1 i. \
1、头文件中的 ifndef/define/endif 干什么用?7 A! H2 v$ d, t* S% v. S
2、#include     和  #include  “filename.h” 有什么区别?
( q4 Q6 n. d: [! a* C3 b; b3、const 有什么用途?(请至少说明两种)
' t3 K7 `, i$ i1 ^7 z4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
8 `* G6 x, Z; U6 t" O, R四、有关内存的思考题(20分)
, {6 B4 A) R9 R5 `3 U) @, ~void GetMemory(char *p)
( q- V# L/ F1 u4 w0 n+ }{
0 V! v8 ]6 O0 k/ pp = (char *)malloc(100);
7 P/ k" U: D) U9 p1 E: h# T}
: u( f- r+ g" j. M3 |void Test(void)
+ H' g; M( @& F+ W- @2 R{
9 }1 s& x; i. Ochar *str = NULL;
  ?7 x% p9 j' `" @$ d, P+ S( D4 XGetMemory(str); " A- W$ i/ P% Q
strcpy(str, "hello world");
+ {' h' `, @" D# s# N" ]/ F" Aprintf(str);
7 Q. Q4 e7 M' O' i}% o9 n) d0 \+ c
请问运行Test函数会有什么样的结果?! S: j  E. m( D
答:
3 k- a3 ?6 }2 r- c1 R" g
5 U9 p! n) Z, a* k( d% iVoid GetMemory2(char **p, int num)/ E* F! k; L: `, P2 z2 M' N3 ~; E
{" C* q. \  M- ?1 P% S
*p = (char *)malloc(num);9 B. f: n! D  v1 |& @1 r
}4 J9 C; p1 P3 X0 F. l, s5 d/ H
void Test(void)5 J$ E5 Y4 Y7 _9 E( _
{
9 z7 G! x8 K* Z, r8 a! Q" hchar *str = NULL;7 U" `! \! O% z. B7 `
GetMemory(&str, 100);0 R% S7 m4 U" T; r! J
strcpy(str, "hello"); 7 X; _$ V4 Z0 l8 y7 w0 a: X( {: C) r
printf(str); ) F* ]) L# b! k) W$ A7 o" _( l5 u. E# t. v
}
/ g6 [3 Z; p4 v4 v! Q/ }* Q  o请问运行Test函数会有什么样的结果?0 O, @5 N1 [. q  j
答:, c5 v4 I- n; O: i8 t& `2 t* |
char *GetMemory(void)
) e3 i" L5 |) W# M{ ; G- D' x, e; h
char p[] = "hello world";
' M/ m, a" S8 m& t  n1 \! ]1 Z+ t, ereturn p;
' r% ^7 b; @7 d# k4 a) ^}; K7 ~! G8 c. P0 p$ e0 |5 s4 O6 y
void Test(void)2 I8 S9 `% y7 c" F0 U* E5 E$ C
{. m& }( T6 S% g1 l
char *str = NULL;9 u& S0 D- s5 w% }2 p7 }  [
str = GetMemory();6 Z7 x3 r  p+ z3 M
printf(str);
/ j$ ^9 J& X. i; Q; E/ S}
/ B$ K: k0 B" b  l  d8 i; `请问运行Test函数会有什么样的结果?
- x" y; h# u5 s6 ?+ N  T答:: Y4 I+ _) N# Z7 I

# c' L6 U) e  j- F2 w, {void Test(void)" ?6 X: X% C1 v4 r/ f& d% u0 Z3 X
{
, Z2 f$ c& w' q' d- I7 q6 N: R0 `char *str = (char *) malloc(100);
0 [# e- ]" F. `& D( pstrcpy(str, “hello”); 1 N2 s4 s6 C  x- X$ r/ }; b; |* y9 A
free(str);     
; e9 n: ~; r+ L4 A8 _( lif(str != NULL) 8 b& q" F, n1 H
{2 d4 a, T! O5 N# X5 k5 G
strcpy(str, “world”);
" U# ?5 v4 F8 c0 E+ ?printf(str);
" u7 W* S/ n& ?. u/ v}, ^+ s$ U9 |8 ~9 F" ]" p
}
$ {. y  X1 {6 r1 E( G+ |请问运行Test函数会有什么样的结果?
) G- x7 `+ D  o/ |$ Z! K- N答:  s7 [4 ~: F# d: B
; d# C; r& _8 C* J! A; `% q7 E
五、编写strcpy函数(10分)
' p  J7 g1 ~7 J已知strcpy函数的原型是+ |$ I+ p) V# C
char *strcpy(char *strDest, const char *strSrc);1 o1 R2 S' U$ @/ S+ Q/ |
其中strDest是目的字符串,strSrc是源字符串。! f# s$ @9 p' \' E9 O
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
( A$ z7 l3 Z$ p- A1 `) D
. s: U. z, v' m. K# V2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?$ B, _. v, K3 |8 O7 K

6 S3 y5 w5 o5 r4 l4 ~% v. w( |六、编写类String的构造函数、析构函数和赋值函数(25分)
2 N( A- _9 i9 Y/ ]0 P已知类String的原型为:
6 F- Z) I# T, B6 t3 [$ m  M! R class String$ `/ Y. h1 c) G( h
{
; S0 L6 N, ~" I8 b- m   public:+ \+ J$ u; ^, b' |( ?) G. l
  String(const char *str = NULL); // 普通构造函数6 R4 L" g7 m, s8 i) z' {
  String(const String &other);     // 拷贝构造函数
/ `3 E8 c& r( G" {  ~ String(void);         // 析构函数
' O3 \9 Z4 ~  \# N) P( \3 N2 x  String & operate =(const String &other); // 赋值函数0 _) w/ \( T, G/ D. U6 K
   private:
5 Q" y1 Q7 k' f' f  char   *m_data;    // 用于保存字符串9 B  H7 _3 ~# ]
};
3 i3 v+ i6 z& {- E* y2 P% L. V 请编写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的发言:7 l/ ?: M, a" c , |% i! K* |/ o6 \7 y

软考的?

! |* t3 v, K9 h7 M% ^, G

其实都是很基本的题目阿

, T6 Y/ @& B4 F2 H3 X' Q" R+ m % @' J" ]1 S& B/ z6 m" ?0 D 8 t6 E/ `5 _. N' q! c3 z+ iC有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 _) }# ~( E3 c0 j r + e9 D# b- [) ~. ?3 j0 ~4 R

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

    1 Y- ~7 U0 H+ s( h: I

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

    ) a! O! e! a, I" P3 I 2 {( m7 J. ]! \9 x1 S& d2 D8 b2 E/ S' y yes you are all right 1 _# k' Q$ A o! v1 [楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 9 D$ g1 J, [$ b$ _" A1、头文件中的 ifndef/define/endif 干什么用? 9 \, k5 y+ H! g# J) U5 `" {起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……& M) n$ s% c* e' V #define xxx yyy 就是把之后出现的yyy用xxx替换0 O, A! b5 V5 K1 L# G1 j! n! x, K #endif 与#if系列配合使用6 J5 Q9 v7 B4 O6 @6 S, g% f7 { 2、#include 和 #include “filename.h” 有什么区别?) x8 L$ X- X+ e Z, V 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 : F# F2 M5 T4 l5 U1 W 3、const 有什么用途?(请至少说明两种)9 s3 K% P- ]: _2 d) N! @ t; q 限制变量不被修改,保证函数不修改变量7 p. D0 P9 _+ N4 Y% ~ 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?5 T. l5 e, ^+ {6 M 指编译的时候使用C风格的函数名 / l; A( p: @- `: o 2 B: l0 H2 V4 A1 Y% s四、有关内存的思考题(20分), q2 d |# x8 {9 O7 B void GetMemory(char *p)! Z( Q8 e! i* g! s% Q" W) ^ { ( p" R& _% b. @# P/ k+ N# tp = (char *)malloc(100); ( x" B& C6 B# V( V# m: _2 a0 c} 6 s, Z1 T2 R$ {1 I7 h% v! pvoid Test(void) . v4 o, d5 I# ^, o5 O { 9 \, d+ |; Z, X, u2 Mchar *str = NULL;0 b6 Y& t: y C3 b GetMemory(str); 3 ]. L- d3 U4 a& G% z% Astrcpy(str, "hello world"); 9 u* y& j t/ D! r# l4 j$ G$ c# _printf(str);) z+ b- C1 W j9 X3 i }3 A- W7 l) `6 Q! U# B# r 请问运行Test函数会有什么样的结果?- C6 |- W( r; ]4 G# m! x( b8 J 答:错误,str没有正确指向申请的内存地址3 _5 k p) o1 i' o* w9 @/ Y% k+ p& l Void GetMemory2(char **p, int num) Z& X% j8 }1 ?: y7 d; P { + W9 @: H s% m8 u3 t1 @*p = (char *)malloc(num); : P; l o( J0 P5 i+ Q9 e% E; n. Y7 E} ! Q Y4 f+ `6 zvoid Test(void)* P/ n* J: ]# u4 e9 ^$ b$ T( j: [ { 1 l( X$ ?) x& G! q6 Achar *str = NULL;& V. O2 `, @& L! h1 r' A, U. w GetMemory(&str, 100);6 d# Z% g+ S6 m5 c, D strcpy(str, "hello"); ) a- U, X) f5 Y& Y( d0 Wprintf(str); # E: |! o1 {# C! {2 m4 ^! x }7 G# B+ ?2 \; E, p 请问运行Test函数会有什么样的结果? 3 n4 Z$ h" \3 U. Q' d' j8 f7 G! r8 Y答:正确执行,打印出“Hello”, g, P- H; V6 X9 b. S char *GetMemory(void)6 c* C( N2 f" ^8 O7 s% a { / d* Z9 q z5 ]2 t& U' Ychar p[] = "hello world";/ o# @1 i6 B! q9 E% W: e/ h$ U return p; 0 U5 e. h+ J( q- l: e}& R% a) v, I1 T* P' s0 d9 C; C: g void Test(void) : g; d! |$ I! D+ |( y0 X8 O8 A{8 P7 M$ m1 h1 K( O) z char *str = NULL; D& p; [& z D4 C8 C6 r4 y/ rstr = GetMemory(); 5 d3 b; R% \4 qprintf(str);4 d6 D% ~4 a" }& i( I4 Q! c. { } * X# G) {. z: J! n! ]" y请问运行Test函数会有什么样的结果? ! f2 X' p. @1 m7 W2 g H4 @+ H答:错误,str指向的内存地址已经被系统释放5 P- u6 y) D5 B# o% R1 Q1 a) C void Test(void) $ A3 w; e' s M. O- H{" Q Q! i9 ^3 R, Q char *str = (char *) malloc(100); ! c' ^6 [# i: lstrcpy(str, “hello”); 1 W) z2 R& a, w' V3 P' I% g7 i% b, @free(str); ' n/ X$ k3 a% H if(str != NULL) 8 i6 R( w7 ^7 G; b( A, i{ & P/ w: R" Z8 S9 n Cstrcpy(str, “world”); % } L9 y4 I" N; Uprintf(str); & y5 g0 d# m+ h# r+ Z}4 H& m- i6 S6 z# @/ K E% u } ! `. j8 R; g6 t9 z c( l ?+ A j请问运行Test函数会有什么样的结果? 5 o4 t& b- J+ V6 p% j' _答:错误,free函数不负责将str置0,故strcpy无法正确工作 - @4 _" o, w& H- \$ m' R % d& c* Y- S3 ]& A R# o* D3 I五、编写strcpy函数(10分)! J2 n4 _0 j- N" @7 l 已知strcpy函数的原型是 ) p8 J( l& h' Fchar *strcpy(char *strDest, const char *strSrc);+ ]/ Q |$ _8 a 其中strDest是目的字符串,strSrc是源字符串。 4 i/ M' g' \7 f+ }- {' p5 z5 U% B) T5 ](1)不调用C++/C的字符串库函数,请编写函数 strcpy 6 y5 @% D+ r- tchar *strcpy(char *strDest, const char *strSrc); Q5 K# ^$ L6 w* e4 J# ~! v3 J1 g: Y9 }+ g {; U2 t! h) e4 R# C: ^$ w! E if(strDest == NULL || strSrc == NULL) return 0;% _- ?# E) p: D- o. K for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); x: S: h9 z( x* i/ H return strDest;* |! n% U( m8 h& W7 M, o C }% ]2 R0 G, q& u# h8 m 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?: D' ]" Y. b4 t3 u/ S: b6 I6 S 这个倒真不知道,大概是利于编程, ?# @4 n7 K5 Z 六、编写类String的构造函数、析构函数和赋值函数(25分) 5 r4 W4 k0 z# o/ ] c0 O: u+ v已知类String的原型为: + y+ M" R% h1 c1 Xclass String 8 L1 V1 p$ w* U8 X h, h$ x8 V{' e6 ]; y j% a9 w public:+ B7 f8 s* X7 Z1 y String(const char *str = NULL) // 普通构造函数/ l) C5 I& n- d+ a0 l X; B+ n { $ e) U7 {$ w: Q, f# a/ j if(str==NULL){2 v$ I+ f3 G. A8 c( e, @ m_data = new char[1];. e! Z$ M. [ r* `( Z+ h7 y1 Y; k, t m_data[0] = 0; 9 N2 G2 I) ]. X- h% n* Y2 x) Z }5 B3 j3 ~6 e6 Z. {* R: H6 m+ M' h else. ?! e5 u2 s- a! l4 m {/ K' `5 ]6 `2 h m_data = new char[strlen(str) + 1]; 9 B4 A; X; @; s strcpy(m_data,str);/ {% \& E( L6 U. c. x }' L8 r( s4 O5 S( `( f* R; y } 3 L! T: k7 W4 L& J) [/ k. J# i T# [ String(const String &other) // 拷贝构造函数5 a" b& W& J4 U: o { $ s2 {$ f/ {6 K' P *this = other; 4 ?$ y. m& P: G* j: z$ |}: I }# f) d7 i, A" ]0 O ~ String(void) // 析构函数" K1 w* |) y1 j# C4 ? { / ?6 w8 T, v& a6 R delete [] m_data; ) `7 _& l- x2 c1 s" e$ |& _4 h}$ t1 Z. j3 @+ c7 ?" V+ ~1 _! Q( d String & operate =(const String &other) // 赋值函数 2 `# y, V1 w; ^* B9 T{ [7 h( j( j- M* x+ P4 Z ~ m_data = new char[strlen(other.m_data) + 1];* A4 F; W2 g- L3 k7 z; X strcpy(m_data,str);7 b |' q K# |4 {1 }$ J return *this;" t; v7 [, o% ^; Q2 ~" W }9 [( K4 ^4 }! q8 @' e private:% l8 Z+ ~8 {- A: I char *m_data; // 用于保存字符串2 d$ \* m# E! i& p3 j6 M }; $ [% Q9 `6 Z$ @# q请编写String的上述4个函数。 7 |6 F( q$ U* w: ^" [
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    " _* X4 w# W; W% ^; s$ [
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?: h6 x5 Q. \8 W: E' ^ 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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