下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
' U- k0 c8 L* G( g2 H0 o一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)" C0 d8 \9 Z/ P* g
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
. j% u; n/ c/ V2 |7 |) M! V    if ( n == 0 )
* \- @  D- Z$ O' r" H' N    if ( n != 0 )
. g& p* D: `% p; |% `6 A9 L以此类推。
# c  w. p% |  x5 v; p0 E1 \请写出 BOOL  flag 与“零值”比较的 if 语句:
1 \; a- a, \1 ^0 S
$ K! Q  _: o0 \. Q+ B% ~6 F4 O请写出 float  x 与“零值”比较的 if 语句:6 x+ r; Z* U' Q/ z
# G! i: M, N- M  S, |& s' `
请写出 char  *p 与“零值”比较的 if 语句:
9 o4 z- e$ s& n, J9 @
) W0 b4 ]' l( P二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)% f% _! F. Y, }& ?1 y
char  str[] = “Hello” ;
, @) ?7 \" G+ f7 ychar   *p = str ;/ m( s0 C+ V/ E. w5 w5 A7 A
int     n = 10;- o* k; n7 z0 a2 C4 B; X1 M
请计算
7 ?% V7 F! l- g* B% Asizeof (str ) =                 " e7 |3 L. i& r# b8 e9 J) q
sizeof ( p ) =                   R4 Y( r0 @* D+ S5 @
sizeof ( n ) =
$ T+ a' L$ z, Cvoid Func ( char str[100])
6 r$ ^; K3 N9 O3 c1 t+ x{
$ u& j! I, N  v- O! O, s" u请计算 & I5 X7 x8 U2 c% c6 s
sizeof( str ) =   
7 s0 ?* H; K* L$ a8 b}
% ]9 F% G0 Y. k$ ]. K* svoid *p = malloc( 100 );
* I1 F1 s- E9 V7 K请计算
1 @7 y6 D5 P0 Q& _sizeof ( p ) =9 l, f8 t0 x  y0 f: W
三、简答题(25分)
5 C' y6 Y: l. E" J1、头文件中的 ifndef/define/endif 干什么用?$ z3 G  R9 q* E; e  Y- M" E
2、#include     和  #include  “filename.h” 有什么区别?% f" F/ A4 S1 _. C/ Q5 w: G8 m9 g6 X4 f
3、const 有什么用途?(请至少说明两种): _7 p& ^+ p2 O+ X+ Q) R& R
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?: D2 z% b! F( k5 n& Y1 f2 E
四、有关内存的思考题(20分)# t2 ~# e6 O- _
void GetMemory(char *p)
" R1 z% c" R$ l! K! ?{
" T6 c3 v/ V0 G9 Q0 F& E8 Qp = (char *)malloc(100);
" h& C# z1 A! y3 e3 y0 n1 l}
/ E, m3 e7 H- V6 ?void Test(void) 2 u4 X2 w# T- Z* d( r% o3 }/ P
{
, n- |3 Y/ x+ Ichar *str = NULL;
0 F6 G4 G8 [2 x4 {% i. AGetMemory(str);
5 A8 L. G+ s! P# @' }# e. {1 qstrcpy(str, "hello world");3 w" ~+ D! S' [9 d
printf(str);
2 `2 f, Q% _0 \: e. @. n# |}+ n$ {  k6 x! J: n
请问运行Test函数会有什么样的结果?
: s. z+ i% j" _# l' w; r答:  B5 \4 M% C" K" H# e# m6 I

! v( u  h; p6 d- w3 K+ h1 XVoid GetMemory2(char **p, int num)
8 @# |: ?5 U* V( Y3 G# o{# m0 M! k+ H8 S2 d
*p = (char *)malloc(num);; _6 f  T/ l# W! g( O
}0 M: L, L8 w' I0 J% j) w
void Test(void)# a, B. X8 z/ z! F
{
! W% p5 V8 ^7 F. N5 fchar *str = NULL;
' |% D( r" J& i0 \  r$ e: BGetMemory(&str, 100);9 P! T) m1 K; @9 D8 O; c
strcpy(str, "hello"); " V, c$ m, ~3 G( n+ [
printf(str);
' K5 s& G6 ~  J9 t" v# i}1 r* K4 P8 i5 b7 U7 c, V8 y0 Q
请问运行Test函数会有什么样的结果?4 K; C4 L5 [  Z9 Y; R( |; [% v
答:$ e$ C  Q' S7 {9 E: v. e$ c
char *GetMemory(void)
: C' ], ^- X5 ~; {% I{ ; D* b& ^& s3 X6 ?8 G. K
char p[] = "hello world";+ U# u9 `2 x: g5 a3 _7 }7 D, _. U
return p;
8 J+ [) ?4 y% F9 n}
& M3 U( X" M# i7 q( _void Test(void); O8 K  d/ q8 _# y+ O: x
{
" S2 f* x! U7 ychar *str = NULL;" c& c5 \. R7 g, n5 |! J, |
str = GetMemory();/ `5 p3 H! A- E/ ^9 h
printf(str);
7 N8 v; s: w7 s5 V( w! D}
3 X3 H1 N5 B9 Z, u9 [请问运行Test函数会有什么样的结果?
6 S: X8 d8 S! t; |答:0 P1 i) I0 ]5 t: b! Q
- _3 A( v& j; X; g
void Test(void)2 H* j7 [3 ~: b. L' m0 E
{
* c1 c3 w6 E, [# x% b0 K7 Cchar *str = (char *) malloc(100);
5 M9 q6 ~2 T1 e7 R. H. |strcpy(str, “hello”); ! |* D' O8 k5 s  x& ~0 U$ ~
free(str);     ( M# G! d& j/ u7 [+ {
if(str != NULL)
9 I9 Y6 e1 p1 ]: M$ w) h3 ]: @{
  r, y' b# ]; c; t: I strcpy(str, “world”); # y. L! X! v- N! [7 y' O5 b
printf(str);3 A# L* f; C+ d. }% ~$ K; {6 t& P
}" u, z9 P& z9 Z# X* B7 V3 b2 {
}3 @8 `- P! u' K9 q0 i6 g2 f
请问运行Test函数会有什么样的结果?5 e1 S: B2 Q& l  O& V! T
答:
  }) D7 v' w9 U1 m
" F9 u) [5 b9 ]0 `( s五、编写strcpy函数(10分)
& z9 J4 i- E# @4 f; A6 h$ ]已知strcpy函数的原型是- C5 f) T& U* [& R0 L1 |9 W/ G
char *strcpy(char *strDest, const char *strSrc);
3 J3 v: k" v, x9 X& }. l/ a+ U 其中strDest是目的字符串,strSrc是源字符串。3 L6 n) y, H' l- A
(1)不调用C++/C的字符串库函数,请编写函数 strcpy3 f8 N, s* Q5 i( e1 k/ }
, Q7 e0 z3 \1 [$ V" F2 d. H
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?! X. @$ \! m" y/ y% E4 o
' o$ r) R1 y# i1 A
六、编写类String的构造函数、析构函数和赋值函数(25分)3 q& N4 e2 |5 w5 M5 I) V# U$ g( J
已知类String的原型为:
5 U% B# x! o6 N class String
& k5 k4 t+ M# Q9 A* R, z3 E. O1 s3 v {
* X& d# k% L$ T9 t   public:
5 X9 d$ e4 i- Q- w0 [9 p  String(const char *str = NULL); // 普通构造函数0 @3 K: A: a1 d/ y0 Y# o- D, U' t
  String(const String &other);     // 拷贝构造函数  R) s: a+ f6 o
  ~ String(void);         // 析构函数
8 t! ^+ j& m) u& ]  X; W' u& Y3 J  String & operate =(const String &other); // 赋值函数
* \* ?. S, m8 U: g   private:# N1 O' d( ?+ h9 k: e9 V
  char   *m_data;    // 用于保存字符串% k9 d" N) ?; V
};
* x7 c" t" M' D$ Q+ C" j( g 请编写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的发言: 9 ]* | O# Z& O" c! C( N7 n$ O9 s 8 x- G0 O L. H ~

软考的?

, H! l$ L% k/ c- n

其实都是很基本的题目阿

+ p/ n' d/ C, h. @# T, A3 i ! e- u! ~) T5 A1 u2 r y1 r3 \8 I8 Q + J8 ?( j9 G1 _& ~7 |0 e9 Q; |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的发言:! Q& Z' j9 {- Q' n: E 8 a! F3 _4 \# B6 D) y4 g. {

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

    5 t) T# c% T+ N" K3 ~, s0 N( w; \

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

    - [" Q- `- g. T6 u& j; L' J# l$ D9 M, h1 ]2 R : G; M. r% Z1 Y. U yes you are all right ; F' C, S% n- c% ~, g楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 5 t) F% M$ G* J5 P; X: c1、头文件中的 ifndef/define/endif 干什么用?9 F/ i- c6 E O$ I! k9 r 起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… 7 P Q, b: i/ F- i4 Q. K#define xxx yyy 就是把之后出现的yyy用xxx替换9 o- n% Z E0 b5 d- D #endif 与#if系列配合使用 / T' g% @- b+ ~3 {$ r2、#include 和 #include “filename.h” 有什么区别?4 j+ v% \/ r: `1 M 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 / [3 ^% M5 w8 } d" t5 O 3、const 有什么用途?(请至少说明两种) 2 W5 ?8 `0 x$ F5 K( n限制变量不被修改,保证函数不修改变量 ' S L3 q: d, e; X7 O) ~4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?4 a# o* J; ^! F0 y v1 }, S 指编译的时候使用C风格的函数名 ! v$ S5 p( s+ u- m6 s. j3 \, j; f$ G" L" O' [2 \% C 四、有关内存的思考题(20分)! Y9 T @' E) L# J& \0 j. { void GetMemory(char *p) + Q ]. `/ r' p+ n$ U: U{ % h. l: _9 r" |" m! o5 kp = (char *)malloc(100); 6 V; |# c% z: B9 C}7 y5 c5 ]2 L( J" V3 b8 R void Test(void) B' o% D7 i' _3 a1 i4 g0 V" ~ {7 R; M# E4 n, L" M* R2 o char *str = NULL; ( Z- I' l0 ]5 lGetMemory(str); 4 F, ^% ?$ ~4 {! _: D9 n strcpy(str, "hello world");( V- L8 l* y; f" G- ~ b printf(str); # {- p0 Z' u Q2 @) i8 {} ; h$ _! [+ a) v2 i请问运行Test函数会有什么样的结果? & i2 a. J z( S# [% L9 s6 s答:错误,str没有正确指向申请的内存地址 8 F. l+ f" U& MVoid GetMemory2(char **p, int num)& O6 v* k! y1 |& O, P {7 s1 @8 T: D( k- s, t *p = (char *)malloc(num);3 w/ z+ N2 N4 w }: z' d8 p6 w# X) u# L void Test(void)# d* p& a/ V4 K3 A8 X( V$ @$ G. L { " H) j% x9 I$ ?5 U, t: dchar *str = NULL;! f& G1 ]8 N+ @6 _$ H6 O: b GetMemory(&str, 100);+ m5 q+ O/ _/ V5 A# |; }+ A. ? strcpy(str, "hello"); [5 p3 R- ^6 U% |$ A- j" zprintf(str); # O# Z$ z& x }7 G4 D}& s' E; J5 i, b0 m 请问运行Test函数会有什么样的结果?3 ]1 X7 T ^ d0 f 答:正确执行,打印出“Hello”8 H- ^" }5 ?; X6 U char *GetMemory(void)0 M+ h" |3 ^8 W# B; k# ?, L) _6 k" q { $ G& B3 x& @2 x7 z; m char p[] = "hello world";" Q9 B7 K/ f; _% e return p;) E3 J. {- J1 L" r5 e }) {: J# }; t* i; p4 c2 L void Test(void) ( P+ Q0 q! Q; n' \{" ~7 x$ S+ T8 n" T3 ^ char *str = NULL; 9 y7 C3 z3 n2 q; n1 jstr = GetMemory();8 C1 g& K3 ]& @/ A% H. h h printf(str); 9 g$ ^, [# G, _3 K} + u2 U. g0 l0 G" ~% M请问运行Test函数会有什么样的结果?/ x. ^' S6 h8 Y3 p2 y5 P! g 答:错误,str指向的内存地址已经被系统释放) |8 |' ?' h) u3 M! e1 Z6 b void Test(void) 3 f/ L. E7 \$ X4 [$ O5 i{ 7 z. c% a: F4 J. c/ T! W' u7 pchar *str = (char *) malloc(100);, E8 v8 c& R, p$ Y8 E' ~ strcpy(str, “hello”); ; f/ ]) G+ _; o free(str); / e; ?% d" R5 e1 ]4 Z if(str != NULL) - {6 q% o: g: {6 F6 o9 Z+ B. [) o {4 B+ f: Q7 M: @0 m- K. q strcpy(str, “world”); ; M" Q+ z; F/ S% j! ^printf(str); $ B. |, _, H4 c( o3 M" n: D" ]% {}: l- R1 n% e+ r- Y0 d }6 a* Q& ? K( [3 Y5 _9 `- m 请问运行Test函数会有什么样的结果?" U6 b9 |) R9 s* L' W3 ]% M 答:错误,free函数不负责将str置0,故strcpy无法正确工作 * c8 c8 w9 X3 j- T1 R% C2 n( _' Y* v. D( d6 B" ~: n- \& U 五、编写strcpy函数(10分)0 x' n3 ]6 C$ i2 p' C- J 已知strcpy函数的原型是- x% q: w" L" o$ M }/ l char *strcpy(char *strDest, const char *strSrc); 6 r. e" ^$ |2 W其中strDest是目的字符串,strSrc是源字符串。 * O" o9 O) o! o8 @: V3 j, \" L4 P5 r(1)不调用C++/C的字符串库函数,请编写函数 strcpy 9 n! q0 b$ p" c. B! k& g' vchar *strcpy(char *strDest, const char *strSrc) p R) a; ^# j1 z/ Q { $ w* \, m& ]4 }4 n( x if(strDest == NULL || strSrc == NULL) return 0; 1 G/ H! O; L4 Z0 i for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);* K" J5 o3 r: |) X; r# ?5 ] return strDest;# p0 ?( m. n( p* e9 n, } }' A; x% D0 Y- X! G 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?2 O; m1 }8 N( t# t 这个倒真不知道,大概是利于编程 ) I6 O- t' d. b: N5 O7 l- q六、编写类String的构造函数、析构函数和赋值函数(25分)$ n5 _( ]6 C. E3 `5 C 已知类String的原型为:- M: M& A% m+ ^( h4 a* L$ v class String . r- L' A: P0 z: x0 O0 X( N# N{/ i+ U: v0 I; ]3 A3 m' _, U public: ! n/ K0 L) B) \; e' h String(const char *str = NULL) // 普通构造函数 / E4 @% ]- t. V{* i e; v) d% T* q if(str==NULL){# y) V! x) F6 P+ d( r) U) ^/ R( W m_data = new char[1];! J5 G: a2 @8 P* M! s! p m_data[0] = 0; 7 H4 K+ l1 x0 e) W+ D- e% _- z, C } - T* F0 {" o! E8 ]/ U else ) J" ?6 Y, ]2 @ { 3 R7 @$ {3 l! n; K/ [# Y9 t% ^& z m_data = new char[strlen(str) + 1]; $ C8 F( U0 u/ \( _9 H/ D# q strcpy(m_data,str);& }4 A* x, v( }2 d }3 N! u; o5 `' a7 W- i }8 I) z1 O- ~( u3 Z String(const String &other) // 拷贝构造函数% X, Q1 W; N- l( c) n { " X6 p/ y" v9 G6 H0 M) Q' P *this = other; - U0 n( ^8 z0 h0 l" x3 x" S} " Y& ?3 U6 S ~7 C# x ~ String(void) // 析构函数 : M- K- Z1 {, U8 A9 G5 ^; K' F: Q{ ( X7 s( ~5 \7 X+ Z! ^) ] delete [] m_data; 5 I4 R8 ^: I& @* W% M; r: w} 0 x6 K a& M. N8 v) q String & operate =(const String &other) // 赋值函数( t( `; u0 P+ H9 v5 `1 H$ j {1 G2 }+ T* B2 k m_data = new char[strlen(other.m_data) + 1]; 5 H3 O7 N: _% k% E; x strcpy(m_data,str);4 e( s/ {7 u6 G, Y/ V return *this;8 T/ G _8 v5 d* T' B( S1 ^( ` } - i6 w# Y' }5 o/ t6 a% P* C private: 7 B( ^+ ]7 k& u4 Z8 d' ? char *m_data; // 用于保存字符串 8 g, J4 _: G' @; G3 ?4 l( s};8 G$ z& z* B' \/ x; b1 U+ U i" A 请编写String的上述4个函数。 ! y q% _2 C5 g0 A& J4 L9 F
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    3 L- I( B; n6 i9 P0 G! D; p/ n
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?& r9 [& I! f. j/ Y 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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